命令sudo -i
和sudo su -
什么区别?
他们是一样的吗?
他们可能提供function上接近相同的东西,但似乎“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
VS
strace -f -o sudosu sudo su -
如果你不同意这两个方面,你会看到更多的exe文件正在运行sudo su – 。
还有一件事。
sudo -i维护由SUDO设置的额外的环境variables。
SUDO_USER=jkrauska SUDO_UID=1000 SUDO_COMMAND=/bin/bash SUDO_GID=1000
sudo su – 破坏这些variables。
拍摄答案:不,他们不一样。
长的答案: sudo和su – 是完成相同任务的不同程序,即提升到root权限。
su曾经是在Linux系统上成为root的事实上的方式。 但是总是需要分离特权,并留下一些审计信息。 而且,当你做到–你所做的一切都是以根的方式完成的,而且具有这么大的力量是危险的。 这是sudo来救援的地方。
sudo有一些su没有的特征。 sudo中的关键元素是能够以root用户身份运行“one”命令,然后将权限下放到普通用户。 示例:删除由root拥有的文件。
sudo rm /root/someFile
这个命令将擦除文件,因为每次在另一个命令之前使用sudo命令时,sudo都会提升您的root权限。 你运行的下一个命令将像普通用户一样运行(除非你在开头追加了sudo命令)。 这使您可以完成pipe理任务,然后立即删除权限,帮助您避免危险的情况。
sudo还提供了其他好处,比如限制用户可以运行的程序集,logging在sudo下运行的命令等等。 有关更多信息sudo简而言之
当你做su –或sudo –你做同样的事情。 这正在成为根,但请记住su和sudo是完全不同的,并为系统pipe理员提供不同的工具。 就我个人而言,我永远不会运行苏 – 我的帕姆政策禁止它 ,让任何人都无法运行它。 在我的系统中,你总是必须使用sudo来增加额外的好处。
更多信息: 使用和启用sudo