歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Linux命令Man解釋:SUDO(8):以root身份執行指令

名稱 sudo-以超級使用者(superuser;root)的身分執行指令 visudo-編輯sudoers檔案 語法 sudocommand 描述 Sudo允許經過同意的使用者以超級使用者的身分執行指令。Sudo參考/etc/sudoers這個檔案來判定誰是被授權的使用者。Sudo將會提示使用者輸入密碼來啟始一 名稱 
 
       sudo - 以超級使用者 (superuser; root) 的身分執行指令 
 
       visudo - 編輯 sudoers 檔案 
 
語法 
 
       sudo command 
 
描述 
 
       Sudo 允許經過同意的使用者以超級使用者的身分執行指令。 Sudo 參考/etc/sudoers 這個檔案來判定誰是被授權的使用者。Sudo 將會提示使用者輸入密碼來啟始一段 N 分鐘的允許時間(其中 N 是在安裝的時候定義的且預設值為 5 分鐘)。 
 
       Sudoers 這個檔案是由一個選擇性的主機別名 (host alias) 節區,一個選擇性的指令別名 (command alias) 節區以及使用者說明 (user specification)節區所組成的。所有的指令別名或主機別名必須需以他們自己的關鍵字作為開始 (Host_Alias/Cmnd_Alias)。注意,只有第一次使用者(在使用者說明節區裡有記錄的使用者)使用時會有說明。 
 
       使用者說明節區格式: 
         使用者 接取群組 [: 接取群組 ] ... 
 
             接取群組 ::= 主機象徵 = [op]指令象徵 [,[op]指令象徵] ... 
             主機象徵 ::= 一個小寫的主機名稱或主機別名。 
             指令象徵 ::= 一個指令或指令別名。 
                   op ::= 邏輯的 '!' 否定運算元。 
 
       主機別名節區格式: 
         Host_Alias 主機別名 = 主機列表 
 
             Host_Alias ::= 這是一個關鍵字。 
               主機別名 ::= 一個大寫的別名。 
               主機列表 ::= 以逗號間隔的一些主機名稱。 
 
       指令別名節區格式: 
         Cmnd_Alias 指令別名 = 指令列表 
 
             Cmnd_Alias ::= 這是一個關鍵字。 
               指令別名 ::= 一個大寫的別名。 
               指令列表 ::= 以逗號間隔的一些指令。 
 
       所有在 '#' 符號後面的文字都會被當作是注解。 
       太長的行可以使用倒斜線 '\' 字元來分成新的行。 
       保留的別名 'ALL' 在 {Host,Cmnd}_Alias' 裡都可以使用。 
           不要用 'ALL' 來定義一個別名,這個別名無效。 
           注意到 'ALL' 暗示全部的主機跟指令。 
           你可以使用這個語法從整個范圍中減掉一些項目: 
 
             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 個主機別名說明,4 個指令別名說明以及 7 個使用者說明所組成的。Britt 被允許在遠端機器 (merlin, kodiakthorn, 還有 spirit) 上執行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及/usr/ucb/lprm 。Rohn 被允許在任何機器上執行除了 SHELL 指令群以外的任何指令。Jill 被允許在 houdini 上執行 /etc/shotdown, /bin/rm, 以及/bin/cat 。Davehieb 可以在 merlin 以及 kodiakthorn 上執行任何指令並且可以 halt SERVERS 。 
 
       Sudoers 檔案應該用 visudo 指令編輯,它會鎖住該檔並且做文法檢查。這提供了一個可以避免愚蠢文法錯誤的機制。 
 
       Sudo 被設計成經由 4.3 BSD syslogging 來記錄,但是如果真的想要的話還是可以記錄到一個檔案來取代。 
 
       如果一個沒有被授權的使用者執行了 sudo 的話,將會有一封 mail 從該使用者寄送到當地的授權者處(在安裝的時候定義的)。 
 
       所有的設定都是在安裝的時後定義的,從 sudo.h 含入檔及 Makefile 取得。 
 
未來加強 
 
       允許巢狀的主機以及指令別名。 
       允許在 sudoers 檔案中使用 host specifier 
           以便使用全區符號 (user ALL,!SERVERS, ... = commands) 。 
       允許在 sudores 檔案裡的使用者別名(就如同主機/指令別名一樣)。 
       使 visudo 對 sudoers 檔案做更廣泛的檢查。 
 
檔案 
 
       /etc/sudoers                 經授權的使用者檔案。 
       /etc/stmp                    visudo 的 lock file 。 
       /usr/local/bin/sudo          sudo 的執行檔。 
       /usr/local/etc/visudo        修改 sudoers 檔案的工具。 
 
作者 
 
       Jeff Nieusma                  
       David Hieb                    
 
DISCLAIMER 
 
       這個程式的發行是因為希望它有用處,但是沒有任何保證;甚至沒有對特定用途的銷售或適合有隱含的保證。參閱 GNU 的 General  Public License 以獲得更詳細的資訊。 
 
       你應該會連同這個程式一起接收到一份 GNU General Public License;如果沒有的話,寫封信給 Free Software Foundation, Inc., 675  Mass  Ave, 
       Cambridge,  MA 02139, USA 。 
 
警告 
 
       如果使用者可以存取 shell scripts 指令群或允許 shell escapes 的話,沒有簡單的辦法可以防止使用者得到 root shell。 
 
參閱 
 
       su(1) 

Copyright © Linux教程網 All Rights Reserved