Linux Permission

이동명·2023년 11월 2일
0

Cent OS

목록 보기
6/13
post-thumbnail

퍼미션(Permission)

  • 퍼미션이란 리눅스 사용자들이 디렉토리 및 파일에 대한 읽기/쓰기/실행/거부에 관련된 권한을 의미한다.

읽기 권한

쓰기 권한

실행 권한

퍼미션 표기 방식

-rwxrw-r--. 1 test root 12 2020-12-29 19:12 testfile

rwx 소유자(owner) 파일의 소유자는 'testfile'에 대해서 읽기/쓰기/실행이 가능하다.
rw- 그룹(group) 같은 그룹의 사용자는 'testfile'에 대해서 읽기/쓰기만 가능하다.
r-- 다른사용자(other) 다른 사용자는 'testfile'에 대해서 읽기만 가능하다.

'chown' 명령어

  • 파일의 소유자 및 그룹을 변경할 때 사용하는 명령어이다.
[root@Client1 /root/test]# touch file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 root root 0 2020-12-29 19:22 file1

[root@Client1 /root/test]# chown user1 file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 user1 root 0 2020-12-29 19:22 file1

[root@Client1 /root/test]# chown .user1 file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 user1 user1 0 2020-12-29 19:22 file1

[root@Client1 /root/test]# chown user2.user2 file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 user2 user2 0 2020-12-29 19:22 file1

[root@Client1 /root/test]# chown root.root file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 root root 0 2020-12-29 19:22 file1

현재 및 하위 디렉토리와 하위 파일들의 소유자 및 그룹을 한번에 변경할 경우

chown -R user1.user1 dir1

'chgrp' 명령어

  • 파일의 그룹을 변경할 때 사용하는 명령어이다.
[root@Client1 /root/test]# touch file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r-- 1 root root 0 2022-03-25 20:02 file1

[root@Client1 /root/test]# chgrp user1 file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r-- 1 root user1 0 2022-03-25 20:02 file1
  • 현재 및 하위 디렉토리와 하위 파일들의 그룹을 한번에 변경할 경우
[root@Client1 /root/test]# mkdir -p dir1/dir2/dir3
[root@Client1 /root/test]# touch dir1/file{1,2}
[root@Client1 /root/test]# ls -ld dir1
drwxr-xr-x 3 root root 44 2022-03-25 20:04 dir1

위의 거랑 거의 비슷함..

'chmod' 명령어

  • 파일 및 디렉토리 권한을 변경하는 명령어이다.

  • 파일 및 디렉토리 권한을 갖고 있는 소유자만 사용 가능함, 단 root 계정은 사용 가능하다.

  • 권한 설정 모드는 심볼릭 모드와 수치 모드가 있다.

심볼릭 모드

[root@Client1 /root/test]# touch file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 root root 0 2020-12-29 20:08 file1

[root@Client1 /root/test]# chmod u+x file1
[root@Client1 /root/test]# ls -l file1
-rwxr--r--. 1 root root 0 2020-12-29 20:08 file1

[root@Client1 /root/test]# chmod g+w file1
[root@Client1 /root/test]# ls -l
합계 0
-rwxrw-r--. 1 root root 0 2020-12-29 20:08 file1

[root@Client1 /root/test]# chmod u-x,g-w file1
[root@Client1 /root/test]# ls -l
합계 0
-rw-r--r--. 1 root root 0 2020-12-29 20:08 file1

[root@Client1 /root/test]# chmod u-w,g-r,o-r file1
[root@Client1 /root/test]# ls -l
합계 0
-r--------. 1 root root 0 2020-12-29 20:08 file1

[root@Client1 /root/test]# chmod a=rwx file1
[root@Client1 /root/test]# ls -l
합계 0
-rwxrwxrwx. 1 root root 0 2020-12-29 20:08 file1

수치 모드

[root@Client1 /root/test]# touch file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 root root 0 2020-12-29 20:43 file1

[root@Client1 /root/test]# chmod 744 file1
[root@Client1 /root/test]# ls -l file1
-rwxr--r--. 1 root root 0 2020-12-29 20:43 file1

[root@Client1 /root/test]# chmod 754 file1
[root@Client1 /root/test]# ls -l file1
-rwxr-xr--. 1 root root 0 2020-12-29 20:43 file1

파일 및 디렉토리 퍼미션 이해

파일 퍼미션

디렉토리 퍼미션

파일 및 디렉토리 수정 작업에 필요한 권한

'umask'

  • 파일 및 디렉토리 생성시 기본 퍼미션 값을 조정하는 기능을 수행한다.

  • 'umask'를 사용하게 되면 그룹 또는 다른 사용자들의 쓰기 권한을 삭제할 수 있다.

  • root 계정의 umask 기본값은 '0022'이다.

  • 일반 계정의 umask 기본값은 '0002'이다.

SetUID/SetGID

  • SetUID 가 설정된 파일을 실행하면, 그 파일의 소유자 권한을 할당해주는 특수 권한이다.

  • 만약, 'A'라는 실행 파일의 소유자가 root 이고 SetUID 가 설정되어 있다면, user1 계정이 'A' 파일을 실행하면 root 권한을 부여받게 된다.

  • root 계정으로 'usermod' 명령어를 이용하면 계정에 대한 홈 디렉토리 및 쉘 유형을 변경할 수 있다.

