sudo命令的做用:可以經過受權使某用戶以另外一個用戶的身份運行命令。
shell
# sudo [-u user] COMMAND緩存
命令選項:安全
-V 顯示版本編號網絡
-h 顯示版本編號及指令的使用方式說明ide
-l 顯示出本身(執行sudo的執行者)的權限工具
-v 由於sudo在第一次執行時會詢問當前用戶的密碼以驗證身份,密碼驗證經過後,會創建一個當前用戶的密碼緩存憑據(/etc/sudoers文件配置了timestamp_timeout,這個指令的做用是指定了當前用戶的密碼緩存憑據的保存期限,默認設置爲5分鐘;也就是說當用戶輸入正確密碼後,密碼緩存憑據能有效保存5分鐘,那麼5分鐘以內再使用sudo執行命令就不須要再次輸入密碼,超過5分鐘後密碼緩存憑據就會過時,那麼再次執行sudo命令就須要輸入密碼),這個選項的做用是刷新5分鐘緩存期限,從新計時ui
-k 當即清除密碼緩存憑據,下次執行sudo命令時須要輸入當前用戶密碼spa
-b 把將要執行的指令放到後臺執行ip
-p prompt 能夠更改詢問密碼的提示語,其中%u會替換爲使用者的帳號名稱,%h會顯示主機名稱it
-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命令別名包含的命令時不須要輸入當前用戶密碼
寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。