命令sudo -i和sudo su有什么区别?
它们是一样的吗?
解决方法
它们可能在功能上提供接近相同的东西,但似乎’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 -
如果你区分这两个阶段,你会看到更多的exeve正在为sudo su运行 – .
还有一件事.
sudo -i维护由SUDO设置的额外环境变量.
SUDO_USER=jkrauska SUDO_UID=1000 SUDO_COMMAND=/bin/bash SUDO_GID=1000
sudo su – 破坏那些变量.