1. 程式人生 > >sudo命令的簡單使用

sudo命令的簡單使用

sudo命令 sudoers

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命令的簡單使用