su 和 sudo su 的區別
執行該命令,需要輸入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使用者
以下命令效果相同:
- su
- su root
- su -
- su - root
以下命令效果相同:
- su <user>
- su - <user>