是否可以阻止所有用户(包括超级用户)删除特定应用程序?

是否可以阻止所有用户(包括超级用户)删除特定应用程序?

是否有可能将应用程序变成一种系统应用程序(如“设置”或“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 执行任何操作,则需要确保规避工具/设备/模块不可用。

有一天您必须更新它,然后您可以刻录一个新映像(完全或通过使用多个会话)在更新时从媒体移动只读开关,重新刷新...

相关内容