su
外觀
su 核心應用程式(替代用戶)用來假設系統中另一個用戶的身份,默認為root。
參閱 PAM 可以找到配置 su 其他特性的方法。
安裝[編輯 | 編輯原始碼]
su 是 util-linux包 包的一部分。
用法[編輯 | 編輯原始碼]
要切換到其他用戶身份,將要切換的用戶名傳遞給 su,像這樣:
$ su username
默認情況下,當以普通用戶身份運行時,系統會提示您輸入要成為的用戶的密碼。以root身份運行 su 時,不需要密碼。
如果沒有傳入用戶名,su 默認切換為 root 用戶,要求輸入的密碼也應該是 root 用戶的密碼。
更多信息,請參閱su(1)
提示和技巧[編輯 | 編輯原始碼]
「登錄至」其他用戶[編輯 | 編輯原始碼]
su 的默認行為是保持在當前目錄中並保持原始用戶的環境變量(而不是切換到新用戶的環境變量)。
這一特性的優劣需要注意以下重要的對比因素:
- 系統管理員可以使用普通用戶的 shell 而不是自己的。特別是在有些時候,解決用戶問題的最有效的方法,就是登錄到該用戶的帳戶以重現問題或進行調試。
- 但是通常情況下,root 用戶不能登錄普通用戶的 shell 並使用該用戶的環境變量進行操作,而是用自己的環境變量操作,這在很多情況下是不可取的,甚至是危險的。在無意中使用普通用戶的 shell 時,root 可能會安裝程序,或對系統進行其他更改,而這些更改與使用 root 帳戶時所做的結果不同。例如,可能會安裝某個程序,使得普通用戶能夠意外地損壞系統或未經授權訪問某些數據。
因此,建議系統管理員以及被授權使用 su 的任何其他用戶(建議只有極少數用戶),始終保持用 -l
或 --login
選項運行 su 命令的習慣。它有兩個作用:
- 通過登錄至目標用戶,從當前工作目錄切換到目標用戶的主目錄(比如切換到 root 用戶就是
/root
)。 - 根據目標用戶的首選設置(比如
~/.bashrc
或是 bash shell 的其他配置文件) 切換到目標用戶的環境變量。也就是說,當前工作目錄和環境將會切換到和目標用戶登錄新會話時一樣的目錄和環境(而不是僅接管現有用戶的會話)。
因此,管理員通常應該這樣使用 su:
$ su -l
添加用戶名 root 結果一樣:
$ su -l root
對於任何其他用戶(如名為 archie 的用戶),同樣可以做到:
# su -l archie
你可能希望在 ~/.bashrc
裡為這個規則添加一個 alias:
alias su="su -l"
su 和 wheel 用戶組[編輯 | 編輯原始碼]
BSD su 默認僅允許 wheel
用戶組成員切換至 root 身份。而 GNU su 默認沒有這一特性,可以使用 PAM 來模擬這一特性。將 /etc/pam.d/su
和 /etc/pam.d/su-l
中相應的行取消注釋:
auth required pam_wheel.so use_uid