背景
我知道su - , sudo su -和sudo <command>之间的区别:
su - – 将用户切换到root用户,需要root密码 sudo su - – 将用户切换到root用户,只需要当前用户的密码 sudo <command> – 仅为特定命令授予root访问权限; 只需要当前用户的密码 我的问题是关于是否使用sudo su -在生产环境中是安全的做法。
一些想法:
似乎允许sudo su -通过访问根帐户根据个人用户密码构成安全风险。 当然,这可以通过执行严格的密码策略来缓解。 我不认为su -是更好的,因为它需要pipe理员共享实际的root密码。
允许用户完全切换到root帐户使得更难logging谁对系统进行了更改。 我在我的日常工作中看到过多个用户被授予sudo su - access的情况。 在开始工作之前,用户在login系统时首先执行sudo su - 。 那么,有一天有些事情会中断,而且在错误的目录中运行rm -rf *人是没有可追溯性的。
问题
鉴于上述担忧,允许用户使用sudo su -甚至是su -是否是一个好主意?
是否有任何理由pipe理员将configuration用户帐户为sudo su -或su -而不是sudo <command> (除了懒惰)?
注意:对于root用户禁用直接ssh访问的情况,我忽略了运行sudo su - su -的用户是需要进行系统更改的pipe理员的情况。
让我们看看你的情况:
su -
将使用root环境作为root用户运行/ bin / sh。 根密码是必需的,根据系统日志设置可以logging日志(通常默认为/var/log/auth.log)。
sudo /bin/sh
将以root用户身份运行shell,使用当前的一组环境variables(除了在sudoers文件中定义的一些例外)。 密码是源用户密码,而不是根用户密码。 sudo通常被logging。
sudo su -
将以root用户身份运行一个shell(通常为/ bin / sh)作为root用户。 这将需要源用户的密码,通常会被logging。
有时需要在自己的环境中拥有根源环境,因此是适当的方法。 记住在任何一种情况下,sudo都会logging使用shell命令。
*鉴于上述担忧,是否允许用户使用sudo su *
不,不是在我看来。 除了允许它们使用su之外,没有任何实际的好处,除非它们不需要root密码。
或su – 所有?
由于我总是禁用根login,因此su是必要的,并且是平衡的,使得服务器更加安全。
OP似乎提供了很多很好的理由,不允许/鼓励一般用途来运行sudo bash或sudo su -因为它将它切换到一个全能的模式,其内部通常不会被logging。 他们可能会忘记自己正处于这种模式,并且做一些令人遗憾的事情。
因此,让大多数用户限制sudo on/a/particular/command/命令列表sudo on/a/particular/command/运行sudo on/a/particular/command/似乎更安全。 这样每个sudo命令都被logging下来。
你会遇到例外吗? 当然。 对这种例外情况的反应是否会恢复到不受限制的sudo su的懒惰行为 – 可能不会。