是否可以从以非特权用户身份运行的 bash 将文件标记为免疫,以便它不能从以该用户身份运行的任何进程以任何方式进行更改?如果其他用户或 root 可以更改它,则可以。
我的用户案例是在开始另一个进程之前准备一个配置文件。我想阻止该进程通过错误或故意利用来对文件进行任何修改。
使用chmod a-w path或类似的方法并不好,因为它可以被简单地撤消。我无法更改文件的所有权,因为该进程不是 root。我也不能使用,chattr +i path因为进程没有 CAP_LINUX_IMMUTABLE。
是否唯一的选择是在其可执行文件上设置 setuid/sudo 程序或具有 CAP_LINUX_IMMUTABLE 的程序来执行此类更改?
小智 0
我想,在没有 acls 或任何其他用户通过 sudo 或 setuid 可用的情况下,最安全的方法就是通过chmod 444'ing 该文件。
o+w为了使任何子进程更难对文件进行 chmod ,您可以尝试设置一个调用 的包装器脚本,其中restricted.rcbash -r --rcfile restricted.rc设置 PATH 以避免 chmod。这不会阻止调用 bash 或其他进程的脚本使用自己的路径调用脚本并修改文件,但不太可能有人愿意显式地这样做。
但是,u+w如果您不能chattr或chflags.