sudo可以代替su吗?

sudo可以代替su吗?

基于 Linux 的系统有很多重复的功能,例如这些系统做同样的事情:

sudo --login --user <user>
sudo su - <user>

sudo-only 方法看起来更优雅。可以没有吗su不破坏太多东西?

答案1

su如果我没记错的话,和之间有一些细微的区别sudo

  • su只允许更改用户 ID(例如成为超级用户)。
  • su允许任何知道另一个用户密码的用户成为该用户,并且无法控制这一点。
  • sudo允许以另一个用户(包括 root)身份运行命令。
  • sudo由文件控制/etc/sudoers

我认为该命令的最初目标sudo是更好地控制谁可以使用 root 权限运行命令,谁不能。当您的系统有多个管理员时,sudo允许以 root 身份运行命令而无需 root 密码,从我的角度来看,这更安全。在许多发行版上,/etc/sudoers允许控制可以使用的用户或组列表sudo

答案2

在使用上,是的,sudo可以完全替代su。但有很多脚本和程序使用su,因此没有办法安全地删除它。许多 Linux 发行版没有预安装 sudo。在脚本中使用 sudo 会使其与这些系统不兼容。正如 Jernej 在他的评论中提到的,su 是 Posix 标准的一部分。这意味着,当您编写脚本时,您应该能够相信,如果您使用的话, su您的脚本将在所有 Posix 兼容的操作系统上运行。

这里是一个参考。

答案3

sudo自动关闭大于调用进程的任何文件描述符>&2- 这可能是一个问题。

整个sudoers事情又是另外一回事了(可以说是不必要的)从久经考验的/etc/passwd基本用户/组 Unix 风格的权限方案中抽象出来,它需要自己的管理。

例如,man growisofs:

如果执行下sudo(8) growisofs拒绝启动。这样做的原因如下。自然growisofs必须访问要记录到 DVD 介质的数据集,或者通过让mkisofs生成间接访问ISO9660如果要记录预先掌握的图像,则可以即时布局或直接布局。在 下执行sudo(8)growisofs有效地授予sudoers对文件系统中任何文件的读取访问权限。growisofs解析$MKISOFS环境变量以确定可执行映像的替代路径这一事实加剧了这种情况mkisofs。这意味着在 下执行sudo(8)growisofs有效地授予sudoers以提升的权限执行他们选择的程序的权利。如果您出于某种原因仍然认为上述内容可以接受并且愿意承担后果,那么请考虑就地运行以下包装器脚本sudo(8)以获取真正的growisofs二进制文件。

    #!/bin/ksh
    unset SUDO_COMMAND
    export MKISOFS=/path/to/trusted/mkisofs
    exec growisofs "$@"

但请注意,上述“解决方法”的建议替代方案实际上是安装growisofs set-root-uid,在这种情况下,它将在访问数据或执行之前放弃特权,mkisofs以防止对数据进行未经授权的访问。

至少su实际上暂时切换用户并保留 Unix 风格的权限。sudo, 另一方面,超越用户。尽管如此,如果你正确地处理这个问题,/etc/sudoers sudo可能在大多数方面都可以完全替代su,并且可以方便地做到这一点 - 以最小的安全成本,因为su提出了大多数相同的安全问题sudo- 也许还有一些自己的安全问题。我认为这是一次精彩的讨论就此主题而言。

但为什么不直接跳过它们然后......

CTRL+ ALT+Fn

login: root

或者...

ssh root@localhost

无论发生什么事反正?

相关内容