권한 및 그룹 설정
소유권과 관련된 명령어
- 소유권 : 임의의 파일 또는 디렉터리에 대해 사용자와 그룹들의 소유 권한을 나타낸 것
- 그룹 : 사용자들의 시스템 운영 특성에 따라 묶어놓은 것
▶ 같은 그룹에 속한 사용자들은 파일 또는 디렉터리에 대해 동일한 소유권과 작업 권한을 가짐
※ -R 옵션 : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경
1. 명령어 chown
- 파일과 디렉터리의 사용자 소유권과 그룹 소유권을 변경
- 형식) chown [옵션] 소유자[:그룹명] 파일명
- 그룹의 소유권을 변경하려면? ▷ ex. chown :root file.txt
- 소유자와 그룹의 소유권을 모두 변경하려면? ▷ ex. chown js:js file.txt
2. 명령어 chgrp
- 파일이나 디렉터리의 그룹 소유권을 변경 (change group의 줄임말)
- chown 명령어와 달리 chgrp는 그룹 소유권만을 변경
- 형식) chgrp [옵션] 그룹명 파일명
허가권과 관련된 명령어
- 명령어 'ls -l' 으로 파일 유형과 허가권을 알 수 있다.
- - rw-rw-r-- 1 youngjin youngjin 53 2017-09-16 18:49 TST
- 파일 허가권의 첫 번째 자리는 파일 유형을 기호로 정의하며 파일은 일반 파일, 디렉터리 파일, 특수 파일로 나뉜다.
기호 | 파일 유형 |
- | 일반 파일 |
d | 디렉터리 파일 |
b | 블록 단위로 읽고 쓰는 블록 장치 특수 파일 |
c | 문자 단위로 읽고 쓰는 문자 장치 특수 파일 |
l | 기호적 링크로 바로가기 아이콘 역할 수행 |
p | 파이프 |
s | 소캣 |
- 파일 허가권의 두 번째 자리에서 열 번째 자리는 파일 접근 권한을 정의하며 리눅스는 사용자별로 파일 권한을 부여한다.
- 파일 사용자는 파일 소유자, 그룹 소속자, 기타 사용자로 구분한다.
- 파일 권한은 읽기, 쓰기, 실행이 있다.
- 접근 제한 표시는 하이픈 (-)으로 나타낸다.
- 사용자별 권한은 기호 모드, 8진수 숫자 모드로 표시한다.
▶ 사용자
- u : 소유자
- g : 그룹
- o : 기타 사용자
- a : 모든 사용자
▶ 연산자
- + : 허가권 부여
- - : 허가권 제거
- = : 특정 사용자에게 허가권 지정 (기존의 속성 값은 사라짐)
▶ 권한
- r : 읽기
- w : 쓰기
- x : 실행
1. 명령어 chmod
- 파일이나 디렉터리의 접근 허가권을 변경
- '숫자 모드' 혹은 '기호 모드'로 권한 변경
- 형식) chmod [옵션] 파일명
- chmod 666 TST.txt : TST.txt 파일의 소유자, 그룹, 기타 사용자에게 읽기와 쓰기 권한을 부여
- chmod -R o=rx Youngjin : Youngjin과 Youngjin 디렉터리에 포함되어 있는 모든 파일들은 기타 사용자에게 읽기와 실행 권한 부여
2. 명령어 umask
- 새로 생성되는 파일이나 디렉터리의 기본 허가권 값 지정
- 파일의 기본 권한은 666, 디렉터리의 기본 권한은 777이다. 명령어 umask는 디폴트 권한 값을 변경
- 파일이나 디렉터리 생성 시 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권으로 설정
- 형식) umask[옵션][값] (옵션 -S : umask 값을 문자로 표시)
- umask 적용 방법
- 허가권 umask 값에 보수를 취한다.
- Umask를 파일(666) 또는 디렉터리(777)의 기본 권한과 AND 연산을 진행한다.
특수 권한
1. SetUID와 SetGID
- 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능
- 프로세스가 사용자보다 높은 수준의 접근을 요구할 때 파일 접근 제한으로 인해 원활한 기능을 제공할 수 없는 문제 해결
- SetUID : 사용자가 사용할 때만 소유자 권한으로 파일을 실행
▷ 프로그램을 실행하는 동안 프로세스는 파일의 소유자와 같은 권한으로 실행
- SetGID : 사용자가 사용할 때만 그룹 권한으로 파일을 실행
▷ 프로그램을 실행하는 동안 프로세스는 파일의 그룹과 같은 권한으로 실행
▷ SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가진다
- 파일 SYN에 SetUID 설정의 예
[root@localhost TST]# ls -l
-rw-r--r--, 1 root root 231 10월 5 12:21 SYN
// SetUID 설정
[root@localhost TST]# chmod 4644 SYN
// 실행 권한이 없으므로 대문자 'S'로 표기됨
[root@localhost TST]# ls -l
-rwSr--r--, 1 root root 231 10월 5 12:21 SYN
// 권한 변경
[root@localhost TST]# chmod 4744 SYN
// 실행 권한을 갖게 되므로 소문자 's'로 표기됨
[root@localhost TST]# ls -l
-rwsr--r--, 1 root root 231 10월 5 12:21 SYN
- 디렉터리 HKHome에 SetGID 설정의 예
[root@localhost TST]# ls -l
-rw-r--r--, 1 root root 6 10월 5 12:47
// SetUID 설정
[root@localhost TST]# chmod 2644 HKHome
// 실행 권한이 없으므로 대문자 'S'로 표기됨
[root@localhost TST]# ls -l
-rwSr--r--, 1 root root 6 10월 5 12:47
// 권한 변경
[root@localhost TST]# chmod 2774 SYN
// 실행 권한을 갖게 되므로 소문자 's'로 표기됨
[root@localhost TST]# ls -l
-rwsr--r--, 1 root root 6 10월 5 12:47
2. Sticky bit
- 일반적으로 공용 디렉터리를 사용할 때 sticky bit을 설정하여 사용
- 다른 사용자들의 파일을 보호하기 위한 목적으로 만든 것
▶ 디렉터리 안의 내용은 해당 파일의 소유자나 root 만이 변경 가능하게 하여 공용 디렉터리라도 권한에 제약을 둠
- Sticky bit 의 특징
- 사용자 권한을 지정하기 어려운 프로그램들이 일시적으로 특정 디렉터리에 파일을 생성하고 삭제하도록 이용됨
- 특정 응용 프로그램이 다른 응용 프로그램에서 생성한 파일을 삭제하지 못하는 권한 설정
- sticky bit가 적용된 디렉터리 내에 파일을 생성하는 것은 누구나 가능하지만 삭제는 생성자 본인과 관리자만 가능
- 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 설정
디스크 쿼터
- 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것
- 사용자나 그룹이 가질 수 있는 inode의 수, 사용자나 그룹에 해당된 디스크 블록 수를 제한
- 쿼터는 사용자별, 파일 시스템별로 동작
- 디스크 쿼터 동작 단계 예시
- 파일 /etc/fstab에 디스크 쿼터 관련 설정
- 재마운팅 실행 후 확인
- 마운틴된 쿼터를 끄고 생성된 쿼터 파일 삭제
- 쿼터 데이터베이스 생성
- 사용자별 쿼터 저장
- 쿼터 현재 상황 점검
- 디스크 쿼터 관련 명령어
- quotaoff : 쿼터 서비스를 비활성화
- quotacheck : 파일 시스템의 디스크 사용 상태를 검색
- edquota : 편집기를 이용하여 사용자나 그룹에 디스크 사용량을 할당
- setquota : 편집기가 기반이 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당
[참고자료] 이기적 리눅스 마스터 2급 (권소라 저)