Linux

sudo -i 和 sudo su - 有什麼區別?

  • February 17, 2012

命令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 - 破壞這些變數。

引用自:https://serverfault.com/questions/359856