獲得root權限的命令 su和sudo命令

兩個命令都允許你得到root權限。兩者的區別在於如何獲得這個權限。

su(譯者注:switch user的縮寫,有的地方也被看作是substitute user的縮寫)用於以其他用戶的身份來打開一個shell或者登錄界面。當該命令不加任何參數運行時,su命令將假設你想成爲root。當運行該命令時,你將被提示輸入密碼。輸入的密碼即你想切換到的用戶的密碼。

例如,如果我想成爲root,在終端中運行su,我將需要輸入root用戶的密碼。如果運行su bill,我將需要輸入bill的密碼。

當一個密碼輸入後,就像你用被su的用戶名登錄一樣,一個新的shell將出現。你從中運行的任何命令將被認爲是 來自被su的用戶。另外,

su      相當於 su root 命令,su [username]之後只能獲得username的執行權限,不能獲取環境變量。
su -   相當於 su - root 命令,su - [username] 之即能獲得username的執行權限,還能獲得環境變量。


sudo

sudo在一個Ubuntu系統上,直接運行su以成爲root的做法將得不到任何結果。因爲默認狀態下root用戶的並沒有一個可用 的密碼,因此你也就不能輸入一個密碼來獲得權限。這種情況下sudo就有了用武之地了。sudo命令允許你以其他用戶的身份運行一條命令(通常是root 用戶)。其中主要的不同就是你需要輸入的密碼是你自己帳戶的密碼,而不是其他用戶的。這將允許一個系統上的多個管理員不用共享一個密碼。當運行sudo -s時,一個root權限的shell將被打開,與運行su的效果一樣。

在絕大多數情況下,su在任何系統上都存在,即使它不能被直接使用。sudo,與之不同,通常只存在於Debian或者它的衍生髮行版上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章