假设 Unix 系统有两个 root 用户。
是否可以阻止这些 root 用户之一删除该用户并保护 ssh 密钥访问删除?
目标是确保如果用户获得 root 访问权限,他们无法删除主 root 用户(即负责系统正常工作的用户),同时允许每个 root 用户安装软件包、更改文件权限等。 (但他们无法影响“系统管理员”或将其从系统中删除)
我知道我们可以创建具有特定权限的用户(即使不是 root),但问题的范围是具有完全系统访问权限的用户。
答案1
如果一个帐户具有完整的系统访问权限,那么根据定义,您无法阻止它执行它选择的任何操作。
理论上,您可以编写一个内核模块来调解根文件系统上更改任何内容的尝试/root
,并且拒绝允许自身被卸载,但仍然有一些方法可以解决这个问题。重新启动救援光盘例如,将完全绕过这样的内核模块。
另一种解决方案可能是具有根文件系统的虚拟机,该虚拟机在每次启动时将自身重置为已知状态。这可以在虚拟机本身的上下文之外进行管理,因此内部的任何帐户都无法更改。您仍然无法阻止虚拟机内的根帐户更改内容,但这可能并不重要,因为您只需在下次重新启动时重置它们即可。
答案2
根据定义,root 用户可以在系统上执行任何操作,包括删除/修改其他用户。
同时允许每个 root 用户安装软件包、更改文件权限等(但他们不能影响“sysadmin”或从系统中删除它们)
您可能正在寻找sudo
一种设置方式,让用户无需完全访问系统即可管理系统。
您可以设置sudo
允许运行:
apt install/update/upgrade/remove/purge
chown/chmod
但仅适用于某些目录/文件useradd/userdel/groupadd/groupdel
另一个想法是使用虚拟化(完全虚拟化或轻型虚拟化,例如 LXC/linux 容器)并允许用户完全访问来宾操作系统。