这就是我认为正在发生的事情。
在 Unix 中,删除文件的能力由文件所在目录的可写性控制。这最终会影响文件的可写性。作为文件可以删除和替换。
我可以设置钻头。这有一点帮助,但对于文件所有者来说会被忽略。
我意识到最终任何权限都可以由所有者更改。但是,在没有更改权限(意外)的情况下,有没有办法阻止文件被删除?
我对 Gnu/Linux 的解决方案感兴趣。然而,如果这个问题没有解决方案,那么我会对任何 Unix 的解决方案感兴趣,包括边缘变体(plan 9、mac-os、bsb、solaris、athena 等……)。
不可变位chattr +i file
,只能由用户使用CAP_LINUX_IMMUTABLE
例如设置root
(所以不是很有用)。
答案1
目前,Linux 继承了标准 Unix“rwx”访问控制。这意味着,如果不认真重新设计当前的权限模型,就不可能拒绝文件所有者删除文件,尽管内核是有能力的来限制这一点。 (内核确实管理你的文件,并且可以拒绝任何用户活动,但当前内核的权限位太少,无法控制)
如果不是 root 用户,那么您可以尝试仅为所有者设置模式,例如chmod 444 file
.请注意,您每次都必须设置回写位来修改它。有些软件(如vim
)可以在没有任何通知的情况下自动重置该位,但默认情况下它不会这样做。
仅当您拥有某种机制或类似机制时,不可变标志才会有帮助sudo
,该机制允许您以非特权用户身份更改它。
也可以看看除了传统的“rwx”和 POSIX ACL 之外,是否还有更高级的文件系统 ACL?。 ACL(不是 POSIX)可以通过定义来解决这个问题消除允许。