sudo命令的簡單使用

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


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章