防止 SUDO 执行 passwd

防止 SUDO 执行 passwd

我想阻止具有 sudoer 访问权限的用户使用sudo来执行passwd(从而更改 root 密码)。

这可能吗?如果可以,如何实现?

答案1

基本上,您不能禁止用户执行特定命令,如果他们仍然被允许执行所有其他命令 - 他们可以复制passwdreally-not-passwd-i-promise执行该命令。

如果你想阻止 sudoers 更改 root 的密码(或其他人的密码),你也无法阻止;/etc/shadow只要他们拥有使用 sudo 的 root 权限,他们就可以手动编辑。

(这可以通过使用 Kerberos 或 LDAP 进行身份验证来实现 - 这样就没有人可以更改其他用户的密码 - 但仍然没有什么可以阻止 sudoers 简单地破坏配置或类似的事情。)

基本上,不要将全部sudo权限授予您不信任的人。禁止单个命令并允许所有其他命令是行不通的。

答案2

让 root 用户无法做任何事情非常困难,但我相信您可以使用 AppArmor 来做到这一点。

问题是,如何设置才能让合法的密码更改发生?

诀窍可能为设置一个 AppArmor 配置文件,供sudo其所有子级继承。这不会影响以自己的身份运行 passwd 的用户(更改自己的密码),也不会影响通过 进入 root 的用户su

但是,我怀疑您可以通过复制、移动或重命名sudo二进制文件来规避这种情况,因此您可能需要锁定passwd所有根进程的写访问权限,然后只能使用实时 CD 进行更改。

当然,您还必须保护 AppArmor 本身不被修改。:)

最好的解决方案可能是仅为特定命令授予 sudo 访问权限,然后仅为不更改文件系统的命令授予 sudo 访问权限。

答案3

那这个呢:编辑/etc/sudoers如下所示的文件: %wheel ALL=(ALL) ALL,!/usr/bin/* /etc/shadow,!/usr/bin/* /etc/sudoers\ ,!/usr/bin/* /usr/bin/su,!/usr/bin/su,!/usr/sbin/visudo 则这些文件上无法访问任何命令sudo su

相关内容