应该在服务器管理中使用 sudo 还是只使用 su root ?

wea*_*ish 9 unix su root sudo

哪种方法更好?

对于桌面使用,似乎 sudo 更好,因为:

  • 作为普通用户,我可以拥有更一致的历史记录
  • 不需要记住两个密码,当我不经常做管理工作时尤其如此。
  • 安装时无需创建额外的 root 帐户。

但是在服务器管理方面呢?

在服务器中,您通常已经创建了一个 root 帐户,并且您可能经常进行管理工作。所以 sudo 的优势似乎不再成立。

更重要的是,在大多数发行版中,在命令行上配置 su 很容易,只需将用户添加到轮组中即可。(你甚至可以-G wheeluseradding时通过。)因此配置 su 可以很容易地自动化到 shell 脚本中。

但是对于sudo?您需要先添加用户,然后以visudo交互方式运行。这很糟糕,因为您无法将其自动化为 shell 脚本。

(嗯,你可以。例如,

echo '%wheel    ALL=(ALL)   ALL' >> /tmp/sudoers.tmp
cp /etc/sudoers /etc/sudoers.old
visudo -c -f /tmp/sudoers.tmp &&  mv /tmp/sudoers.tmp /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

但至少没有那么容易。)

那么你有什么看法呢?对于服务器环境,您更喜欢 sudo 还是 su root?

rap*_*ink 16

服务器上肯定需要 root 帐户,但我更喜欢授予 sudo 权限,尤其是当机器上有多个用户时,这有几个原因:

  • 我不仅使用 sudo 授予所有命令的所有权限,而且还以特定用户的身份授予特定命令的特定权限。
  • 通过将用户分配到功能组,我可以在 sudoers 中使用这些组来管理他们的权限,而不是单独管理用户。
  • sudo 访问默认记录在 auth.log 中,包括哪些用户在什么时间使用了 sudo。
  • sudo 允许使用一个文件管理多台机器的配置。
  • 每个用户都有自己的密码,因此用户离开时无需更改 root 密码。

至于用脚本管理它,sudo 的新版本支持包含,但我更喜欢使用 puppet 和 set 连接 sudoers 内容的类。

Puppet 还可以与Augeas关联来管理您的 sudoers 文件。

  • 事实上,我没有考虑过多个用户的情况。您是对的,当有多个用户时,sudo 显然是赢家。但是对于单用户,我还是觉得 su 就足够了。PS 感谢您提到木偶。只是以前不知道这么可爱的工具。 (4认同)