[Linux] 소유권 / 허가권 / 특수권한 / 디스크쿼터
🔹 리눅스 시스템의 모든 파일과 디렉터리에는 소유권(Ownership)과 허가권(접근권한, Permission)이 부여된다. 🔹
🐧 소유권(Ownership)
-
임의의 파일 또는 디렉터리에 대해 사용자와 그룹들의 소유 권한을 나타낸 것
-
그룹 : 사용자들의 시스템 운영 특성에 따라 묶어놓은 것
-
같은 그룹 -> 동일한 소유권과 작업 권한을 가짐
-
-
chown
: 파일/디렉터리의 사용자 소유권과 그룹 소유권 변경-
사용자 소유권 변경
#chown [옵션] 소유자 파일명
-
그룹 소유권 변경
#chown [옵션] :그룹명 파일명
-
옵션
-R
: 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경
-
-
chgrp
: 파일/디렉터리의 그룹 소유권 변경#chgrp [옵션] 그룹명 파일명
-
옵션
-R
: 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경
-
chown은 소유자/소유그룹 모두 변경 가능, chgrp은 그룹 소유권만 변경
-
🐧 허가권(Permission)
-
ls -l
명령어로 파일 유형과 허가권을 알 수 있음 -
-
첫 번째 자리는 파일 유형을 기호로 정의
-
파일은 일반 파일, 디렉터리 파일, 특수 파일로 나뉨
-
ls -l /dev
명령어로 특수 파일 확인 가능 -
두 번째 자리 ~ 열 번째 자리는 파일 접근 권한을 정의
-
리눅스는 사용자별로 파일 권한 부여
-
파일 소유자(owner), 그룹 소유자(group), 기타 사용자(others or public)로 파일 사용자를 구분
-
파일 권한 : 읽기 read / 쓰기 write / 실행 execute
-
읽기, 쓰기, 실행의 접근 제한 표시는 하이픈(-)으로 나타냄
-
사용자별 권한은 기호 모드(symbolic mode) 또는 8진수 숫자 모드(numeric mode)로 표시
-
-
파일 유형
기호 파일 유형 - 일반 파일 d 디렉터리 파일 b 블록단위로 읽고 쓰는 블록 장치(하드디스크, CD/DVD 등의 저장 장치) 특수 파일 c 문자 단위로 읽고 쓰는 문자 장치(마우스, 키보드, 프린터 등의 입출력 장치) 특수 파일 l 기호적 링크로 바로가기 아이콘 역할 수행, 연결되어 있는 파일과 실제 파일은 다른 곳에 존재 p 파이프 s 소켓 -
🐧 사용자별 권한
사용자권한 그룹권한 기타사용자권한 기호모드 r w x r w x r w x 8진수숫자모드 4 2 1 4 2 1 4 2 1 - ex) 기호 권한
rw-rw-r--
= 숫자 권한 ‘664’ = 파일 소유자와 그룹 사용자는 파일에 대해 읽고 쓰기가 가능하며 실행 권한은 없음, 그 외 사용자들은 읽기 기능만 가짐
- ex) 기호 권한
-
파일 유형에 따른 권한
일반파일 디렉터리파일 특수파일 읽기(r) 파일 내용 읽기 디렉터리 내 파일 목록 읽기 read()로 파일 읽기 쓰기(w) 파일 수정/삭제 디렉터리 내 파일 생성/삭제 write()로 파일 내용 변경 실행(x) 파일 실행 cd 명령어로 디렉터리 이동 n/a -
chmod
: 파일이나 디렉터리의 접근 허가권 변경#chmod [옵션] 파일명
-
옵션
-R
: 하위 디렉터리에 포함된 모든 디렉터리 및 파일의 권한 변경
-
숫자 모드 또는 기호 모드를 이용해 권한 변경 가능
기호모드 의미 사용자 u 소유자 g 그룹 o 기타사용자 a 모든사용자(u+g+o) 연산자 + 허가권 부여 - 허가권 제거 = 특정 사용자에게 허가권 지정 권한 r 읽기 w 쓰기 x 실행 - ex)
chmod u+w
: 소유자에게 쓰기 권한 부여 /chmod o=rx
: 기타 사용자에게 읽기, 실행 권한 부여
- ex)
-
-
umask
: 새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정umask[옵션][값]
-
디폴트 권한 값을 변경
-
파일의 기본 권한 : 666
-
디렉터리의 기본 권한 : 777
- 파일이나 디렉터리 생성 시 기본 허가권 설정 값 = ( 디폴트 권한 값 - 설정한 umask 값 )
- ex) umask가 022인 경우 디폴트 파일 권한은 644, 디폴트 디렉터리 권한은 755로 변경됨
- 옵션
-S
: umask 값을 문자로 표기
-
🐧 특수 권한
-
SetUID / SetGID
-
프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능
-
프로세스가 사용자보다 높은 수준의 접근을 요구할 때 파일 접근 제한으로 인해 원활한 기능을 제공할 수 없는 문제점을 해결하기 위한 방법
-
프로그램을 실행하는 동안(사용자가 사용할 떄만) SetUID는 프로세스를 파일의 소유자와 같은 권한으로, SetGUID는 프로세스를 파일의 그룹과 같은 권한으로 실행
-
SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가짐
-
-
특수 권한의 표기 방법
코드 절대값 SetUID s u+s 4000 SetGID s g+s 2000 Sticky bit t o+t 1000 -
Sticky bit
-
일반적으로 공용 디렉터리 사용 시 sticky bit를 설정해 사용
-
sticky bit가 설정되어 있는 디렉터리 안 내용은 해당 파일의 소유자나 root만 변경 가능 -> 공용 디렉터리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호
-
특정 응용 프로그램이 다른 응용 프로그램에서 생성한 파일을 삭제하지 못하는 권한 설정
-
설정된 디렉터리에는 누구든 접근 가능하며, 파일 생성 가능
-
생성된 sticky bit 파일 삭제는 소유자(파일 생성자)와 관리자만 가능
-
일반적으로 sticky bit로 설정되는 디렉터리는
/tmp
안에 생성
-
🐧 디스크 쿼터(Disk Quota)
-
파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한
-
사용자나 그룹이 가질 수 있는 inode의 개수 제한 or 사용자나 그룹에게 할당된 디스크 블록 수 제한(블록 단위의 용량 제한)
-
쿼터는 사용자별, 파일 시스템별로 동작
-
그룹 단위로 용량 제한 가능 -> 웹호스팅 서비스를 하는 경우 유용
-
-
quotaoff
: 쿼터 서비스 비활성화 -
quotacheck
: 파일 시스템의 디스크 사용 상태 검색 -
edquota
: 편집기를 이용해 사용자나 그룹에 디스크 사용량을 할당 -
setquota
: 편집기가 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당
-