su — 切換使用者身份
切換到另一個使用者帳號,預設切換為 root。
語法
su [選項] [使用者]
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-(短橫線)或 -l, --login |
以完整登入 Shell 切換,載入目標使用者的環境 | su - root |
-c 指令 |
以目標使用者身份執行一個指令後返回 | su -c "nginx -t" www-data |
-s Shell |
使用指定的 Shell(而非使用者預設的 Shell) | su -s /bin/bash nobody |
-m, --preserve-environment |
保留當前環境變數 | su -m root |
使用範例
範例 1:切換到 root(完整環境)
使用 - 確保完整載入 root 的環境變數(PATH、HOME 等),推薦用法。
$ su -
Password: (輸入 root 密碼)
root@server:~#
範例 2:切換到其他使用者
切換到 www-data 使用者,常用於測試 Web 應用的執行環境。
$ su - www-data
範例 3:執行單一指令後返回
以 root 執行一個指令後自動返回原帳號,不進入互動式 Shell。
$ su -c "systemctl restart nginx" root
Password: (輸入 root 密碼)
常見錯誤與排錯
su: Authentication failure
- 原因
- 密碼輸入錯誤,或目標帳號已鎖定(如 Ubuntu 的 root)。
- 解法
- Ubuntu 用 sudo -i 代替 su - root。其他系統確認密碼是否正確。