로그인 한 상태에서 다음을 수행 할 수 있습니다.
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
그런 다음 vim (, not root
)을 열고 edit bar
을 사용하여 강제로 쓰면 w!
파일이 수정됩니다.
운영 체제에서 파일 수정을 허용하지 않게하려면 어떻게합니까?
2017 년 3 월 2 일 업데이트
chmod 500 foo
디렉토리에 대한 쓰기 권한은 파일 내용을 수정하는 기능과는 관련이 없으며 파일을 작성하고 삭제하는 기능과는 관련이 없습니다.chmod 400 foo/bar
실제로 파일 내용이 변경되는 것을 방지합니다. 그러나 파일의 권한이 변경되는 것을 막지 는 못합니다 . 파일 소유자는 파일에 액세스 할 수 있다고 가정합니다 (예 : 모든 조상 디렉토리에 대한 권한을 실행한다고 가정). 사실, strace (1)는 이것이 vim (7.4.576 Debian Jessie)이하는 일임을 보여줍니다. vim은 chmod (2)를 호출하여 파일 소유자에 대한 쓰기 권한을 임시로 추가하고 파일을 수정 한 다음 chmod ( 2) 다시 쓰기 권한을 제거하십시오. 그렇기 때문에chattr +i
작동하는 것은 root 만 호출 할 수 있습니다chattr -i
. 이론적으로, vim (또는 모든 프로그램)은 루트로 실행되는 경우 불변 파일에서 chmod와 동일한 방식으로 chattr과 동일한 작업을 수행 할 수 있습니다.
root
?
vim
실제로 권한을 변경 한 다음 다시 사용하고 있다고 생각합니다 .