https://www.cnblogs.com/tianyuchen/p/6141752.html
sudo : 暫時切換到超級用戶模式以執行超級用戶權限,提示輸入密碼時該密碼爲當前用戶的密碼,而不是超級賬戶的密碼。不過有時間限制,Ubuntu默認爲一次時長15分鐘。
su : 切換到某某用戶模式,提示輸入密碼時該密碼爲切換後賬戶的密碼,用法爲“su 賬戶名稱”。如果後面不加賬戶時系統默認爲root賬戶,密碼也爲超級賬戶的密碼。沒有時間限制。
sudo -i: 爲了頻繁的執行某些只有超級用戶才能執行的權限,而不用每次輸入密碼,可以使用該命令。提示輸入密碼時該密碼爲當前賬戶的密碼。沒有時間限制。執行該命令後提示符變爲“#”而不是“$”。想退回普通賬戶時可以執行“exit”或“logout” 。
其實,還有幾個類似的用法:
sudo /bin/bash : 這個命令也會切換到root的bash下,但不能完全擁有root的所有環境變量,比如PATH,可以擁有root用戶的權限。這個命令和 sudo -s 是等同的。
sudo -s : 如上
sudo su : 這個命令,也是登錄到了root,但是並沒有切換root的環境變量,比如PATH。
sudo su - : 這個命令,純粹的切換到root環境下,可以這樣理解,先是切換到了root身份,然後又以root身份執行了 su - ,這個時候跟使用root登錄沒有什麼區別。這個結果貌似跟sudo -i 的效果是一樣的,但是也有不同,sudo 只是臨時擁有了root的權限,而su則是使用root賬號登錄了linux系統。
所以,我們再來總結一下:
sudo su - 約等於 sudo -i
sudo -s 完全等於 sudo /bin/bash 約等於 sudo su
sudo 終究被一個"臨時權限的帽子"扣住,不能等價於純粹的登錄到系統裏。
sudo su - 和 su - xxx 切換時也會切換所有環境變量
sudo su 和 su xxx 切換時不會切換環境變量
參考地址 http://ask.apelearn.com/question/6899