폴더와 파일이 권한으로 폴더인지 파일인지 구분하는 방법에 대해 알아보자.
먼저 practice라는 이름을 가진 폴더와 hello.js라는 파일을 생성하였다.
생성한 후에 ls -l이라는 명령어를 terminal에 입력을 하면 아래와 같은 화면을 볼 수 있을 것이다.
출력된 terminal창의 가장 왼쪽에 글자를 보면, hello.js는 -rw-r--r--로 출력이 되어 있고, practice라는 폴더는 drwxr-xr-x라고 출력 된 것을 볼 수 있다.
출력된 글자의 가장 앞 글자를 보면 -와 d를 확인 할 수 있는데 -는 not directory, d는 directory를 뜻한다. 즉 폴더이면 앞에 d가 붙고 파일이면 -가 붙는다고 보면 된다. 그 뒤에 이어지는 r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다. 이것이 3번에 걸쳐 나타내는 이유는 사용자와 그룹, 나머지에 대한 권한을 표시하기 때문이다. hello.js의 권한을 살펴보면 rw-r--r--으로, 소유자 즉 user는 읽기와 쓰기가 가능하고, 다른 사용자 그룹은 읽기만 가능하다는 의미이다. 폴더 practice의 권한을 보면 rwx-r-x-r-x으로, 소유자는 읽기와 쓰기, 실행이 가능하고 다른 사용자 그룹은 읽기와 실행만 가능하다는 의미이다.
chmod라는 명령어를 사용하면 폴더나 파일의 읽기, 쓰기 그리고 실행 권한을 변경 할 수 있다. chmod를 사용하려면 OS에 로그인한 사용자와 폴더나 파일의 소유자가 동일할 경우에만 변경이 가능하다. 만약 OS에 로그인한 사용자와 폴더 그리고 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어인 sudo를 이용해서 폴더나 파일의 권한을 변경할 수 있다.
명령어 chmod로 권한을 변경하는 방법은 두 가지가 있다.
Symbolic method는 액세스 클래스, 연산자, 액세스 타입으로 구분한다.
Access class | Operator | Access Type |
---|---|---|
u (user) | + (add access) | r (read) |
g (group) | - (remove access) | w (write) |
o (other) | = (set exact access) | x (execute) |
a (all: u, g, and 0) |
예시로 practice라는 파일의 소유자 권한에 실행 권한을 추가해주는 명령어는 아래와 같다.
chmod u+x practice
또한, practice라는 파일에 모든 권한에 읽기, 쓰기 권한을 추가하고 싶다면 아래와 같이 명령어를 사용할 수 있다.
chmod a=rw practice
Permission | Number |
---|---|
Read (r) | 4 |
Write (w) | 2 |
Execute (x) | 1 |
예를 들어, user는 rwx로, group과 other는 r--로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력해서 사용한다.
chmod 744 practice.js // -rwxr--r--