sudo /bin/bash 和 sudo su 访问 root 之间的区别

sudo /bin/bash 和 sudo su 访问 root 之间的区别

我知道在终端中至少有两种方法可以升级到 root 权限,我真的很好奇这两种方法在可访问和不可访问的内容方面是否存在差异。另外,这两种方法在安全方面有什么好处或缺点吗?

答案1

su用于使用第二个用户的凭证向第二个用户进行身份验证。

sudo用于使用 sudo 配置文件中编写的一些规则对另一个用户进行身份验证/etc/sudoers。为了确保您的身份与您所假装的身份一致,sudo可以再次询问您的凭据。

sudo更加灵活,允许管理员以安全和有限的方式访问某些脚本命令或编辑文件。

su不太灵活,并且需要知道要模拟的用户的凭据。由于功能简单,因此非常小,并且几乎在所有类 Unix 系统中都可以找到。

su和都sudo在使用Linux的PAMsudo用于身份验证。某些发行版甚至与相比具有不同的 PAM 配置su。因此,我必须使用sudo su才能应用限制,同时也用于sudo身份验证。

su这是我针对 Ubuntu 20.04.1 LTS 的 PAM 配置,重点介绍了和sudoPAM 配置之间的区别:

$ diff -y <(egrep -v '^#|^$' /etc/pam.d/su|sort) <(egrep -v '^#|^$' /etc/pam.d/sudo|sort)
auth       sufficient pam_rootok.so                           <
@include common-account                                         @include common-account
@include common-auth                                            @include common-auth
@include common-session                                       | @include common-session-noninteractive
session    optional   pam_mail.so nopen                       | session    required   pam_env.so readenv=1 envfile=/etc/defau
session       required   pam_env.so readenv=1                 | session    required   pam_env.so readenv=1 user_readenv=0
session       required   pam_env.so readenv=1 envfile=/etc/de <
session    required   pam_limits.so                           <
$

一般来说,文献鼓励使用sudo而不是su,这样你就不需要另一组可能需要共享的密码。但在实践中,你可能会发现自己需要两组密码,su甚至两组密码都用。

学习、测试、阅读文档并使用最适合您情况的那个。

现在给出一些如何使用它们的例子:

sudo fdisk -l     # List all disk MS-DOS and GPT partitions
su -c 'fdisk -l'  # same as above
sudo -i           # Become root
su -              # same as above
sudo bash         # Run a bash shell as root in the current folder, and keep the environment variables
su bash           # same as above
sudo -u oracle ps # Run ps as oracle user
su oracle ps      # same as above
sudo su -         # you should use: sudo -i
sudo -iu oracle   # Start a login shell as oracle user
su - oracle       # same as above

此外susudo在 Linux 上你还可以找到波尔基特其中有pkexec。有关详细信息,请参阅polkit 文档。 例子:

pkexec fdisk -l # It's similar to: sudo fdisk -l

答案2

快速检查手册页会发现,sudo主要用于以其他用户身份启动命令,而su用于通过 PAM“替换用户凭据”。手册页包含有关使用su和执行命令时具体发生的情况的更多详细信息sudo

相关内容