Answers:
它们在功能上可能接近相同的东西,但似乎'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
sudo su-产生此进程树
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。在sudo中没有指定用户名的情况下运行su会将当前用户更改为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-破坏这些变量。
镜头答案:不,他们不一样。
长答案: sudo和su-是完成相同任务的不同程序,这使您拥有root特权。
su曾经是在Linux系统上扎根的事实上的方法。但是,始终需要分离权限并留下一些审核信息。另外,当您执行su时-您所做的所有操作都是以root身份完成的,拥有那么多功能很危险。sudo就是在这里进行营救的。
sudo具有su没有的一些特征。sudo的关键要素是它能够以root用户身份运行“一个”命令,然后将特权授予普通用户。 示例:删除root拥有的文件。
sudo rm /root/someFile
该命令将删除文件,因为每次使用sudo命令之前,sudo都会将您提升为root用户。您运行的下一个命令将像普通用户一样运行(除非您在开头添加sudo命令)。这使您可以完成管理任务,然后立即放弃特权,从而避免出现危险情况。
sudo还提供了其他好处,例如限制用户可以运行的程序集,记录在sudo下运行的命令等。有关更多信息sudo简而言之
当您执行su-或sudo -i时,您也会执行相同的操作。那已经成为根,但是请记住su和sudo完全不同,它们作为系统管理员为您提供了不同的工具。我个人从不运行su-并且我的pam策略禁止运行su,并且不允许任何人运行它。在我的系统中,您总是必须使用sudo原因来获得额外的好处。
更多信息:使用和启用sudo
su
也可以只运行一个命令:su -c 'command ...'
sudo -i
和sudo su -
之间的区别,而不是sudo
和之间的区别su
。
sudo su -
没有意义吗?