sudo命令的簡單使用

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命令別名包含的命令時不須要輸入當前用戶密碼


寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。

相關文章
相關標籤/搜索