[root@Client1 /root/test]# ls -l /usr/sbin/usermod
-rwxr-xr-x. 1 root root 147504 2021-12-10 14:08 /usr/sbin/usermod
[root@Client1 /root/test]# cat /etc/passwd | grep user1
user1:x:1001:1001::/home/user1:/bin/bash
[root@Client1 /root/test]# usermod -s /bin/sh user1
  • 'usermod' 명령어로 설정한 쉘 내용은 '/etc/passwd' 파일에 설정(쓰기)된다

  • 만약, 'usermod' 실행 파일에 SetUID 를 설정하면 root 계정의 소유권을 일반 계정에게 부여해주기 때문에 일반 계정에서도 'usermod' 명령어로 변경한 내용을 '/etc/passwd' 파일에 설정(쓰기)할 수 있다.

[root@Client1 /root/test]# chmod u+s /usr/sbin/usermod
[root@Client1 /root/test]# ls -l /usr/sbin/usermod
-rwsr-xr-x. 1 root root 147504 2021-12-10 14:08 /usr/sbin/usermod

[root@Client1 /root/test]# su - user1

[user1@Client1 /home/user1]$
[user1@Client1 /home/user1]$ ls -l /etc/passwd
-rw-r--r--. 1 root root 2646 27 13:20 /etc/passwd

[user1@Client1 /home/user1]$ usermod -s /bin/bash user1
sss_cache must be run as root
sss_cache must be run as root

[user1@Client1 /home/user1]$ cat /etc/passwd | grep user1
user1:x:1001:1001::/home/user1:/bin/bash
  • 'setuid'가 설정된 대표적인 명령 파일에는 'chsh', 'passwd' 파일이 있다.

  • 일반 계정에서 'chsh' 명령어을 이용하여 쉘을 변경하면 setuid 특수 권한에 의해서 root 권한을 할당 받아 '/etc/passwd' 파일에 변경된 쉘을 설정(쓰기)할 수 있다.

  • 일반 계정에서 'passwd' 명령어을 이용하여 패스워드를 변경하면 setuid 특수 권한에 의해서 root 권한을 할당 받아 '/etc/shadow' 파일에 변경된 패스워드를 설정(쓰기)할 수 있다.

SetUID/SetGID 설정 방법

[root@Client1 /root/test]# touch file1
[root@Client1 /root/test]# ls -l file1
-rw-r--r--. 1 root root 0 2020-12-29 21:37 file1

[root@Client1 /root/test]# chmod 4755 file1 // chmod u+s file1
[root@Client1 /root/test]# ls -l file1
-rwsr-xr-x. 1 root root 0 2020-12-29 21:37 file1

[root@Client1 /root/test]# chmod 4655 file1 // chmod u-x file1
[root@Client1 /root/test]# ls -l file1 // 소유자에 실행 권한이 없으면 대문자 S 로 출력됨
-rwSr-xr-x. 1 root root 0 2020-12-29 21:37 file1

[root@Client1 /root/test]# chmod 2755 file1 // chmod g+s file1
[root@Client1 /root/test]# ls -l file1
-rwxr-sr-x. 1 root root 0 2020-12-29 21:37 file1

[root@Client1 /root/test]# chmod 2765 file1 // chmod g-x file1
[root@Client1 /root/test]# ls -l file1 // 그룹에 실행 권한이 없으면 대문자 S 로 출력됨
-rwxrwSr-x. 1 root root 0 2020-12-29 21:37 file1

Sticky bit

  • 디렉토리 쓰기 권한이 있는 경우, 디렉토리 안에 있는 파일 및 디렉토리를 수정/삭제할 수 있다.

  • 만약, 특정 디렉토리를 공용 디렉토리 목적으로 사용할 경우, 사용자들에 의해서 파일을 생성할 수 있으나, 일을 수정/삭제할 수 없도록 제한 할 경우 사용하는 특수 권한이다.

  • Sticky bit 는 디렉토리 기본 퍼미션이 '777'인 경우 사용할 수 있다

Sticky bit 설정 방법

[root@Client1 /root]# cd
[root@Client1 /root]# mkdir test
[root@Client1 /root]# cd test
[root@Client1 /root/test]# mkdir dir1
[root@Client1 /root/test]# ls -ld dir1
drwxr-xr-x. 2 root root 4096 2020-12-31 19:30 dir1

[root@Client1 /root/test]# chmod 1777 dir1
[root@Client1 /root/test]# ls -ld dir1
drwxrwxrwt. 2 root root 4096 2020-12-31 19:30 dir1
[root@Client1 /root/test]# chmod 1776 dir1
[root@Client1 /root/test]# ls -ld dir1 // 다른 사용자에 실행 권한이 없으면 대문자 S 로 출력됨
drwxrwxrwT. 2 root root 4096 2020-12-31 19:30 dir1

[root@Client1 /root/test]# chmod 1001 dir1
[root@Client1 /root/test]# ls -ld dir1
d--------t. 2 root root 4096 2020-12-31 19:30 dir1

[root@Client1 /root/test]# chmod 1000 dir1
[root@Client1 /root/test]# ls -ld dir1
d--------T. 2 root root 4096 2020-12-31 19:30 dir1

Sticky bit 이해

  • Sticky bit 가 설정된 대표적인 디렉토리는 /tmp 가 있다.
profile
Web Developer

0개의 댓글