Linux 권한·ACL·특수 권한
파일과 디렉터리의 r·w·x는 의미가 다릅니다. 소유권, 그룹, ACL과 추가 접근 통제를 순서대로 확인합니다.
개념부터 찾아보기
정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.
이 노트에서 설명할 수 있게 되는 것
- 파일 읽기·변경·삭제에 필요한 권한을 경로 단위로 판정한다.
- 소유자·명명 사용자 ACL·그룹·기타 범주의 선택과 mask를 설명한다.
- DAC 허용과 SELinux 허용을 구분해 거부 원인을 찾는다.
01rwx를 8진수로 계산하고 요청한 동작에 대입하기
- 권한 비트의 8진수 값각 권한은 r=4, w=2, x=1의 비트다.
- 소유자·읽기0640은 소유자 6=읽기+쓰기, 그룹 4=읽기, 기타 0=허용 없음이다.
- 선행 0은 8진수 표기를 분명하게 해 준다.
- 인터프리터와 직접 실행실행 비트가 없는 일반 문서를 쉘 인터프리터가 읽어 처리하는 것과 커널이 그 파일 자체를 실행하도록 요청하는 것은 다르므로 noexec나 x 비트를 모든 코드 실행의 완전한 금지로 해석하면 안 된다.
- 읽기디렉터리의 r은 이름 목록 읽기, x는 이름을 통해 내부 객체 탐색, w는 항목 생성·삭제·이름 변경에 관여한다.
- 탐색·권한파일 내용을 읽으려면 상위 디렉터리마다 탐색 권한과 대상 파일의 읽기 권한이 필요하다.
- 반대로 파일의 쓰기 비트가 없어도 부모 디렉터리의 쓰기와 탐색이 허용되면 이름을 삭제할 수 있으며 같은 추가 조건이 이를 제한한다.
| 표기 | 파일 | 디렉터리 |
|---|---|---|
| r | 내용 읽기 | 이름 목록 읽기 |
| w | 내용 수정 | 항목 생성·삭제·이름 변경 |
| x | 실행 요청 | 경로 탐색 |
02소유자·그룹·기타는 순서대로 더하는 권한이 아니다
- 파일 소유자일반 모드 비트 판정에서 의 파일 접근용 사용자 ID가 파일 소유자와 일치하면 소유자 비트만 적용한다.
- 소유자·읽기소유자에게 읽기 권한이 없다고 그룹 읽기나 기타 읽기로 다시 내려가지 않는다.
- 소유자·그룹소유자가 아니면서 파일 그룹이 의 유효 그룹 또는 보조 그룹 중 하나와 일치하면 그룹 비트를 적용하고, 그 밖의 경우 기타 비트를 사용한다.
- capability·의 자격 정보와 capability, , LSM 정책이 함께 작용하므로 이 설명은 일반 DAC 모드 판정의 골격이다.
- 예를 들어 =learner, =team, mode=0040인 파일은 learner가 team에 속해 있어도 소유자 분류에서 읽기가 거부된다.
- 반면 소유자가 아닌 다른 team 사용자는 읽을 수 있다.
- UID·GID사용자의 이름이 아니라 UID와 GID 숫자로 비교한다는 점 때문에 같은 이름이 여러 시스템에 존재해도 숫자 매핑이 다르면 등의 결과가 달라질 수 있다.
id
stat -c "%A %a %u:%g %n" report.txt
namei -l /srv/team/report.txt
# owner/group/other 중 실제로 선택되는 분류를 먼저 결정한다.교육용 예시. 표시된 결과는 설명을 위한 예시이며 실제 실행 기록이 아니다.
03POSIX ACL의 named entry와 mask
- 이름별 은 특정 사용자나 여러 그룹에 별도 권한을 주기 위해 모드 비트를 확장한다.
- 소유자user::는 소유자, user:learner:는 이름이 붙은 사용자 항목, ::와 :team:은 그룹 항목, other::는 기타다.
- · user::는 user와 그룹 클래스가 실제로 얻을 수 있는 권한의 상한이다.
- 소유자·기타소유자 user::와 기타 other::에는 같은 방식으로 를 적용하지 않는다.
- 그룹 자리와 확장 이 있으면 ls -l의 그룹 자리만 보고 소유 그룹 권한이라고 단정할 수 없다.
- 예를 들어 user:learner:rw-와 ::r--가 함께 있으면 learner의 유효 권한은 읽기만이다.
- user user가 일치한 뒤 권한이 부족하다고 other로 재시도하지 않는다.
- 그룹그룹 판정에서는 일치하는 그룹 항목들의 허용 관계와 를 함께 고려한다.
- 디렉터리 은 새 자식이 상속받을 의 기본값이며 기존 자식에 소급 적용하지 않는다.
getfacl report.txt
# 설명용 발췌
# user::rw-
# user:learner:rw- #effective:r--
# group::r--
# mask::r--
# other::---교육용 예시. 표시된 결과는 설명을 위한 예시이며 실제 실행 기록이 아니다.
04확장 ACL을 모드 비트와 함께 읽는 규칙
- 모드와 의 대응확장 의 user::는 소유자 모드, other::는 기타 모드에 대응한다. 가 있으면 ls -l의 그룹 비트는 :: 자체가 아니라 범위를 나타낸다.
- chmod의 영향확장 이 있는 파일의 그룹 모드를 chmod로 바꾸면 에 영향을 줄 수 있다. user 항목의 rw- 문자열이 남아도 실제 유효 권한은 바뀔 수 있다.
- 상속과 기존 객체부모 디렉터리의 은 새 객체의 초기 계산에 쓰인다. 부모 을 수정했다고 이미 존재하는 모든 자식의 이 재계산되는 것은 아니다.
- 생성 모드의 상한을 상속하더라도 프로그램이 요청한 생성 모드에 없는 권한은 제거된다. 읽기·쓰기만 요청한 일반 파일에 상속 의 x가 그대로 생긴다고 단정할 수 없다.
- 소유자와 이름 항목파일 소유자 UID가 일치하면 user:: 판정이 먼저다. 동일 사용자를 user로 추가해 소유자 권한의 부족분을 더하는 방식으로 이해하지 않는다.
05mask를 바꾸었을 때 읽기·쓰기 결과 계산
- 가상 user::rw-, user:reader:rw-, ::r--, ::r--, other::---인 파일을 가정한다. reader는 파일 소유자가 아니며 상위 경로 탐색은 가능하다.
- 비트의 교집합reader 항목 rw-=6과 r--=4의 비트 AND 결과는 4다. 숫자 6에서 4를 빼는 계산이 아니므로 유효 권한은 r--이다.
- 쓰기 요청reader가 내용을 쓰려 하면 user 범주에서 필요한 w가 없어서 거부된다. 이나 other의 항목으로 넘어가 추가 권한을 얻지 않는다.
- 확대만 rw-로 바뀌면 reader의 유효 권한은 rw-가 되지만 ::r--는 여전히 읽기만이다. 상한 확대가 모든 항목에 쓰기를 새로 부여하는 것은 아니다.
- 출력 해석getfacl에서 user:reader:rw- 옆 #effective:r--는 선언과 유효값의 차이를 보여 준다. 을 볼 때 항목 문자열과 를 같이 읽는 이유다.
user::rw-
user:reader:rw- #effective:r--
group::r--
mask::r--
other::---getfacl 형식의 가상 출력. 위 계산의 최초 상태를 보여 주며 실제 계정 정보가 아니다.
06같은 Permission denied를 만드는 서로 다른 경계
- 내용 쓰기와 이름 삭제파일 w는 내용 변경, 부모 디렉터리 w+x는 이름 변경·삭제와 관계한다. 파일을 읽기 전용으로 만들어도 부모에서 삭제를 허용하는 조건은 남을 수 있다.
- sticky 추가 조건1777 디렉터리에서는 다른 사람 파일을 지울 수 있는지에 소유자·디렉터리 소유자·특권 조건이 추가된다. 넓은 디렉터리 w+x만으로 삭제 결과를 결정하지 않는다.
- 실제 서비스 자격터미널의 id와 서비스 UID·그룹이 다르면 같은 경로의 결과도 달라진다. 파일 이름을 바꾸기 전에 거부된 요청의 실행 주체와 동작을 고정한다.
- DAC 밖의 거부이 허용해도 읽기 전용 마운트, , 서비스 자체 정책에서 쓰기가 실패할 수 있다. 이때 를 계속 넓히면 접근 범위만 불필요하게 커진다.
- 새 파일만 다를 때기존 파일은 정상인데 새 파일만 접근이 달라지면 생성 모드···부모 setgid를 대조한다. 기존 객체의 chmod 상태와 생성 정책은 다른 자료다.
07umask는 빼기가 아니라 생성 권한의 비트를 지운다
- 생성 비트 제거프로그램이 요청한 생성 모드에서 에 설정된 비트를 제거한다.
- 0027 계산 예일반 파일을 0666으로 요청하고 가 0027이면 0666 & ~0027 = 0640이 된다.
- 디렉터리를 0777로 요청하면 0750이다.
- ·실행가 실행 권한을 새로 추가하는 것은 아니므로 일반 파일의 기본 요청에 x가 없으면 실행 파일로 바뀌지 않는다.
- 프로그램이 더 좁은 모드를 요청하면 그 제한 역시 유지된다.
- 이 있는 디렉터리에서는 상속 과 요청 모드의 조합을 보아야 하므로 항상 만으로 결과를 계산할 수는 없다.
- chmod와 생성 기본값기존 파일에 chmod를 적용하는 작업과 새 파일의 기본 생성 권한을 정하는 작업도 다르다.
- setgid·그룹공유 디렉터리에서는 부모 setgid가 그룹을 이어 주고 이 접근 정책을 이어 주도록 역할을 나누어 설계할 수 있다.
umask
# 새 실습 셸에서 umask 0027을 가정하면:
# 일반 파일 요청 0666 -> 결과 0640
# 디렉터리 요청 0777 -> 결과 0750교육용 예시. 표시된 결과는 설명을 위한 예시이며 실제 실행 기록이 아니다.
08setuid·setgid·sticky와 capability의 작용 범위
- 실행·setuid실행 파일의 setuid는 성공적인 실행 시 유효 UID를 파일 소유자의 UID로 바꿀 수 있다.
- 실제 로그인 사용자를 나타내는 real UID와는 구별된다.
- setgid·실행setgid 실행 파일은 유효 GID에 같은 종류의 영향을 주고, setgid 디렉터리는 새 자식의 그룹 상속에 쓰인다.
- setgidsetgid 디렉터리라는 사실만으로 모든 자식에게 실행 비트나 쓰기 권한이 생기지는 않는다.
- nosuid와 실행 파일 형식 등도 결과에 영향을 준다.
- sticky·쓰기sticky 디렉터리에서는 쓰기 권한이 있더라도 파일 소유자·디렉터리 소유자 또는 필요한 권한을 가진 만 해당 항목을 삭제·이름 변경할 수 있다.
- /tmp의 1777이 대표 사례다.
- s·t와 S·T 표시ls의 s와 t는 해당 실행 비트도 켜졌음을, S와 T는 특수 비트만 켜지고 대응 x는 꺼졌음을 나타낸다.
- 관리 권능의 분리 capability는 관리자 권능을 CAP_NET_BIND_SERVICE 같은 단위로 나눈다.
- Capability 집합effective는 현재 검사에 쓰이는 집합, permitted는 활성화 가능한 범위, bounding은 실행을 통한 획득을 제한하는 상한이며 inheritable과 ambient는 실행 시 전달에 관여한다.
- 프로그램 신뢰와 권능파일 capability는 프로그램 자체가 안전하다는 보증이 아니다.
getcap /usr/bin/ping
getpcaps 1234
# 설치 환경에 따라 capability가 없거나 출력이 다를 수 있다.교육용 예시. 표시된 결과는 설명을 위한 예시이며 실제 실행 기록이 아니다.
부모 디렉터리의 그룹을 새 디렉터리가 상속하는 실습
원본 크기로 보기 ↗이 자료에서 읽어낼 것
- chgrp tester 뒤 test2의 그룹 열이 root에서 tester로 바뀐다.
- chmod 2755 뒤 그룹 실행 위치가 s로 표시된다.
- root가 하위 test3을 만들었지만 그룹은 tester이고 새 디렉터리에도 setgid가 이어진다. 이 설정 자체가 모든 사용자에게 쓰기 권한을 주지는 않는다.
SetGID 디렉터리의 그룹 상속과 실제 쓰기 권한 구별하기
그룹 목록과 디렉터리 모드의 변화를 연결해, 새 항목의 그룹을 정하는 규칙과 생성 가능 여부를 분리한다.
실습 구성과 전제
- 파일 시스템에 디렉터리와 사용자·그룹이 준비된 실습을 해석한다. 계정 예시는 labuser·labteam으로 재구성한다.
- 디렉터리 변경 화면은 root가 실행한 결과다. 일반 사용자의 쓰기 성공을 보여 주는 화면으로 해석하지 않는다.
계정이 가진 그룹부터 확인한다
- id의 gid는 기본 그룹, groups는 기본·보조 그룹 목록을 보여 준다. 이름과 숫자 GID를 함께 읽어 디렉터리의 소유 그룹과 대응시킨다.
- 화면의 한 계정은 자신의 기본 그룹 외에 tester 그룹에도 포함된다. 이 정보는 그룹 권한을 적용할 후보라는 뜻이며, 아직 해당 디렉터리에 쓰기가 가능하다는 뜻은 아니다.
bashid labuser getent group labteam id계정 데이터베이스 조회와 현재 정보를 비교하는 명령이다.
원본 크기로 보기 ↗- id 출력의 uid와 gid가 각각 표시되고 groups에는 두 그룹이 나열된다.
- groups 명령에서도 기본 그룹 외에 tester가 보이므로 보조 그룹 소속을 확인할 수 있다.
확인 기준조회 대상 계정의 그룹과 현재 로그인 셸의 그룹이 다르면, 그룹 변경 이후 새 로그인 세션인지 먼저 구분한다.
2755를 그룹 상속과 접근 비트로 분해한다
- chgrp 뒤 소유 그룹이 바뀌고 chmod 2755 뒤 그룹 실행 자리의 x가 s로 바뀐다. 앞의 2는 SetGID, 뒤의 755는 소유자 rwx·그룹 r-x·기타 r-x다.
- 부모 디렉터리의 SetGID 때문에 그 안에 만든 항목은 부모의 그룹을 상속한다. 새 하위 디렉터리에 SetGID도 이어지는 모습이 화면에서 확인된다.
원본 크기로 보기 ↗- test2는 처음 root:root였다가 chgrp 뒤 root:tester로 바뀐다.
- chmod 2755 뒤 test2와 그 안의 test3 모두 drwxr-sr-x이고, 소유 그룹도 tester로 표시된다.
확인 기준그룹 이름의 상속은 확인되지만 2755의 그룹 비트에는 w가 없다. 그룹 구성원의 생성 권한까지 성공했다고 결론내리지 않는다.
생성 권한은 디렉터리의 w와 x로 별도 판단한다
- 일반 사용자가 새 이름을 만들려면 부모 디렉터리에 쓰기와 검색 권한이 필요하다. 경로 앞부분의 검색 권한, , 같은 추가 조건도 통과해야 한다.
- 재구성 환경에서 그룹 협업이 목적이라면 2770처럼 그룹에 wx가 있는 설계를 검토한다. 이는 화면의 2755와 다른 권한 설정이므로 동일 결과로 섞지 않는다.
bashstat -c "%A %a %U:%G %n" /srv/lab-share getfacl /srv/lab-share namei -l /srv/lab-share실습 디렉터리의 모드··상위 경로를 조회하는 재구성 예시다.
확인 기준stat의 2755와 getfacl의 유효 권한을 함께 읽고, root의 생성 성공과 일반 계정의 접근 판정을 따로 기록한다.
실습에서 확인한 동작 원리
- SetGID는 새 항목의 그룹 상속을 제어하며, 그룹의 쓰기 권한을 자동으로 추가하지 않는다.
- id의 그룹 목록, 디렉터리 소유 그룹, 모드 비트를 같은 요청에 대입해야 접근 결과를 설명할 수 있다.
설정·출력 추가로 확인하기 15장
아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.
실습 화면 묶음 01 1장
원본 크기로 보기 ↗- 「④ 그룹 권한 확인:」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 1장
원본 크기로 보기 ↗- 「chmod -R 옵션」 문맥에 삽입된 원본 명령·상태 출력이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 3장
원본 크기로 보기 ↗- 「umask」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「umask」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「umask」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 04 1장
원본 크기로 보기 ↗- 「실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 05 1장
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 06 6장
원본 크기로 보기 ↗- 「설명 결론부터 말씀드리면 /home/eunsoo 디렉토리와 그 하위 파일들에 대해 외부(웹)에서 접근할 수 있도록 허용하는 설정」 문맥에 삽입된 원본 명령·상태 출력이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「설명 결론부터 말씀드리면 /home/eunsoo 디렉토리와 그 하위 파일들에 대해 외부(웹)에서 접근할 수 있도록 허용하는 설정」 문맥에 삽입된 원본 명령·상태 출력이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「설명 결론부터 말씀드리면 /home/eunsoo 디렉토리와 그 하위 파일들에 대해 외부(웹)에서 접근할 수 있도록 허용하는 설정」 문맥에 삽입된 원본 명령·상태 출력이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「설명 결론부터 말씀드리면 /home/eunsoo 디렉토리와 그 하위 파일들에 대해 외부(웹)에서 접근할 수 있도록 허용하는 설정」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 07 1장
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 08 1장
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 설정·관리 화면이다. Linux 권한·ACL·특수 권한 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
09접근 거부를 확인하는 순서
- 실행·그룹실행 계정과 그룹, 상위 경로의 통과 권한, 대상의 모드와 을 차례로 확인한다.
- ·읽기여기에 , 읽기 전용 마운트, 서비스 자체 정책도 영향을 준다.
- 과도한 쓰기 허용의 한계권한 오류를 모두 동일한 문제로 취급해 전체 쓰기 권한을 주는 방식은 원인 해결이 아니다.
id
ls -ld .
umask현재 사용자··생성 마스크를 조회한다.
10요청한 권한을 실제 계정에 대입하기
- 동작별 접근 요청읽기와 쓰기는 별도의 요청으로 생각한다.
- 정보일반 계정의 접근을 판정할 때 먼저 의 사용자·그룹 자격 정보와 파일 소유권을 대조한다.
- 파일 소유자파일 소유자에 해당하면 소유자 항목으로 결정하며, 거기서 권한이 부족하다고 기타 사용자 항목으로 넘어가 더 넓은 권한을 얻지는 않는다.
- 확장 이 있다면 명명 사용자 항목과 그룹 항목 및 가 판정에 포함된다.
- DAC와 추가 정책의 파일 접근에는 fsuid 같은 세부 자격 정보도 있지만 여기서는 일반 로그인 를 가정한다.
- 예를 들어 파일 소유자가 아닌 계정 reader에 user:reader:rw-가 있고 ::r--라면 표시상 rw-여도 유효 권한은 r--다.
- 쓰기 요청은 이 지점에서 거부된다.
- 적용 순서reader가 어떤 그룹에도 속해 있다는 이유로 더 뒤의 그룹 항목을 대신 선택해 허용하지 않는다.
- 읽기·읽기는 이 조건을 통과할 수 있지만 가 해당 도메인의 파일 읽기를 허용하는지는 별도로 확인해야 한다.
- 상위 디렉터리의 탐색 권한도 이미 충족됐다는 조건이다.
- 읽기 요청파일 소유자가 아닌 reader가 r 권한을 요청한다. 상위 디렉터리 탐색 권한은 충족되었고, reader에 해당하는 user 이 있다고 가정한다.
- 소유자 범주 제외요청자의 UID가 파일 소유자와 다르므로 항목으로 판정하지 않는다. user 에서 reader와 일치하는 항목을 찾는다.
- 과 결합reader 항목이 rw-이고 가 r--이면 두 비트 집합의 교집합인 r--만 유효하다. 이 사례의 읽기는 허용되지만 쓰기는 거부된다.
- 그룹·기타 재시도 생략 user 항목이 선택됐으므로 그룹·기타의 더 넓은 권한을 합치거나 거부 뒤 다른 범주로 재시도하지 않는다.
- 추가 정책 적용파일 접근이 완료되려면 DAC 판정뿐 아니라 적용되는 등 다른 접근 정책도 허용해야 한다.
설명과 함께 보는 보조 도식
명명 사용자 ACL의 유효 권한
일반 계정 reader의 읽기 요청이며 상위 디렉터리 탐색은 허용된 사례다.
요청 확인
내용 읽기에 필요한 r 권한을 판정한다.
- 요청 권한
- r
전체 단계를 한 번에 읽기
- 01
요청 확인
내용 읽기에 필요한 r 권한을 판정한다.
- 요청 권한
- r
- 02
소유자 불일치
파일 소유자 항목은 이 요청자의 적용 범주가 아니다.
- 소유자 일치
- 아니오
- 03
명명 사용자 일치
reader의 ACL 항목을 선택한다.
- 항목
- rw-
- 04
유효 권한 제한
mask와 함께 보면 r만 유효하다. 쓰기라면 여기서 거부된다.
- 유효 권한
- r--
- 05
다른 범주로 재시도하지 않음
그룹·기타의 더 넓은 권한을 합쳐 얻지 않는다.
- 판정 범주
- 명명 사용자
- 06
정책까지 확인
DAC의 읽기 허용과 SELinux 정책 허용을 모두 만족해야 한다.
- 최종 조건
- DAC와 MAC 모두 허용
11읽기·삭제·실행을 구분하는 관찰
- 삭제파일 내용은 읽을 수 있는데 삭제할 수 없는 경우에는 부모 디렉터리의 쓰기·탐색 권한과 를 조사한다.
- 반대로 파일 자체가 읽기 전용이어도 부모 디렉터리에서 항목을 제거할 권한이 있으면 삭제할 수 있는 조건이 생긴다.
- 실행 실패의 조건실행 실패에서는 x 비트뿐 아니라 상위 경로, 인터프리터의 존재, noexec 마운트 같은 다른 조건도 구분해야 한다.
- 모드 변경의 한계권한 숫자 하나를 바꾸는 것으로 모든 실행 오류를 해결할 수 없다.
- getfacl 결과의 effective 표시와 를 읽고, 실제 서비스 가 사용하는 계정과 그룹을 대조한다.
- 실제 터미널에서 확인한 id는 그 터미널 세션의 자격 정보이므로 다른 서비스의 자격 정보와 같다고 가정하지 않는다.
- 권한·생성 권한은 요청 모드와 에 영향을 받으며, 기본 이 설정된 디렉터리에서는 상속 규칙도 살펴야 한다.
- 특권의 예외특권과 capabilities에 따른 예외는 일반 계정의 기본 판정 사례와 분리해 해석한다.
| 구성·관찰 대상 | 확인하는 정보 | 구분할 문제 |
|---|---|---|
| 파일 r·w | 내용 읽기·수정 | 부모 디렉터리의 삭제 권한과 다름 |
| 디렉터리 w·x | 항목 생성·삭제·경로 통과 | sticky와 별도 제한 확인 |
| · | 선택 범주와 유효 권한 | 표시된 rw-가 실제 rw-인지 |
| 컨텍스트 | 주체 도메인·대상 타입 | 모드 비트 밖의 정책 거부 |
이해했는지 확인하기
- 파일 수정과 부모 디렉터리의 삭제 권한을 구분한다.
- 보조 그룹과 ACL mask까지 확인한다.
- 특수 권한이 필요한 이유와 적용 범위를 설명한다.

