해당 사용자로 실행되는 프로세스에서 어떤 식으로든 변경할 수 없도록 권한 없는 사용자로 실행되는 bash에서 파일을 면역으로 표시할 수 있습니까? 다른 사용자나 루트가 이를 변경할 수 있다면 괜찮습니다.
내 사용자 사례는 다른 프로세스를 시작하기 전에 구성 파일을 준비하는 것입니다. 프로세스가 오류나 고의적인 악용을 통해 파일을 수정하는 것을 방지하고 싶습니다.
chmod a-w path
쉽게 취소할 수 있으므로 사용하거나 유사한 것은 좋지 않습니다. 프로세스가 루트가 아니기 때문에 파일의 소유권을 변경할 수 없습니다. chattr +i path
프로세스에 CAP_LINUX_IMMUTABLE이 없기 때문에 사용할 수 없습니다 .
그러한 변경을 수행하기 위해 setuid/sudo 프로그램 또는 실행 파일에 CAP_LINUX_IMMUTABLE을 설정하는 프로그램을 사용하는 유일한 옵션이 있습니까?
답변1
Apparmor와 selinux를 사용하여 프로세스 권한을 세밀하게 제어할 수 있습니다. 여기에는 프로세스에 파일을 쓰는 대신 파일을 읽을 수 있는 기능을 제공하는 것이 포함됩니다.
화재 감옥보다 사용자 친화적인 래퍼입니다.
이 옵션은 새 프로세스를 생성할 때 파일에 대한 쓰기 액세스를 제거하는 데 사용할 수 있습니다. --read-only
이는 원하는 것으로 보입니다.
답변2
acls나 sudo나 setuid를 통해 사용할 수 있는 다른 사용자가 없으면 가장 안전한 방법은 chmod 444
파일을 'ing하는 것입니다.
파일을 다시 chmod하여 o+w
more딱딱한bash -r --rcfile restricted.rc
하위 프로세스의 경우, 제한적.rc가 chmod를 방지하기 위해 PATH를 설정하는 래퍼 스크립트를 설정해 볼 수 있습니다 . 이는 bash 또는 기타 프로세스를 호출하는 스크립트가 자체 경로를 사용하여 스크립트를 호출하고 파일을 수정하는 것을 막지는 못하지만 명시적으로 이를 수행하려는 사람은 거의 없습니다.
그러나 u+w
할 수 없는 경우 chattr
또는 chflags
.