리눅스(Linux)

[Linux] chmod

happyso 2023. 7. 29. 00:12

chmod

리눅스(Linux)는 하나의 컴퓨터를 여러 사람이 사용할 수 있는 멀티유저 운영체제(OS)이기 때문에 권한 관리가 매우 중요하다.

리눅스 파일, 디렉토리 권한 확인

ls -l 명령을 사용하여, 권한을 확인할 수 있다.

snchoi@snchoi:/usr/local/bin$ ls -al
합계 354452
drwxr-xr-x  2 root root      4096  6월  9 15:39 .
drwxr-xr-x 11 root root      4096  5월  9 11:39 ..
-r-xr-xr-x  1 root root 140376278  5월  9 18:52 argocd
-rwxr-xr-x  1 root root  12737304  2월 13 15:00 docker-compose
-rwxr-xr-x  1 root root  60450008  6월  9 15:39 gitlab-runner
-rwxr-xr-x  1 root root  74684776  2월 13 14:10 kubectl
-rwxr-xr-x  1 root root  74684776  2월 13 14:10 oc

출력 결과는 각각 파일종류 및 권한, 링크 수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름을 나타낸다.

파일 권한은 ‘-rwxr-xr-x’으로 확인할 수 있고, 소유권은 ‘root root’으로 확인할 수 있다.

앞에있는 root는 사용자를 나타내고, 뒤에 있는 root는 그룹을 나타낸다. (리눅스에서는 기본적으로 사용자와 동일한 이름의 그룹을 만든다.)

-    rwx    r-x    r-x

위 정보는 4부분으로 나눌 수 있다.

  1. - : 파일(-), 디렉토리(d)을 구분
  2. rwx : 사용자 권한
  3. r-x : 그룹 권한
  4. r-x : 다른 사용자 권한

rwx는 각각 읽기(read), 쓰기(write), 실행(execute) 권한을 나타낸다.

(디렉토리의 경우 실행권한이 있어야 디렉토리에 들어갈 수 있다.)

파일 권한 변경

개별적으로 파일 권한 변경하기

# 그룹에 쓰기 권한을 준다.
$ chmod g+w test.c

# 다른 사용자에게 읽기 권한을 빼앗는다.
$ chmod o-r test.c

# 사용자, 그룹, 다른사용자에게 모두 실행권한을 추가한다.
$ chmod +x test.c

# 사용자에게 실행권한을 부여한다.
$ chmod u+x test.c

# 그룹에 모든 권한을 준다.
$ chmod g+rwx test.c

# 그룹과 다른사용자에게 읽기 권한을 준다.
$ chmod go+r test.c

숫자로 한번에 권한 변경하기

숫자를 활용하여 사용자, 그룹, 다른 사용자의 권한을 한번에 지정할 수 있다.

r: 4 / w: 2 / x: 1

# 사용자, 그룹, 다른사용자의 모든 권한을 제거한다.
$ chmod 000 test.c

# 사용자, 그룹, 다른사용자의 모든 권한을 추가한다.
$ chmod 777 test.c

# 사용자에게만 모든 권한을 준다.
$ chmod 700 test.c

# 사용자에게는 모든 권한을 주고, 그룹/다른사용자에게는 읽기 권한만 준다.
$ chmod 744 test.c