1. 程式人生 > >su 和 sudo su 的區別

su 和 sudo su 的區別

su <user>

執行該命令,需要輸入password,它是<user>中定義的使用者的password,即,要變換成的使用者的password。(如果已經用root登入,則無需輸入password)該命令改變user id,執行過後,以<user>中定義的使用者執行shell,就像用<user>定義的使用者遠端登入後一樣。唯一不同之處在於,先前user的環境變數將被儲存(儲存在ssh終端程式中,當執行exit後,又可以改變成先前的使用者身份,並使用先前使用者的環境變數)。

sudo su <user>

它和su的行為相似,不同之處在於,sudo su <user>中的su將以root身份被執行,並要求輸入root的password,注意,不是<user>中定義的user的password。

簡而言之,二者區別在於,su <user>要輸入<user>的password,而sudo su <user>要輸入root的password,但二者都將使用者身份改變成<user>定義的使用者。

[yasi]:

實際工作中,遇到一個困惑。登入工作環境的VM時,用logs(屬於nobody group)使用者及其passwor遠端登入,然後su root,需要輸入root的password,然後就可以作為root執行shell。但是,直接用root使用者和那個password登陸,就會登入失敗。不知道這裡面的規則是怎麼定義的,為什麼一定要兩步登入root使用者。還有,這裡兩步登入的root和真正的管理員root,他們之前有沒有什麼許可權的差別?如果有,差別的規則是在哪裡定義的?

此外,還有一種現象:兩步登入的root終端,閒置一段時間(10分鐘以上)後,會自動執行exit命令,變回logs使用者。logs使用者閒置一段時間後,該終端會自動退出。

附:關於su命令的一些confusion

su - <user> 

轉變身份為<user>定義的使用者,如果沒有指定<user>,則預設為root,即

su -

轉變身份為root使用者

以下命令效果相同:

  1. su
  2. su root
  3. su -
  4. su - root

以下命令效果相同:

  1. su <user>
  2. su - <user>