sudo命令的簡單使用
# sudo [-u user] COMMAND
命令選項:
-V 顯示版本編號
-h 顯示版本編號及指令的使用方式說明
-l 顯示出自己(執行sudo的執行者)的權限
-v 因為sudo在第一次執行時會詢問當前用戶的密碼以驗證身份,密碼驗證通過後,會建立一個當前用戶的密碼緩存憑據(/etc/sudoers文件配置了timestamp_timeout,這個指令的作用是指定了當前用戶的密碼緩存憑據的保存期限,默認設置為5分鐘;也就是說當用戶輸入正確密碼後,密碼緩存憑據能有效保存5分鐘,那麽5分鐘之內再使用sudo執行命令就不需要再次輸入密碼,超過5分鐘後密碼緩存憑據就會過期,那麽再次執行sudo命令就需要輸入密碼),這個選項的作用是刷新5分鐘緩存期限,重新計時
-k 立即清除密碼緩存憑據,下次執行sudo命令時需要輸入當前用戶密碼
-b 把將要執行的指令放到後臺執行
-p prompt 可以更改詢問密碼的提示語,其中%u會替換為使用者的賬號名稱,%h會顯示主機名稱
-u username/$uid 不加此參數,代表要以root的身份執行命令,而增加了此參數,可以以username的身份執行命令(#uid為該username的使用者uid)
-s 執行環境變數中的SHELL為執行的shell,或是/etc/passwd裏所指定的shell
-H 執行環境變數中的HOME(家目錄)指定為要變更身份的使用者家目錄(如不加-u參數就是系統管理者root)command要以系統管理者身份(或以-u更改為其他人)執行的指令
配置文件:/etc/sudoers
使用專用的配置工具來進行配置:visudo
因為sudoers文件為了其安全性,默認是沒有寫權限的
sudoers文件配置選項
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
即:
who where (whom) which
root即who,表示運行命令者的身份,user
ALL即where,表示通過哪些主機,host
(ALL)即(whom),表示以哪個用戶身份,runas
ALL即which,表示運行哪些命令,command
%wheel,表示wheel組
user的支持格式:
username,用戶名
#uid 用戶uid,#號是固定格式,不可省略
user_alias,用戶別名
%group_name,用戶組名,%號是固定格式,不可省略
%#gid,用戶組gid,%#是固定格式,不可省略
host的支持格式:
ip,ip地址
hostname,主機名
netaddr[/netmask],網絡地址,網段
command:
command name,命令名,需要註意的是,這裏的命令必須攜帶絕對地址路徑
directory,目錄名,即目錄內的所有命令
sudoedit,編輯sudoers文件本身,即賦予編輯sudoers文件的權限
Cmnd_Alias,命令別名
別名機制:
註意:別名必須為全大寫字母
user_alias用戶別名
例:User Alias NETADMIN = netuser1,netuser2
Cmnd_Alias命令別名
例:Cmnd_Alias NETADMINCMNDS = /usr/sbin/ip,/usr/sbin/fdisk
別名名單中可以使用通配符:
例:Cmnd_Alias USERADMINCMNDS = /usr/bin/passwd [a-z]*,!/usr/bin/passwd root
以上表示USERADMINCMNDS命令別名中,可以使用passwd命令,但是必須帶參數,且不能使用passwd root,也就是不能更改root用戶密碼
用戶別名和命令別名可以直接在sudo文件中應用
例:NETADMIN ALL=(root) NETADMINCMNDS
特殊用法:
NOPASSWD:USERADMINCMDS
USERADMIN ALL=(root) NOPASSWD:USERADMINCMNDS
表示執行USERADMINCMNDS命令別名包含的命令時不需要輸入當前用戶密碼
寫的比較潦草,如有遺漏錯誤和爭議之處,歡迎大家的批評指正和討論,謝謝。
sudo命令的簡單使用