在机器上禁用 su

ver*_*gen 10 su sudo

有没有办法只允许指定用户使用 su(例如对 sudo 使用 visudo)。

这样做的原因是我想为我的 root 帐户保留一个简单(弱)密码,并且拥有 su/sudo 只能使用 pub/private 密钥登录到机器的帐户。

然后,所有其他帐户将无法以 root 或可以 su 的帐户身份 su。

Ben*_*oît 14

是的,'wheel' 组技巧也可以在 linux 上使用:你只需要为它配置 pam,然后,只有轮子成员可以运行 su。

在 Debian 上,您必须取消注释轮线 /etc/pam.d/su

这绝对是在任何服务器上要做的第一件事,否则,任何网络服务器/被黑都会导致 root 被黑。


Jon*_*ler 6

无论对“su”的控制如何,root 的弱密码都是愚蠢的。即使用户 'root' 只能在受限机房的控制台登录,我也不会允许用户 'root' 使用弱密码。

我建议完全禁用“su”并在所有情况下使用“sudo”。通过禁用,我的意思是:

  • 利用任何系统特定的方法来限制对“su”的访问(例如 BSD 的组“轮”技巧,或 Linux 等效项)。请注意,对此没有正式的标准;例如,POSIX 不强制要求出现“su”。
  • 删除它 ( rm -f /bin/su)。
  • 删除其执行权限位(chmod o-x /bin/suchmod go-x /bin/su)。
  • 删除其 setuid 权限位 ( chmod u-s /bin/su)。

通过删除或删除权限位来禁用 'su' 的残余问题是某些系统脚本可能依赖于su存在。对此没有特别干净的解决方案 - 但它们通常很少而且相距甚远,因为“su”提示输入密码,而在脚本环境中不喜欢提示。'su' 的另一次使用是当 'root' 运行命令成为另一个用户时;这是通过删除 setuid 位来支持的(root 用户可以运行它,但没有其他人可以有用地这样做)。您可以通过删除 public 和可能的 group 执行权限来加强这一点 ( chmod u-s,go-rwx /bin/su)。

如果您没有使用系统特定的方法之一,请务必小心;在将其投入生产之前进行测试。


小智 5

如果您的系统使用 PAM,那么您可以su通过在以下位置添加类似的内容来正确禁用/etc/pam.d/su

# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so

# Disable all other uses of su
auth requisite  pam_deny.so

# [rest of file]
Run Code Online (Sandbox Code Playgroud)