-rwxrw-r--. 1 test root 12 2020-12-29 19:12 testfile
rwx 소유자(owner) 파일의 소유자는 'testfile'에 대해서 읽기/쓰기/실행이 가능하다.
rw- 그룹(group) 같은 그룹의 사용자는 'testfile'에 대해서 읽기/쓰기만 가능하다.
r-- 다른사용자(other) 다른 사용자는 'testfile'에 대해서 읽기만 가능하다.
[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
[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
위의 거랑 거의 비슷함..
파일 및 디렉토리 권한을 변경하는 명령어이다.
파일 및 디렉토리 권한을 갖고 있는 소유자만 사용 가능함, 단 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'를 사용하게 되면 그룹 또는 다른 사용자들의 쓰기 권한을 삭제할 수 있다.
root 계정의 umask 기본값은 '0022'이다.
일반 계정의 umask 기본값은 '0002'이다.
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 2 월 7 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' 파일에 변경된 패스워드를 설정(쓰기)할 수 있다.
[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 는 디렉토리 기본 퍼미션이 '777'인 경우 사용할 수 있다
[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