終端機畫面顯示程式碼與命令列輸出,代表 Linux 指令操作

← INSIGHTS & PERSPECTIVES | DevOps

Linux切換使用者:su 與 sudo -u 指令完整教學

在 Linux 上切換使用者有兩種主要做法:su - 與 sudo -u。本文用實際終端機範例示範 su 切換使用者、exit 跳回、以及 sudo -u 以指定使用者執行指令,並說明兩者的差異與適用時機。

在 Linux 伺服器管理中,經常需要以不同使用者的身分執行指令或測試權限。這篇文章整理兩種最常用的切換使用者方式:susudo -u,附上實際終端機操作範例,並說明 exit 如何跳回原本的使用者。

如何用 su 切換使用者?

su(switch user)是最直接的切換使用者指令,加上 - 參數會連環境變數一起載入目標使用者的完整登入環境:

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

操作重點:

  • 執行 su - user2 後系統會要求輸入 user2 的密碼(不是自己的)。
  • -(等同 -l / --login)會載入 user2 的家目錄與環境變數;不加 - 則只切換身分、保留原本環境。
  • 操作完輸入 exit 或按 Ctrl+D 就會 logout,回到原本的使用者。

如何用 sudo 以指定使用者執行指令?

如果不想真正登入另一個使用者,可以用 sudo -u 直接以該使用者身分執行單一指令,例如開一個新的 shell:

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

這種方式的前提是自己的帳號在 sudoers 白名單中。與 su 最大的差別在於:sudo 只需要輸入自己的密碼(或設定為免密碼),不需要知道目標使用者的密碼,因此更適合管理者臨時授權或自動化腳本使用。

su 與 sudo -u 有什麼差別?

比較項目su - user2sudo -u user2 <指令>
需要的密碼user2 的密碼自己的密碼(或免密碼)
權限依據目標使用者帳號sudoers 設定
適用情境長時間以該使用者操作單次執行指令或短暫切換
環境變數- 載入完整登入環境可搭配 -i-H 控制
離線方式exit 登出指令執行完即結束

實務上的分工:管理者臨時要幫某個服務帳號跑指令時用 sudo -u;要完整模擬該使用者登入環境除錯時用 su -

常見問題

Qsu 和 su - 有什麼不同?

su user2 只切換使用者身分,保留原本的環境變數與工作目錄;su - user2 會以 login shell 方式載入 user2 完整的環境設定(PATH、家目錄等)。要模擬真正的登入環境時建議加 -

Qsudo -u 需要 root 密碼嗎?

不需要。sudo -u user2 <指令> 驗證的是你自己的密碼(若帳號已設定 NOPASSWD 則連密碼都不用),前提是你的帳號必須被列在 sudoers 中並允許以該使用者執行。

Q為什麼 su 切換後指令找不到或路徑不對?

因為沒有加 -,環境變數(特別是 PATH)仍是原本使用者的設定。改用 su - user2 重新載入完整登入環境即可解決。

Q如何離開 su 切換後的環境?

直接輸入 exit 或按 Ctrl+D,就會結束該 shell 並回到切換前的使用者,終端機會顯示 logout

參考資料

延伸閱讀

最後更新

2026-08-28(原文發布於 2019-09-23,本文保留原始筆記內容並補上 GEO 結構。)

關於作者

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2019-09-23