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