나는 FreeBSD에 대한 놀라운 (나를 위해) 권한 행동을 발견했다. 루트가 아닌 사용자 로 작동한다고 가정 해 보겠습니다 . 파일을 작성하고 읽기 전용으로 권한을 설정 한 후 파일에 쓰려고합니다.
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
여태까지는 그런대로 잘됐다. 이제 루트와 동일하게 파일에 씁니다.
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
버그입니까 아니면 의도 된 동작입니까? 이것이 유닉스와 리눅스에서 제대로 작동한다고 안전하게 추측 할 수 있습니까?
루트가 항상 파일에 쓸 수 있어야하는 이유는 전통적인 유닉스 파일 시스템 (ext4, zfs 등)에서 파일 권한이 파일의 일부이기 때문입니다. 따라서 루트가 파일에 쓸 수 없으면 NOBODY는 파일에 쓸
—
slebetman
chmod
수 없기 때문에 읽기 전용 파일을 다시 쓸 수있게 만들 수 있습니다.
@slebetman 권한을 업데이트하기 위해 파일에 대한 쓰기 권한이 필요하지 않습니다.
—
user253751
touch somefile; chmod 0000 somefile; chmod 0644 somefile
일반 사용자로 시도하십시오 .
@immibis : 당신이 소유 한 것. 루트는 자신이 소유하지 않은 파일에 대한 권한을 변경할 수 있어야합니다
—
slebetman
@slebetman 예 ...하지만 소유하지 않은 파일에 대한 권한을 변경하는 것이 아니라 쓸 수없는 파일에 대한 권한을 변경하는 것에 대해 이야기했습니다.
—
user253751
CAP_DAC_OVERRIDE
을 수행 할 수 있습니다. 거의 모든 Linux 시스템에서 이것은 루트가 이것을 할 수 있음을 의미하므로 의도적입니다. FreeBSD 부분을 말할 수는 없지만 비슷한 설정이 있다고 생각합니다.