[Linux/리눅스] 05. 파일 퍼미션 명령어 , 디렉토리 퍼미션 명령어 , ACL
파일/디렉토리 퍼미션 변경
심볼릭 방법
8진법 숫자 방법
chmod [-R] (#1)(#2)(#3)(#4) file|dir
- 각 # 은 r = 4 , w =2 , x = 1 의 합계이다.
- #1 은 0 이다.
- #2 는 사용자에 대한 퍼미션
- #3 은 그룹에 대한 퍼미션
- #4 는 기타에 대한 퍼미션
- -R 옵션을 사용하여 그 하위 파일/디렉토리에게 퍼미션을 부여할 수 있다.
예 : -rwxr-x--- Videos 퍼미션의 경우
- 사용자는 rwx 이므로 4 + 2 + 1 = 7 이다.
- 그룹의 경우 r-x 이므로 4 + 0 + 1 = 5 이다.
- 기타의 경우 --- 이므로 0 이다.
- 최종적으로 chmod 750 Videos 라는 결과가 된다.
~]# chmod go-rw exampleFile1 |
~]# chmod a+x exampleFile2 |
~]# chmod 750 exampleFile3 |
파일/디렉토리 (사용자|그룹) 소유권 변경
~]# chown A file1 |
예 2 : dir1 디렉토리와 그 하위 모든 파일/디렉토리를 A 사용자 에게 소유권을 부여한다.
~]# chown -R A dir1 |
예 3 : dir2 디렉토리의 소유권을 B 그룹에게 부여한다.
~]# chown :B dir2 |
예 4 : dir3 디렉토리의 소유권을 A 사용자, B 그룹에게 부여한다.
~]# chown A:B dir3 |
- root 만이 파일의 소유권을 변경할 수 있다.
- 그룹 소유권은 해당 파일의 소유자가 설정할 수 있다.
- root 가 아닌 사용자는 자신이 속한 그룹에 대해서만 설정 할 수 있다.
기본 권한 및 파일 액세스 관리
특수 권한
setuid/setgid 권한은 실행한 사용자가 아니라 파일의 user/group으로 실행됨을 의미한다.
sticky bit 는 파일 삭제에 대한 특수한 제한을 설정한다.
- 파일 소유자와 root 만이 디렉토리 내의 파일을 제거할 수 있다.
setuid = 4 , setgid = 2, stickty = 1
- u+s(setuid)
- 파일을 소유한 사용자의 권한으로 실행한다.
~]# chmod u+s file -> ~]# chmod 4770 file |
- g+s(setgid)
- 파일을 소유한 그룹 권한으로 실행한다.
- 디렉토리안에 새로운 파일에는 디렉토리의 그룹 소유자가 설정된다.
- o+t(sticky)
- 디렉토리에 대한 쓰기 퍼미션을 가진 사용자는 자신이 소유한 파일만을 제거할 수 있다.
POSIX ACL 액세스 제어 목록
- ACL 에서는 파일에 대하여 더 자세한 권한을 할당할 수 있다.
- 표준 파일 소유자, 그룹 소유자, 기타 파일 등등
- 파일 소유자는 개별 파일 / 디렉토리에 ACL을 설정할 수 있다.
- 파일 시스템 마운트 옵션
- 파일 시스템은 ACL 지원을 활성화야여 마운트 하여야 한다.
- XFS 파일 시스템에는 기본적으로 ACL 이 포함되어 있다.
ACL 퍼미션 자세히 보기
- getfacl filename
파일 ACL 보기
- getfacl /경로
디렉토리 ACL 보기
ACL 파일 권한 변경
- setfacl 명령을 통하여 파일 / 디렉토리에서 표준 ACL 을 추가, 수정, 제거한다.
- setfacl 명령은 chmod 와 동일한 기능을 한다.
- setfacl -m 명령을 통하여 추가 또는 수정한다.
예 1 : user ACL 추가,수정 하는 방법
~]# setfacl -m u:username:rX file |
예 2 : group ACL 추가,수정 하는 방법
~]# setfacl -m g:groupname:rw file |
예 3 : other ACL 추가,수정 하는 방법
~]# setfacl -m o::- file |
ACL 삭제
~]# setfacl -x u:username,g:groupname file |
기본 ACL 파일 권한 제어
~]# setfacl -m d:u:username:rx dir |
기본 ACL 삭제
~]# setfacl -x d:u:username dir |
기본 ACL 모두 삭제
- setfacl -k /dir
디렉토리의 모든 ACL 삭제
- setfacl -b /dir