天天看點

使用者身份切換 sudo su

su

su [-lm] [-c 指令 ] [username]
選項與參數 :
- : 單純使用 - 如『 su - 』 以 login-shell 變量檔案讀取方式登入系統 ; 預設切換為 root
-l : 與 - 類似 login-shell
-m :-m 與 -p 一樣 , 表示『使用目前的環境設定 , 而不讀取新使用者的配置檔案』
-c : 接指令
           

總結:

  1. su - username 或 su -l username

    完整切換成新使用者的環境 用 env 檢視環境變量

    PATH/USER/MAIL

  2. su - -c " 指令 "

    僅想要執行一次 root 的指令

  3. 使用 root 切換成為任何使用者時 , 不需要輸入新使用者密碼
  4. 缺點:當主機多人管理時, su 切換成 root ,那每個人都需要知道 root 密碼,不安全。

sudo

sudo [-u user name | #uid] [command]

sudo 執行流程

  1. 在 /etc/sudoers 檔案中檢視 user 是否有 sudo 執行權限
  2. 若有 sudo 執行權限 , 『輸入使用者的密碼』
  3. 密碼正确 , 開始執行 sudo 後續接的指令
  4. root 無需密碼,自己切換自己也無需密碼

添加使用者 sudo 執行權限的方法

(如何讓使用者可以使用 sudo ?)

  1. visudo 可以讓系統檢驗 /etc/sudoers 的文法是否正确
  2. 修改 /etc/sudoers 中的文法

1 )單一使用者可使用 root 所有指令或某些指令

root 		ALL=(ALL) 	ALL <== 找到這一行 ,rh6 在 98 行
username 	ALL=(ALL) 	ALL <== 新增這一行
username 	ALL=(root) 	/bin/touch<== 新增這一行
           

文法解釋:

使用者賬号 登入者的來源主機名 =( 可切換的身份 ) 可下達的指令

root ALL=(ALL) ALL <== 這是預設值

  1. 使用者帳号:系統哪個帳号可以使用 sudo
  2. 登入者的來源主機名:信任使用者 預設 root 可來自任何一部網絡主機
  3. 可切換的身份:該賬号可以切換成誰來下指令 , 末日 root 可以切換成任何人
  4. 可下達的指令:可用該身份下達什麼指令。必需使用絕對路徑 ( 可通過 which\whereis 查詢 )
  5. ALL : 是特殊關鍵詞 , 代表任何身份、任何主機、任何指令

2 )群組和免密碼的功能處理

%wheel ALL=(ALL) ALL<== 找到這一行 ,rh6 在 105 行
%wheel ALL=(ALL) NOPASSWD: ALL<== 找到這一行 ,rh6 在 108 行
           

文法解釋:

  1. % 接群組
  2. wheel 群組内的使用者有使用 sudo 的權限,并可以切換成任何人,執行切換後身份的任何指令
  3. wheel 群組内的使用者切換使用者時不需要輸入自己的密碼

3)有限的權限操作

dabao ALL=(root) /usr/bin/passwd <== 有 bug , dabao 能修改 root 密碼
dabao ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root<== 可以執
行『 passwd 任意字元』 , 但是『 passwd 』和『 passwd root 』這兩個指令不可執行
           
User_Alias DABAO=dabao,jerry,tom,g1,g2,g3
Cmnd_Alias DABAOCOM = !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
DABAO ALL=(root) DABAOCOM
           
  1. sudo 搭配 su 使用
username ALL=(root) /bin/su -
sudo su - <==sudo -u root su -l root