su - Arch Linux 中文维基

跳至內容

# su

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 su，最近一次同步於 2022-07-15，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Users and groups
- sudo
- List of applications/Security#Privilege elevation

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 命令的習慣。它有兩個作用：

1. 通過登錄至目標用戶，從當前工作目錄切換到目標用戶的主目錄（比如切換到 root 用戶就是 `/root`）。
2. 根據目標用戶的首選設置（比如 `~/.bashrc` 或是 bash shell 的其他配置文件） 切換到目標用戶的環境變量。也就是說，當前工作目錄和環境將會切換到和目標用戶登錄新會話時一樣的目錄和環境（而不是僅接管現有用戶的會話）。

因此，管理員通常應該這樣使用 su：

    $ su -l

添加用戶名 root 結果一樣：

    $ su -l root

對於任何其他用戶（如名為 archie 的用戶），同樣可以做到：

    # su -l archie

你可能希望在 `~/.bashrc` 裡為這個規則添加一個 alias：

    alias su="su -l"

提示：有時你會遇到使用 `su -` 而不是 `su -l` 或 `su --login` 來登錄用戶。不提倡這種簡寫是因為 `-` 操作會遇到解析限制，參閱 su(1) § DESCRIPTION。

### 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

分類：​

- 安全
- 命令

su
新增話題