指令名稱:sudo
使用權(quán)限:在 /etc/sudoers 中有出現(xiàn)的使用者 使用方式:sudo -V sudo -h sudo -l sudo -v sudo -k sudo -s sudo -H sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s sudo command 說明:以系統(tǒng)管理者的身份執(zhí)行指令,也就是說,經(jīng)由 sudo 所執(zhí)行的指令就好像是 root 親自執(zhí)行 參數(shù): -V 顯示版本編號 -h 會顯示版本編號及指令的使用方式說明 -l 顯示出自己(執(zhí)行 sudo 的使用者)的權(quán)限 -v 因為 sudo 在第一次執(zhí)行時或是在 N 分鐘內(nèi)沒有執(zhí)行(N 預(yù)設(shè)為五)會問密碼,這個參數(shù)是重新做一次確認(rèn),如果超過 N 分鐘,也會問密碼 -k 將會強(qiáng)迫使用者在下一次執(zhí)行 sudo 時問密碼(不論有沒有超過 N 分鐘) -b 將要執(zhí)行的指令放在背景執(zhí)行 -p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的帳號名稱, %h 會顯示主機(jī)名稱 -u username/#uid 不加此參數(shù),代表要以 root 的身份執(zhí)行指令,而加了此參數(shù),可以以 username 的身份執(zhí)行指令(#uid 為該 username 的使用者號碼) -s 執(zhí)行環(huán)境變數(shù)中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell -H 將環(huán)境變數(shù)中的 HOME (家目錄)指定為要變更身份的使用者家目錄(如不加 -u 參數(shù)就是系統(tǒng)管理者 root ) command 要以系統(tǒng)管理者身份(或以 -u 更改為其他人)執(zhí)行的指令 范例: sudo -l 列出目前的權(quán)限 sudo -V 列出 sudo 的版本資訊 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 以root身份執(zhí)行指令 名稱
sudo - 以超級使用者 (superuser; root) 的身分執(zhí)行指令
visudo - 編輯 sudoers 檔案
語法
sudo command
描述
Sudo 允許經(jīng)過同意的使用者以超級使用者的身分執(zhí)行指令。 Sudo 參考/etc/sudoers 這個檔案來判定誰是被授權(quán)的使用者。Sudo 將會提示使用者輸入密碼來啟始一段 N 分鐘的允許時間(其中 N 是在安裝的時候定義的且預(yù)設(shè)值為 5 分鐘)。
Sudoers 這個檔案是由一個選擇性的主機(jī)別名 (host alias) 節(jié)區(qū),一個選擇性的指令別名 (command alias) 節(jié)區(qū)以及使用者說明 (user specification)節(jié)區(qū)所組成的。所有的指令別名或主機(jī)別名必須需以他們自己的關(guān)鍵字作為開始 (Host_Alias/Cmnd_Alias)。注意,只有第一次使用者(在使用者說明節(jié)區(qū)里有記錄的使用者)使用時會有說明。
使用者說明節(jié)區(qū)格式: 使用者 接取群組 [: 接取群組 ] ...
接取群組 ::= 主機(jī)象徵 = [op]指令象徵 [,[op]指令象徵] ... 主機(jī)象徵 ::= 一個小寫的主機(jī)名稱或主機(jī)別名。 指令象徵 ::= 一個指令或指令別名。 op ::= 邏輯的 ! 否定運算元。
主機(jī)別名節(jié)區(qū)格式: Host_Alias 主機(jī)別名 = 主機(jī)列表
Host_Alias ::= 這是一個關(guān)鍵字。 主機(jī)別名 ::= 一個大寫的別名。 主機(jī)列表 ::= 以逗號間隔的一些主機(jī)名稱。
指令別名節(jié)區(qū)格式: Cmnd_Alias 指令別名 = 指令列表
Cmnd_Alias ::= 這是一個關(guān)鍵字。 指令別名 ::= 一個大寫的別名。 指令列表 ::= 以逗號間隔的一些指令。
所有在 # 符號後面的文字都會被當(dāng)作是注解。 太長的行可以使用倒斜線 字元來分成新的行。 保留的別名 ALL 在 {Host,Cmnd}_Alias 里都可以使用。 不要用 ALL 來定義一個別名,這個別名無效。 注意到 ALL 暗示全部的主機(jī)跟指令。 你可以使用這個語法從整個范圍中減掉一些項目:
user host=ALL,!ALIAS1,!/etc/halt...
范例
# Host alias specification Host_Alias HUB=houdini.rootgroup.com: REMOTE=merlin,kodiakthorn,spirit Host_Alias MACHINES=kalkan,alpo,milkbones Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit
# Command alias specification Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh Cmnd_Alias MISC=/bin/rm,/bin/cat: SHUTDOWN=/etc/halt,/etc/shutdown
# User specification britt REMOTE=SHUTDOWN:ALL=LPCS robh ALL=ALL,!SHELLS nieusma SERVERS=SHUTDOWN,/etc/reboot: HUB=ALL,!SHELLS jill houdini.rootgroup.com=/etc/shutdown,MISC markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt billp ALL=/usr/local/bin/top:MACHINES=SHELLS davehieb merlin=ALL:SERVERS=/etc/halt: kodiakthorn=ALL
上面的 sudoers 說明檔案是由 4 個主機(jī)別名說明,4 個指令別名說明以及 7 個使用者說明所組成的。Britt 被允許在遠(yuǎn)端機(jī)器 (merlin, kodiakthorn, 還有 spirit) 上執(zhí)行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及/usr/ucb/lprm 。Rohn 被允許在任何機(jī)器上執(zhí)行除了 SHELL 指令群以外的任何指令。Jill 被允許在 houdini 上執(zhí)行 /etc/shotdown, /bin/rm, 以及/bin/cat 。Davehieb 可以在 merlin 以及 kodiakthorn 上執(zhí)行任何指令并且可以 halt SERVERS 。
Sudoers 檔案應(yīng)該用 visudo 指令編輯,它會鎖住該檔并且做文法檢查。這提供了一個可以避免愚蠢文法錯誤的機(jī)制。
Sudo 被設(shè)計成經(jīng)由 4.3 BSD syslogging 來記錄,但是如果真的想要的話還是可以記錄到一個檔案來取代。
如果一個沒有被授權(quán)的使用者執(zhí)行了 sudo 的話,將會有一封 mail 從該使用者寄送到當(dāng)?shù)氐氖跈?quán)者處(在安裝的時候定義的)。
所有的設(shè)定都是在安裝的時后定義的,從 sudo.h 含入檔及 Makefile 取得。
未來加強(qiáng)
允許巢狀的主機(jī)以及指令別名。 允許在 sudoers 檔案中使用 host specifier 以便使用全區(qū)符號 (user ALL,!SERVERS, ... = commands) 。 允許在 sudores 檔案里的使用者別名(就如同主機(jī)/指令別名一樣)。 使 visudo 對 sudoers 檔案做更廣泛的檢查。
檔案
/etc/sudoers 經(jīng)授權(quán)的使用者檔案。 /etc/stmp visudo 的 lock file 。 /usr/local/bin/sudo sudo 的執(zhí)行檔。 /usr/local/etc/visudo 修改 sudoers 檔案的工具。
|