有没有办法只允许指定的用户su(如使用visudo sudo)。
原因是我想为我的root帐户保留一个简单(弱)的密码,并且可以su / sudo的帐户只能使用pub / private密钥login到本机。
那么,所有其他账户将不能作为根或可以作为一个帐户。
是的,“wheel”组技巧也可以在linux上使用:只需要为它configurationpam,然后只有wheel成员可以运行su。
在Debian上,你必须取消/etc/pam.d/su的轮子注释
这绝对是在任何服务器上首先要做的事情,否则,任何networking服务器/黑客可能导致根攻击。
对于root来说,弱密码是愚蠢的,不pipe“su”是什么。 即使用户“root”只能在受限机房的控制台上login,我也不会允许用户“root”拥有弱密码。
我build议完全禁用'su'并且使用'sudo'来做任何事情。 通过禁用,我的意思是任何:
rm -f /bin/su )。 chmod ox /bin/su或chmod go-x /bin/su )。 chmod us /bin/su )。 通过删除或删除许可位来禁用“su”的剩余问题是,某些系统脚本可能依赖于su而存在。 没有一个特别干净的解决scheme – 但它们通常是less之又less的,因为'su'提示input密码和提示在脚本环境中是不被喜欢的。 另一次使用'su'时是'root'运行命令成为另一个用户; 这是通过删除setuid位(root用户可以运行它,但没有人可以这么做有用)支持。 您可以通过删除公共和可能的组执行权限( chmod us,go-rwx /bin/su )来加强这一点。
如果您不使用系统特定的方法之一,请非常小心; 在投入生产之前进行testing。
在FreeBSD上,只有组“wheel”的用户才可以使用su 。
你在使用哪个操作系统?
如果你的系统使用PAM,那么你可以通过在/etc/pam.d/su类似的东西来正确地禁用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]
你可以编辑/etc/sudoers文件来控制谁可以使用sudo以及他们可以做什么。 如果你允许程序可以产生一个shell(shell转义),那么用户可以做任何事情。
有关更多详细信息,请参阅sudoers的man页。
首先,su和sudo是完全不同的命令。
sudo允许你以一个根(或者指定的不同用户)来执行一个命令,它的行为由/ etc / sudoers控制 。
su会以root身份运行一个shell(或者如果指定了不同的用户)。
我可以推荐你 – 留下一个强有力的root密码,并把所有需要root权限的用户放在/ etc / sudoers中(请看这篇文章)。
另一个不太推荐的想法是使用su包装脚本。
根据您的机器使用的authentication,您可以编辑/etc/pam.d/su,或者如果您的系统不使用pam,则可以创build一个文件/ etc / suauth,其中包含有权访问su的用户或组的规则作为根。
我只是想重申别人在说什么,我不太清楚你已经把握了什么。 如果您禁止所有用户访问su命令,则即使用户拥有自己的su副本,也不能切换到其他用户帐户。 这是因为su命令需要设置root suid位以允许用户尝试运行命令来更改其UID。 拥有一个非常强大的root密码会更好,为所有用户禁用su命令,并为那些希望拥有root权限的用户提供sudo访问权限。
这听起来像是你害怕有sudo访问权限的人会与其他用户分享他们的密码,并给他们root访问权限,这实际上是一个你无法解决的问题。 特权用户可以随时让他们坐在他们的电脑,如果你有公共/私人密钥设置。 归结起来,只有在您信任该用户时才能授予用户pipe理权限。
是。 chmod su设置为700,然后把所有你想使用它的人放在/ etc / group的根组中。 然而,使用sudo几乎肯定是一个更好的主意。