Unix中賦予用戶特殊權(quán)限 在Unix系統(tǒng)中,管理員往往不只是一個(gè)人,若每位管理員都用root身份進(jìn)行管理工作,根本無(wú)法弄清楚誰(shuí)該做什么。所以最好的方式是:管理員當(dāng)系統(tǒng)的root,然后創(chuàng)建一些普通用戶,分配一部分系統(tǒng)管理工作給他們。
在Unix系統(tǒng)中,管理員往往不只是一個(gè)人,若每位管理員都用root身份進(jìn)行管理工作,根本無(wú)法弄清楚誰(shuí)該做什么。所以最好的方式是:管理員當(dāng)系統(tǒng)的root,然后創(chuàng)建一些普通用戶,分配一部分系統(tǒng)管理工作給他們。
我們不可以使用su讓他們直接變成root,因?yàn)檫@些用戶都必須知道root的密碼,這種方法很不安全,而且也不符合我們的分工需求。一般的做法是利用權(quán)限的設(shè)置,依工作性質(zhì)分類,讓特殊身份的用戶成為同一工作組,并設(shè)置工作組權(quán)限。例如:要wwwadm這位用戶負(fù)責(zé)管理網(wǎng)站數(shù)據(jù),一般Apache Web Server的進(jìn)程httpd的所有者是www,您可以設(shè)置用戶wwwadm與www為同一工作組,并設(shè)置Apache默認(rèn)存放網(wǎng)頁(yè)目錄/usr/local/httpd/htdocs的工作組權(quán)限為可讀、可寫(xiě)、可執(zhí)行,這樣屬于此工作組的每位用戶就都可以進(jìn)行網(wǎng)頁(yè)的管理了。 但這并不是最好的解決辦法,例如管理員想授予一個(gè)普通用戶關(guān)機(jī)的權(quán)限,這時(shí)使用上述的辦法就不是很理想。這時(shí)您也許會(huì)想,我只讓這個(gè)用戶以root身份執(zhí)行shutdown命令就行了。完全正確!可惜在通常的Unix系統(tǒng)中無(wú)法實(shí)現(xiàn)這一功能,不過(guò)已經(jīng)有了工具可以實(shí)現(xiàn)這樣的功能—sudo。 sudo通過(guò)維護(hù)一個(gè)特權(quán)到用戶名映射的數(shù)據(jù)庫(kù)將特權(quán)分配給不同的用戶,這些特權(quán)可由數(shù)據(jù)庫(kù)中所列的一些不同的命令來(lái)識(shí)別。為了獲得某一特權(quán)項(xiàng),有資格的用戶只需簡(jiǎn)單地在命令行輸入sudo與命令名之后按照提示再次輸入口令(用戶自己的口令,不是root用戶口令)。例如,sudo允許普通用戶格式化磁盤(pán),但是卻沒(méi)有賦予其他的root用戶特權(quán)。 sudo是一個(gè)免費(fèi)軟件,我們可以從網(wǎng)址:http://www./sudo/下載它的最新版本,也可以獲得關(guān)于sudo的很多有用的文檔資料,在筆者撰寫(xiě)本文時(shí)它的最新版本為sudo-1.6.6.tar.gz,執(zhí)行如下步驟進(jìn)行安裝: # gzip -d sudo-1.6.6.tar.gz(解壓縮) # tar xvf sudo-1.6.6.tar(解包) # cd sudo-1.6.6 # ./configure (搜集系統(tǒng)的各項(xiàng)信息,配置Makefile文件,為實(shí)際編譯做準(zhǔn)備) # make(編譯) # make install(安裝) 這是sudo源代碼版本的安裝步驟,您也可以去下載sudo的二進(jìn)制安裝包,如Solaris的package包或Linux的rpm包等,這里不再贅述。 sudo工具由文件/etc/sudoers進(jìn)行配置,該文件包含所有可以訪問(wèn)sudo工具的用戶列表并定義了他們的特權(quán)。一個(gè)典型的/etc/sudoers條目如下: liming ALL=(ALL) ALL 這個(gè)條目使得用戶liming作為超級(jí)用戶訪問(wèn)所有應(yīng)用程序,如用戶liming需要作為超級(jí)用戶運(yùn)行命令,他只需簡(jiǎn)單地在命令前加上前綴sudo。因此,要以root用戶的身份執(zhí)行命令format,liming可以輸入如下命令: # sudo /usr/sbin/format 注意:命令要寫(xiě)絕對(duì)路徑,/usr/sbin默認(rèn)不在普通用戶的搜索路徑中,可以加入此路徑:PATH=$PATH:/usr/sbin;export PATH。 另外,不同系統(tǒng)命令的路徑不盡相同,可以使用命令“whereis 命令名”來(lái)查找其路徑。 這時(shí)會(huì)顯示下面的輸出結(jié)果: We trust you have received the usual lecture from the local System Administrator. It usually boils down to these two things: #1) Respect the privacy of others. #2) Think before you type. Password: 如果liming正確地輸入了口令,命令format將會(huì)以root用戶身份執(zhí)行。 注意:配置文件/etc/sudoers必須使用命令/usr/local/sbin/visudo來(lái)編輯。只要把相應(yīng)的用戶名、主機(jī)名和許可的命令列表以標(biāo)準(zhǔn)的格式加入到文件/etc/sudoers并保存就可以生效 本文來(lái)自[Svn中文網(wǎng)]轉(zhuǎn)發(fā)請(qǐng)保留本站地址:http://www./unix/2010030524530.html
再看一個(gè)例子:
管理員需要允許“baoshi”用戶在主機(jī)“sun”上執(zhí)行“reboot”和“shutdown”命令,在/etc/sudoers中加入: baoshi sun=/usr/sbin/reboot,/usr/sbin/shutdown 注意:命令一定要使用絕對(duì)路徑,避免其他目錄的同名命令被執(zhí)行,造成安全隱患。 然后保存退出,baoshi用戶想執(zhí)行reboot命令時(shí),只要在提示符下運(yùn)行下列命令: $ sudo /usr/sbin/reboot 輸入正確的密碼,就可以重啟服務(wù)器了。 如果您想對(duì)一組用戶進(jìn)行定義,可以在組名前加上%,對(duì)其進(jìn)行設(shè)置,如: %cuug ALL=(ALL) ALL 另外,還可以利用別名來(lái)簡(jiǎn)化配置文件。別名類似組的概念,有用戶別名、主機(jī)別名和命令別名。多個(gè)用戶可以首先用一個(gè)別名來(lái)定義,然后在規(guī)定他們可以執(zhí)行什么命令的時(shí)候使用別名就可以了,這個(gè)配置對(duì)所有用戶都生效。主機(jī)別名和命令別名也是如此。注意使用前先要在/etc/sudoers中定義:User_Alias、Host_Alias、Cmnd_Alias項(xiàng),在其后面加入相應(yīng)的名稱就可以了,也以逗號(hào)分隔開(kāi),舉例如下: Host_Alias SERVER=no1 User_Alias ADMINS=liming,baoshi Cmnd_Alias SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot ADMIN SERVER=SHUTDOWN 再看這個(gè)例子: ADMINS ALL=(ALL) NOPASSWD: ALL 表示允許ADMINS不用口令執(zhí)行一切操作,其中“NOPASSWD:”項(xiàng)定義了用戶執(zhí)行操作時(shí)不需要輸入口令。 sudo命令還可以加上一些參數(shù)執(zhí)行,完成一些輔助的功能,如: $ sudo -l 會(huì)顯示出類似這樣的信息: User liming may run the following commands on this host: (root) /usr/sbin/reboot 說(shuō)明用戶liming被root允許執(zhí)行/usr/sbin/reboot命令。這個(gè)參數(shù)可以使用戶查看自己目前可以在sudo中執(zhí)行哪些命令,方便使用。 在命令提示符下鍵入sudo命令會(huì)列出所有參數(shù),其他一些參數(shù)如下: -V 顯示版本編號(hào); -h 顯示sudo命令的使用參數(shù); -v 因?yàn)閟udo在第一次執(zhí)行時(shí)或是在N分鐘內(nèi)沒(méi)有執(zhí)行(N預(yù)設(shè)為5)會(huì)問(wèn)密碼,這個(gè)參數(shù)是重新做一次確認(rèn),如果超過(guò)N分鐘,也會(huì)問(wèn)密碼; -k 將會(huì)強(qiáng)迫使用者在下一次執(zhí)行sudo時(shí)詢問(wèn)密碼(不論有沒(méi)有超過(guò)N分鐘); -b 將要執(zhí)行的指令放在背景中執(zhí)行; -p prompt 可以更改問(wèn)密碼的提示語(yǔ),其中%u會(huì)代換為使用者的賬號(hào)名稱,%h會(huì)顯示主機(jī)名稱; -u username/#uid 不加此參數(shù),代表要以root的身份執(zhí)行指令,而加了此參數(shù),可以以u(píng)sername的身份執(zhí)行指令(#uid為該username的UID); -s 執(zhí)行環(huán)境變數(shù)中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell ; -H 將環(huán)境變數(shù)中的HOME(宿主目錄)指定為要變更身份的使用者的宿主目錄(如不加-u參數(shù)就是系統(tǒng)管理者root); 要以系統(tǒng)管理者身份(或以-u更改為其他人)執(zhí)行的指令。 本文來(lái)自[Svn中文網(wǎng)]轉(zhuǎn)發(fā)請(qǐng)保留本站地址:http://www./unix/2010030524530_2.html |
|
來(lái)自: sys > 《我的圖書(shū)館》