sudo -i 和 sudo su - 有什么区别

sudo -i 和 sudo su - 有什么区别

sudo -i命令和有什么区别sudo su -

它们是一样的吗?

答案1

它们可能提供接近相同的功能,但“sudo -i”似乎更轻量,并在您的环境中保留了一些方便的反向引用。

您可以通过查看“ps auxf”(f 为您提供森林视图)来查看额外的进程

sudo-i 产生此流程树

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

须藤苏-产生此流程树

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

请注意,它们是从同一个 bash 进程 pid 4482 开始的,但是 su - 似乎产生了另一个步骤。)

您的第一个“sudo”已将您的访问级别提升至 root。运行 su 而不在 sudo 中指定用户名会将当前用户更改为 root 两次。

调查此问题的另一个方法是使用 strace -f 运行两个命令。

strace -f -o sudoi sudo -i

对比

strace -f -o sudosu sudo su -

如果您比较这两个 strace,您将看到更多为 sudo su - 运行的 exeve。

还有一件事。

sudo-i维护 SUDO 设置的额外环境变量。

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - 破坏这些变量。

答案2

射击答案:不,它们不一样。

长答案:sudo 和 su - 是完成相同任务的不同程序,即将您提升到 root 权限。

曾经是 Linux 系统上成为 root 的事实上的方式。然而,总是需要分离权限并留下一些审计信息。此外,当你这样做时你所做的一切都是以 root 身份进行的,拥有这么大的权限是很危险的。这时 sudo 就派上用场了。

须藤具有一些特点不是。sudo 的关键要素是它能够以 root 身份运行“一个”命令,然后将权限移交给普通用户。 示例:删除 root 拥有的文件。

sudo rm /root/someFile

此命令将删除该文件,因为每次您在其他命令之前使用 sudo 命令时,sudo 都会将您提升为 root 权限。您运行的下一个命令将像普通用户一样运行(除非您在开头附加 sudo 命令)。这允许您完成管理任务,然后立即放弃特权,帮助您避免危险情况。

sudo 还提供了其他好处,例如限制用户可以运行的程序集、记录在 sudo 下运行的命令等。有关更多信息sudo 简介

当你这样做或者sudo-i你做同样的事情。这是成为 root,但请记住须藤完全不同,并为您提供不同的系统管理员工具。我个人从不运行 su - 而我的pam 政策禁止它,不允许任何人运行它。在我的系统中,您总是必须使用 sudo,因为它有额外的好处。

更多信息:使用和启用 sudo

相关内容