溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

su、sudo、sudo su、sudo -i有什么區別

發布時間:2022-01-27 15:14:47 來源:億速云 閱讀:293 作者:iii 欄目:開發技術
# su、sudo、sudo su、sudo -i有什么區別

在Linux系統管理中,`su`、`sudo`、`sudo su`和`sudo -i`是切換用戶或提升權限的常用命令。它們看似功能相似,但在使用場景、安全性和環境變量處理上存在顯著差異。本文將深入解析它們的區別,幫助讀者根據實際需求選擇合適的方式。

---

## 1. su:切換用戶的基礎命令

### 基本功能
`su`(Substitute User)是Linux中用于切換用戶身份的基礎命令。默認情況下,不指定用戶名時切換到root用戶:
```bash
su

需輸入目標用戶的密碼(默認為root密碼)。

特點

  • 密碼驗證:需知道目標用戶的密碼(默認root)
  • 環境變量:保留當前用戶的環境(如PATH、HOME等)
  • 工作目錄:不自動切換到目標用戶的家目錄

示例

su - username  # 切換用戶并加載其環境變量
su             # 切換到root(需root密碼)

2. sudo:以其他用戶身份執行命令

基本功能

sudo(SuperUser Do)允許授權用戶以其他用戶(默認root)身份執行命令,無需知道目標用戶密碼:

sudo command

需輸入當前用戶的密碼(由/etc/sudoers配置決定權限)。

特點

  • 密碼驗證:需輸入當前用戶密碼(非root密碼)
  • 權限控制:通過/etc/sudoers精細控制可執行的命令
  • 環境變量:默認保留當前用戶環境(可通過配置修改)
  • 審計日志:所有sudo操作會被記錄(/var/log/auth.log

示例

sudo apt update       # 以root身份執行apt更新
sudo -u mysql ls /var/lib/mysql  # 以mysql用戶執行命令

3. sudo su:結合sudo和su的混合用法

基本功能

sudo su通過sudo權限調用su命令,實現無需知道root密碼的切換:

sudo su

特點

  • 密碼驗證:輸入當前用戶密碼(非root密碼)
  • 環境變量:默認保留當前用戶環境(類似su
  • 權限繼承:依賴sudo的授權規則

與純su的區別

對比項 su sudo su
密碼要求 root密碼 當前用戶密碼
權限控制 受sudoers限制

4. sudo -i:模擬完整登錄環境

基本功能

sudo -i(–login)模擬用戶登錄過程,生成完整的登錄環境:

sudo -i

特點

  • 環境變量:加載目標用戶的環境(如/etc/profile~/.profile
  • 工作目錄:自動切換到目標用戶的家目錄(如/root
  • 密碼驗證:輸入當前用戶密碼(非root密碼)

sudo su -的等價性

sudo -i          # 等同于 sudo su - root
sudo -i username # 以指定用戶登錄

橫向對比總結

命令 密碼要求 環境加載 家目錄切換 權限控制 典型使用場景
su 目標用戶密碼 保留當前環境 已知root密碼時的快速切換
sudo 當前用戶密碼 保留當前環境 精細控制 單條命令的臨時提權
sudo su 當前用戶密碼 保留當前環境 受sudoers限制 需要交互式shell但不想改環境
sudo -i 當前用戶密碼 加載目標環境 受sudoers限制 需要完整root會話

安全最佳實踐

  1. 避免直接使用su
    因為需要共享root密碼,且無法審計具體操作。

  2. 優先使用sudo
    通過/etc/sudoers限制權限,例如:

    username ALL=(ALL) NOPASSWD: /usr/bin/apt
    
  3. 謹慎使用sudo su
    可能繞過某些sudo的限制(如NOEXEC)。

  4. 會話管理推薦sudo -i
    當需要完整環境時,比sudo su -更符合標準。


常見問題解答

Q:為什么sudo -isudo su更推薦?
A:sudo -i直接調用login shell,行為更可預測,且不會被su的別名或配置影響。

Q:如何讓sudo保留部分環境變量?
A:在/etc/sudoers中添加:

Defaults env_keep += "http_proxy HOME"

Q:sudo bashsudo -i有什么區別?
A:sudo bash只是啟動bash,不會加載登錄環境或切換家目錄。


通過理解這些命令的差異,系統管理員可以更安全高效地管理權限。記?。?strong>最小權限原則是Linux系統安全的黃金準則。 “`

注:本文約1200字,采用Markdown格式,包含代碼塊、表格和層級標題。實際字符數可能因渲染環境略有差異。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女