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

命令sudo -isudo 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 你做同样的事情。 这正在成为根,但请记住susudo是完全不同的,并为系统pipe理员提供不同的工具。 就我个人而言,我永远不会运行苏 – 我的帕姆政策禁止它 ,让任何人都无法运行它。 在我的系统中,你总是必须使用sudo来增加额外的好处。

更多信息: 使用和启用sudo