리눅스는 파일과 디렉터리에 대한 소유권(Ownership)과 권한(Permission) 시스템을 사용하여 파일 및 디렉터리에 대한 접근을 제어한다.
파일과 디렉터리는 소유자(Owner)와 소유 그룹(Group)으로 지정된다.
소유자
파일과 디렉터리를 생성한 사용자를 나타낸다.
파일과 디렉터리에 대한 수정, 읽기 및 실행 권한을 가진다.
소유 그룹
여러 사용자를 그룹으로 묶어 소유 그룹을 형성할 수 있다.
파일과 디렉터리에 대한 일부 권한을 공유하는 사용자의 그룹이다.
파일과 디렉터리에 대한 접근 권한은 소유자, 소유 그룹 및 기타 사용자에 대해 정의된다.
권한은 주요 3가지 카테고리로 나뉜다.
읽기 권한(Read)
파일 내용을 읽거나 디렉터리 내용을 나열할 수 있는 권한이다.
쓰기 권한(Write)
파일 내용을 변경하거나 디렉터리 내용을 변경할 수 있는 권한이다.
파일을 생성, 수정 및 삭제가 가능하다.
실행 권한(Execute)
파일이나 디렉터리를 실행할 수 있는 권한이다.
파일에 실행 권한이 있으면 해당 파일을 실행할 수 있고,
디렉터리에 실행 권한이 있으면 해당 디렉터리로 이동이 가능하다.
소유자
# chown brook test-file.txt
testfile.txt 파일의 소유자를 brook 으로 변경한다.
소유 그룹
# chgrp devops test-file.txt
testfile.txt 파일의 소유 그룹을 devops 로 변경한다.
소유자 및 소유 그룹
# chown pattie:designer -R test-directory
test-directory 및 하위 데이터(-R 옵션)의 소유자, 소유 그룹을 pattie, designer 로 변경한다.
권한 - 문자를 이용하는 방법
# chmod u+rwx,g+r,o-rwx security-file
security-file 의 권한을 다음과 같이 변경한다.
유저: read, write, execute
그룹: read
그 외: 없음
권한 - 숫자를 이용하는 방법
2진수를 활용하여 권한을 변경할 수 있다.
4: read
2: write
1: execute
# chmod 764 security-file
security-file 의 권한을 다음과 같이 변경한다.
유저: read, write, execute
그룹: read, write
그 외: read
리눅스는 3가지 권한 비트를 사용하여 파일과 디렉터리의 동작을 제어할 수 있다.
# chmod u+s file
# ls -l
-rwsr-xr-x 1 owner usergroup 12345 Aug 8 10:00 file
# chmod g+s file
# ls -l
-rwxr-sr-x 1 owner usergroup 12345 Aug 8 10:00 file
# chmod +t file
# ls -l
drwxrwxrwt 1 owner usergroup 12345 Aug 8 10:00 file