如何在Linux(CentOS)中限制一些管理员命令
我尝试在 root 中使用visudo
,然后写
ABC ALL=ALL,!/bin/rm,!/bin/sudo
限制“ABC”用户不可以删除一些重要文件。
它在 ABC 用户中运行得很好,当我输入
sudo rm -rf /etc/
或删除一些需要超级用户的重要文件时,Linux 拒绝了我的命令。
但是脚本中有一个问题。如果我编写一个关于 的脚本,该脚本可以工作并通过使用来执行sudo rm -rf /etc/
删除我的脚本。/etc/
sudo
所以visudo
看起来不能在脚本中工作。我该怎么办?
我需要我的管理员用户可以使用所有命令,但不能删除我的系统文件。
答案1
我需要我的管理员用户可以使用所有命令,但不能删除我的系统文件。
这是不可能的(特别是如果您想防止某些恶意 Linux 专家的攻击),因为 root uid 0 拥有或可以获得所有权限。但是,还请阅读能力(7)(Linux 特定)。
如果你只是想避免错误,你可以使用查特尔(对于不可变标志)。但坚定的管理员仍然可以删除此类“不可变”文件(通过首先删除不可变标志)。
(我猜您最担心的是初级管理员犯下的小错误,而不是恶意黑客)
我建议您定期备份/etc/
(也许在某些远程计算机上),这总是一件好事。您也可以拥有自己的rm
(作为别名、函数、另一个可执行文件......),并决定进行版本控制/etc/
(例如使用git, 看等等管理员)
另请阅读有关设定值可执行文件和塞特鲁伊德(2)(而且当然执行(2)....) 系统调用(此机制是 Unix 上的基本保护砖,由sudo
& su
&使用login
)。
顺便说一句,信任主要是一个社会问题,想要纯粹的技术解决方案来解决社会问题是不明智和天真的。