Linux
sudo -i 和 sudo su - 有什麼區別?
命令
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
對比
strace -f -o sudosu sudo su -
如果你區分這兩個 strace,你會看到更多的 exeve 正在為 sudo su - 執行。
還有一件事。
sudo -i維護由 SUDO 設置的額外環境變數。
SUDO_USER=jkrauska SUDO_UID=1000 SUDO_COMMAND=/bin/bash SUDO_GID=1000
sudo su - 破壞這些變數。