理解 Linux 中 sudo 和 su 的差異:完整的初學者指南
理解 Linux 中 sudo 和 su 的差異:完整的初學者指南
在 Linux 系統管理中,sudo 和 su 是兩個最常用於管理用戶權限的命令。雖然兩者都用於獲取提升的(root 級別)權限,但它們的工作方式卻截然不同。許多初學者——甚至一些經驗豐富的用戶——會混淆這兩個命令,這可能導致安全風險或權限錯誤。
在本指南中,我們將詳細說明 sudo 和 su 的實際功能、它們的區別、何時應使用每一個,以及安全使用的最佳實踐。
Linux 中的 su 是什麼?
su 代表 substitute user 或 switch user。它允許您從當前用戶帳戶切換到另一個用戶帳戶,最常見的是 root 用戶。
基本語法
su此命令將您切換到 root 用戶。系統會提示您輸入 root 密碼,而不是您自己的密碼。
您也可以這樣切換到另一個用戶:
su username使用 su 後會發生什麼?
您進入一個新的 shell 會話
您完全成為目標用戶(通常是 root)
所有命令都以完全的 root 權限運行
您將保持在該用戶的環境中,直到您退出
要離開 su 會話:
exitLinux 中的 sudo 是什麼?
sudo 代表 superuser do。它允許被授權的用戶以提升的權限運行單個命令,而無需切換用戶。
基本語法
sudo command範例:
sudo apt update這會以 root 權限運行 apt update,同時保持您以正常用戶登錄。
sudo 的主要特徵
使用您自己的密碼,而不是 root 的
一次執行一個命令
行為會被記錄
權限由 /etc/sudoers 控制
sudo 和 su 之間的核心差異
| 特徵 | su | sudo |
|---|---|---|
| 需要 root 密碼 | ✅ 是 | ❌ 否 |
| 使用當前用戶密碼 | ❌ 否 | ✅ 是 |
| 進入完整的 root 會話 | ✅ 是 | ❌ 否 |
| 僅運行單個命令 | ❌ 否 | ✅ 是 |
| 命令記錄 | ❌ 否 | ✅ 是 |
| 精細的權限控制 | ❌ 否 | ✅ 是 |
| 日常使用更安全 | ❌ 否 | ✅ 是 |
安全影響
su 的安全風險
任何擁有 root 密碼的人都擁有完全的無限制控制權
沒有命令級別的記錄
在共享系統上風險高
如果被攻擊者入侵,攻擊者將獲得永久的 root 會話
sudo 的安全優勢
每個用戶都有個別的權限規則
每個命令都會被記錄
訪問權限有限(默認情況下不是完全的 root)
root 帳戶可以保持禁用狀態
何時應使用 su?
僅在以下情況下使用 su:
您在本地受控環境中工作
您需要完整的 root 環境進行長時間維護
您完全信任擁有 root 密碼的每個人
您正在執行系統恢復任務
範例:
su -(- 會加載完整的 root 環境)
何時應使用 sudo?
在以下情況下使用 sudo:
您在雲伺服器和 VPS 系統上工作
多個用戶共享伺服器
您想要審計日誌
您想遵循 Linux 安全最佳實踐
常見範例:
sudo systemctl restart nginx
sudo ufw allow 443
sudo mount /dev/sdb1 /mnt/data如何將用戶添加到 sudo 群組
在大多數基於 Ubuntu/Debian 的系統上:
sudo usermod -aG sudo username在 CentOS/RHEL 上:
sudo usermod -aG wheel username之後,該用戶可以使用 sudo。
您可以使用 sudo 成為 root 嗎?
可以,使用:
sudo -i或
sudo su這會給您一個 root shell,但訪問仍然通過 sudo 日誌進行跟蹤,這比 su 更安全。
使用 sudo 和 su 的最佳實踐
✅ 禁用伺服器上的直接 root 登錄
✅ 對於日常管理使用 sudo
✅ 給用戶最小所需的權限
✅ 絕不要分享 root 密碼
✅ 定期審計 /var/log/auth.log
VPS 和雲環境中的 sudo 與 su
在大多數 VPS 平台和雲伺服器上:
默認情況下通常禁用 root 登錄
用戶被授予 sudo 訪問權限
這使得提供商能夠:
增強安全性
跟蹤管理活動
減少濫用風險
如果您正在管理多個伺服器(例如海外 VPS 部署),這種設置現在已成為行業標準。
常見問題
- 為什麼 Linux 現在更喜歡 sudo 而不是 su?
因為 sudo 提供了更好的安全性、命令跟蹤和用戶級控制,而不暴露 root 密碼。
- 總是使用 su 是否危險?
是的。su 給予無限制的 root 訪問權限,並且不留下任何執行過的命令的痕跡。
- 如果我忘記 root 密碼但有 sudo 會怎樣?
您可以使用以下命令重置 root 密碼:
sudo passwd root- 我可以完全禁用 root 用戶嗎?
可以。在 Ubuntu 上:
sudo passwd -l root- 為什麼我的 VPS 不允許 su 但允許 sudo?
因為提供商出於安全原因禁用了直接的 root 登錄,並強制通過 sudo 進行權限提升。
最後的想法
如果您在現代環境中管理 Linux 伺服器——特別是 VPS 和雲基礎設施——sudo 始終是系統管理的推薦和更安全的選擇。su 仍然有其存在的價值,但應謹慎使用,僅在絕對必要時使用。
理解這一差異不僅能改善您的工作流程,還能保護您的伺服器免受代價高昂的安全錯誤。