![是否可以阻止所有用户(包括超级用户)删除特定应用程序?](https://linux22.com/image/201073/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%98%BB%E6%AD%A2%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%EF%BC%88%E5%8C%85%E6%8B%AC%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%EF%BC%89%E5%88%A0%E9%99%A4%E7%89%B9%E5%AE%9A%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F%20.png)
是否有可能将应用程序变成一种系统应用程序(如“设置”或“GNOME 软件”),以便包括超级用户在内的任何用户都无法删除它?
答案1
这取决于发行版的包管理器。
对于 Fedora 和 RHEL8,您只需将名称添加到 .conf 文件中即可/etc/dnf/protected.d/
,但不能已删除。较旧的、基于 yum 的发行版在/etc/yum
.
对于基于 Debian 的发行版,我认为您可以在软件包中设置 pkgCacheGen::ForceEssential 设置apt.conf
,但我不确定(不是我的专业领域)。您可以对软件包进行 apt 标记,但这也会阻止更新。
答案2
为了防止出现这种情况,应遵循正确的(可能也是最方便的)方法即时删除文件(由其所有者甚至由根用户)是与文件属性一致的:
引用曼查特
具有“i”属性的文件无法修改:无法删除或重命名......并且无法以写入模式打开该文件。
因此简单地chattr +i yourfile
您可以检查设置不可变的属性 :lsattr yourfile
并验证rm yourfile
甚至sudo rm yourfile
不会删除任何内容,而是报告:
rm: cannot remove 'yourfile': Operation not permitted
当然,正如上面的一些评论所写,root 可以做任何它想做的事情,包括……重置文件属性。所以你所能期望的就是防止即时删除。
答案3
由于该应用程序是一个系统应用程序中,我会使用只读介质(例如 DVD,或者带有只读开关的 USB 驱动器,如果对它的所有访问都是远程完成的)。
基本上,它的行为就像实时发行版或固件一样。如果需要,您可以添加其他持久性选项和/或读/写文件系统(其他介质、内存等)。
连root都无法消除它。
请注意,root 仍然可以逃避这一点,不是通过删除它(你的问题),而是通过使其不可用,例如通过安装另一个文件系统/usr/bin
(如果您的应用程序所在的位置)具有相同的内容,但您的文件除外。因此,如果您确实想阻止 root 执行任何操作,则需要确保规避工具/设备/模块不可用。
有一天您必须更新它,然后您可以刻录一个新映像(完全或通过使用多个会话)在更新时从媒体移动只读开关,重新刷新...