[翻譯] DJG's Sudo Guide


譯者﹕Jalala <jalala@kkcity.com.tw>
SUDO是一個可以讓某些人暫時以root的身分執行某些經過允許的指令,也可說 像是指派使用者至不同的群組給予特殊的檔案權限,無論如何,他允許使用者 於機器上使用特殊的指令,可以有效指派特殊權限的方法。 第一步,拿到SUDO軟體。 可以到Debian下載(副檔名.deb)於ftp://ftp.debian.org、或下"apt-get ins tall sudo" 或於http://www.rpmfind.net/RPM尋得。 如果上面都行不通,到http://www.courtesan.com/sudo/拿Tar壓縮檔。 配置SUDO允許執行的使用者 現在SUDO裝好,我們於/etc找一個叫sudoers檔案編輯。 如果上面都行不通,到http://www.courtesan.com/sudo/拿Tar壓縮檔。 配置SUDO允許執行的使用者 現在SUDO裝好,我們於/etc找一個叫sudoers檔案編輯。 話說在前,你還要一個visudo軟體,他已置入SUDO軟體內,它提供安全檢查, 核對sudoers 的語法及斷句的錯誤,及禁止修改文件。 Visudo要Bash的VISUAL參數,設定文字編輯器的環境,請跟我下這個指令: export VISUAL="pico -w" 在此,我們用PICO來做為文字編輯器的環境,我們現在輸入visudo,現在它打 開了/etc/sudoers供我們編輯。 在這,你會看到像這樣幾行的字: 注意:這是Debian的安裝方式,這裡有些參數我沒有著墨,我們是用預設值, 引以為例。這份是Sudo基本安裝指南,你可以輸入"man sudoers"或"man sudo "看看我沒寫的地方。 #主機群列表 #使用群列表 #使用命令群 #設定某人能使用某命令 root ALL=(ALL) ALL 以下為範例,純屬虛構。不過你聽完我這一席話,你就知道設定的方法。 主機名稱,就是可以使用Sudo的主機或簡易機主機名,在這裡可以指定一個或 多群主機,看看下面設法: I.主機群列表 這一部分為主機的名稱。格式為: Host_Alias 主機群名稱 = 主機一,主機二,其他... 第一類就是設定使用群的定義,如果只有一台要用Sudo,就不用設定。 II.使用群列表 這一部分為使用者群組的名稱。格式為: User_Alias 使用群名稱 = 使用者一,使用者二,其他... II.使用群列表 這一部分為使用者群組的名稱。格式為: User_Alias 使用群名稱 = 使用者一,使用者二,其他... 我們來試看看,設定三個群組:ADMINS、PARTTIME及LINUXGROUP,也可以包含 不同組別的使用者。 User_Alias ADMINS = netman, harrier, master User_Alias PARTTIME = jalala, sonar , huge User_Alias LINUXGROUP = lyte, SirPlaya III.使用命令群 這一部分跟上面兩種格式相同: User_Alias ADMINS = netman, harrier, master User_Alias PARTTIME = jalala, sonar , huge User_Alias LINUXGROUP = lyte, SirPlaya III.使用命令群 這一部分跟上面兩種格式相同: Cmnd_Alias 命令群 = 命令一,命令二,其他... 如果要加入特別參數,可以用[]通用參數使用指令,舉個例子,USERS 這群使 用/usr/sbin/adduser [A-z]*,後面可使用一至多個參數。 Cmnd_Alias BROWSE = /bin/ls, /bin/cd, /bin/cat Cmnd_Alias KILL = /bin/kill Cmnd_Alias USERS = /usr/sbin/adduser [A-z]*,/usr/sbin/userdel - r [A-z]* IV.設定某人能使用某命令 下面這行就是全部的指令都能執行,不過有個麻煩是「他什麼都能做」。 root ALL=(ALL) ALL 下一行就是設定ADMINS群組裡面的netman、harrier及master,給予權限。 ADMINS ALL=ALL 下一行就比較有趣了喔,我們來設定PARTTIME裡的這三位臨時工jalala、sonar 及huge,可以在所有伺服器中,使用USERS、KILL及BROWSE這三群指令,還可以 執行/usr/bin/passwd,可是我們現在不想讓他改密碼( 因為我怕他們信用太低 把我的主機吞了 ),那有什麼方法,來!看看我下面怎麼變魔術: PARTTIME ALL=USERS,KILL,BROWSE,/usr/bin/passwd [A-z]*, !/usr/bin/pass wd root 看到了嗎,我在/usr/bin/passwd我加了一個"!",這樣就Ok拉。 djg DJNET=ALL 那這一行又是什麼,就是讓DJNET主機群來的djg「開放所有權限」。 最後快大功告成了,我們來設定LINUXGROUP內的lyte及SirPlaya 執行KILL,USE RS, and BROWSE命令群內,本機的www 使用者能用的指令表,讓LINUXHELP(lin group1及lingroup2這兩台)使用。該使用者可暫時使用Root 身份執行該指令。 LINUXGROUP LINUXHELP=(www) ALL (root) KILL,USERS,BROWSE 好了,現在/etc/sudoers經過適當調整後,存檔並離開visudo,如果語法錯錯誤 他還會提示您。 使用SUDO 現在看看我怎麼用Sudo: djg@localhost:~ $ sudo -l Password: (在這輸入您的密碼) 如此一來,djg 就會按照/etc/sudoers的規則,來分配指令。 djg@localhost:~ $ sudo -u 使用者可以執行的指令 commandhere Password: (在這輸入您的密碼) (如果無誤就會執行「使用者可以執行的指令」) 如果您使用root指令,-u參數會為預設值,通常這不需要,最簡單的用法: djg@localhost:~ $ sudo commandhere sudo於五分鐘之內,不需重新輸入密碼。 你可以從Sudo使用說明書得到你需要的資訊,我抽空還會修一修這份文件。 現在,你大概對使用者給予特殊權限,已經有個譜了,還有問題的話,你可以來 LinuxHelp.net on DALnet問問題吧 :D 本文作者DJG, djg@linuxhelp.net於2000年一月一日編寫。 譯者Jalala@TFUG,Jalala放棄本篇文章利益,僅供各大教學網站及網中人站長 做教學使用,本文絕對不擔保引起之衍生利益損失或意外損失擔保責任。 Jalala於2002年 7月 9日翻譯 ====================================================================== 本文的MD5檢查碼:672a92248700185e0d24c42a8ea8f57a -- 長期使用傻瓜相機的結果, 把人變成只會按一下電動開關 Linux/FreeBSD 就像 SLR 相機, 讓我們正確操控光圈、快門、對焦. Free Software Fundation 自由、合法、專業、免費 的軟體 --