하나씩 차근차근

이번 포스트는 파일과 디렉토리의 권한설정에 대한 내용입니다.

 

파일과 디렉토리의 권한

ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-r-- 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

ls -l을 입력하면 맨 앞부분에 -rw-rw-r-- 와 같은 출력을 볼 수 있습니다.

맨 앞부분의 -는 파일과 디렉토리를 구분하는 문자로 -는 파일 / d는 디렉토리를 뜻합니다.
다음 문자부터 3개씩 각각 소유자 / 그룹 / 그 외 사용자에 대한 권한을 나타냅니다.
  • r : 파일에 저장된 데이터를 읽기
  • w : 파일에 데이터를 쓰기
  • x : 파일을 실행

 

chmod

파일과 디렉토리에 권한을 주는 명령어로 권한을 주는 방법에는 2가지가 있습니다.

 

8진수를 사용한 권한설정

8진수를 사용한 권한 설정은 각 권한마다 8진수를 통해 권한을 부여하는 방법입니다.

  • rw- : 6 (r:4, w:2)
  • rw- : 6 (r:4, w:2)
  • r-- : 4 (r:4)

위와 같이 소유자 / 그룹 / 그 외 사용자를 구분하여 8진수로 숫자를 부여하며,
맨 뒤의 문자부터 순서대로 1, 2, 4 순서로 숫자를 부여합니다.

 

특정 파일에 그 외 사용자의 권한에 쓰기(x) 권한을 부여하고 싶다면,
r-x로 설정이 되어야 하며 이를 8진수로 바꾸면 4(r) + 1(x) = 5 가 됩니다.

 

ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-r-- 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt
ubuntu@ip-172-31-12-88:~$ chmod 665 test2.txt
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-r-x 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

chmod 665 test2.txt를 통해 test2.txt의 그 외 사용자 권한에 실행권한을 부여했습니다.

 

직접 권한을 부여하는 방법

각 사용자를 문자로 나타내면 다음과 같습니다.

  • 소유자 : u
  • 그룹 : g
  • 그 외 사용자 : o
  • 모든 사용자 : a

위 문자를 통해 다음과 같이 직접 권한을 부여할 수 있습니다.

chmod (사용자) + (읽기, 쓰기, 실행) 파일
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-r-x 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt
ubuntu@ip-172-31-12-88:~$ chmod o+w test2.txt
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-rwx 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

반대로 chmod o-w test2.txt를 입력하게 되면 test2.txt의 그 외 사용자에 대한 쓰기 권한이 취소됩니다.

ubuntu@ip-172-31-12-88:~$ chmod o-x test2.txt
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rw-rw-rw- 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

또한, a를 통해 모든 사용자에 대한 권한을 부여할 수 있습니다.

ubuntu@ip-172-31-12-88:~$ chmod a+x test2.txt
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rwxrwxrwx 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

 

chown

chown 명령어는 파일이나 디렉토리의 소유자와 그룹을 변경하는 명령어

chown (소유자):(그룹) 파일

위와 같이 chown 다음에 소유자:그룹을 입력해서 파일의 소유자와 그룹을 변경합니다.

ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rwxrwxrwx 1 ubuntu ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt
ubuntu@ip-172-31-12-88:~$ sudo chown root:ubuntu test2.txt
ubuntu@ip-172-31-12-88:~$ ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu    0 Dec 29 05:20 c.txt
-rw-rw-r-- 1 ubuntu ubuntu    6 Dec 29 05:27 home
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 29 04:56 test
-rwxrwxrwx 1 root   ubuntu   17 Dec 28 08:46 test2.txt
-rw-r--rw- 1 root   root     19 Dec 28 08:44 text1.txt

위 예시에서 test2.txt 의 소유자를 ubuntu 에서 root 로 변경했습니다.

이때, sudo 를 사용해 root 권한을 사용했습니다.

 

profile

하나씩 차근차근

@jeehwan_lee

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!