사용권한과 소유자에 대한 이해와, 사용권한을 변경하는 방법에 대해 알아보자.
>mkdir linux ->linux라는 이름의 폴더생성
>nano helloworld.js ->helloworld라는 이름의 JavaScript 파일 생성
console.log("Hello World!") ->helloworld 파일의 내용
*작성 후 ctrl+x , y , Enter를 눌러 저장한다.
>ls -l ->현재 위치의 내용물을 출력(list)
-rw-r--r-- 1 "username" staff 29 4 12 17:44 helloworld.js
drwxr-xr-x 2 "usrename" staff 64 4 12 17:43 linux
*위와 같은 내용이 출력되는 것을 확인 할 수 있다.
파일 helloworld.js는-rw-r--r--
이라고 출력되었고, 폴더 linux는 drwxr-xr-x
라고 출력되었다.
이 표현의 시작인 -
와 d
는 각각 not directory
와 directory
를 나타낸다.
폴더이면 d
로, 파일이면 -
로 시작한다.
이어지는 r
,w
,x
는 각각 read permission
,write permission
, execute permission
으로 읽기,쓰기,실행 권한을 나타낸다.
3번에 걸쳐 나타나는 이유는 사용자,그룹,나머지 에 대한 권한을 표시하기 위함이다.
파일 helloworld.js 의 경우
사용자
: r,w ➡️ 읽기,쓰기
그룹
: r ➡️ 읽기
나머지
: r ➡️ 읽기
와 같은 권한을 가지고 있다.
명령어 chmod
폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다. OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다. 만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한을 변경할 수 있다.
명령어 chmod 로 권한을 변경하는 방식은 두 가지가 있다.
[Symbolic Method]
Symbolic method는 | 액세스 클래스, 연산자, | 액세스 타입으로 구분합니다. |
---|---|---|
u (user) | + (add access) | r (read) |
g (group) | - (remove access) | w (write) |
o (other) | = (set exact access) | x (execute) |
a (all: u, g, and o) |
명령어 chmod 뒤에 변경할 권한을 입력한다. 액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고, 연산자와 액세스 타입을 순서대로 입력한다. 다음은 명령어 chmod 를 입력한 예시와 결과다.
chmod g-r filename # removes read permission from group
chmod g+r filename # adds read permission to group
chmod g-w filename # removes write permission from group
chmod g+w filename # adds write permission to group
chmod g-x filename # removes execute permission from group
chmod g+x filename # adds execute permission to group
chmod o-r filename # removes read permission from other
chmod o+r filename # adds read permission to other
chmod o-w filename # removes write permission from other
chmod o+w filename # adds write permission to other
chmod o-x filename # removes execute permission from other
chmod o+x filename # adds execute permission to other
chmod u+x filename # adds execute permission to user
chmod a=rw helloworld.js # -rw-rw-rw-
chmod u= helloworld.js # ----rw-rw-
chmod a+rx helloworld.js # -r-xrwxrwx
chmod go-wx helloworld.js # -r-xr--r--
chmod a= helloworld.js # ----------
chmod u+rwx helloworld.js # -rwx------
액세스 클래스와 연산자, 액세스 타입을 모두 기억해야만 Symbolic method를 이용해 권한을 변경할 수 있다.
[Absolute Form]
Absolute form은 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기할 수 있다.
Permission | Number |
---|---|
Read(r) | 4 |
Write(w) | 2 |
Execute(x) | 1 |
만약, user는 rwx 를, group과 other은 r-- 로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용한다.
# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 helloworld.js # -rwxr--r--