sudo 登入和提示顯示的差異

sudo 登入和提示顯示的差異

sudo -s和之間有什麼差別sudo -i,為什麼他們給我不同的 shell?它似乎-s將我留在內心bash-i給我sh

在 MacOSX High Sierra 10.13 上,如果我sudo -s在終端機中鍵入並輸入密碼,我會得到 root 作為我的用戶名,但在提示符處帶有美元符號:

user1@mymachine:~$ sudo -s
**root@mymachine:~$**

但如果我輸入sudo -i,我會得到:

user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**

如果我是上面範例中的 root,為什麼我沒有看到井號 # sudo -s?我不是真正的root嗎?
兩者的環境變數是否不同?

答案1

您需要意識到的第一件事是sudo -s相當於sudo -s rootsudo -i相當於sudo -i root。每當您從 sudo 中省略使用者時,它都會假定您的目標是 root 使用者。

sudo -s以目標使用者身分執行 shell,同時sudo -i以目標使用者登入。

每當您執行時,sudo -s您實際上是將 shell 變更為 root 使用者 shell,而每當您執行時,您sudo -i實際上是登出目前使用者並以 root 身分登入。了解這一點很重要,因為每當您將 shell 更改為 root 使用者 shell 時,您仍然會保留使用者匯出資訊。當您執行時,sudo -i您將登出您的使用者並以 root 身分登入。這表示您採用 root 使用者的 shell 配置。

這是不相關的,但你應該避免將用戶更改為 root,因為你可能會意外破壞東西,你應該只對每個需要升級的命令進行 sudo,即使它變得煩人。如果您確實想變更為 root shell,則應該執行該命令su,這將允許您以 root 身分登入。

相關內容