Chinaunix

标题: sudo用法 [打印本页]

作者: rainchild    时间: 2007-08-12 11:15
标题: sudo用法

[color="#02368d"]
使用 su 切換身份真的是很簡單啦~不過, [color="#000088"]su 卻有一個很嚴重的問題, 那就是.....我們必須要知道想要變成的那個人的登入密碼~
舉例來說,如果我想要變成 root ,那麼就必須要知道 root 的密碼才行, 如果我想要變成 dmtsai 來工作,那麼除非我是 root
,否則就必須要知道 dmtsai 這個使用者的密碼才行~而眾所皆知的,如果多人管理一部主機的話, 大家都知道 root
的密碼,那......挺危險的,不是嗎?!
這個時候, sudo 就派的上用場囉~那麼 sudo 是怎樣工作的呢?

使用 visudo 之後,其實就會出現一個 vi 的畫面啦!他就是以 vi 來開啟 /etc/sudoers ,
不過,當我們儲存離開時, visudo 會額外去檢查 /etc/sudoers 內部的語法,
以避免使用者輸入錯誤的資訊了。我上面只有加入一行,就是讓那個 dmtsai 成為可以隨意使用 sudo 的身份而已。基本上,
/etc/sudoers 的結構您可以使用 man sudoers 去查閱,
該說明內容說的很清楚,而且還有一些範例呢!鳥哥在這裡僅作一些簡單的說明就是了。 那一行『 dmtsai ALL=(ALL) ALL
』代表的意義是:

例題:我想要建立一個可以幫忙系統管理員變更使用者密碼的群組,名稱為 ADMPW ( 注意,在 sudoers 內,這個別名的名稱一定要是大寫字元才行!)但是這個群組不能修改 root 的密碼喔!且他們執行 sudo 時,不需要密碼驗證。
答:
我以 root 的身份使用 visudo ,進入編輯畫面後,去設定成底下的模樣:
User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3
ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
                       !/usr/bin/passwd root
上面的意思是說,我的系統上面有四個帳號,分別是 vbird, vbird1, vbird3 與 dmtsai 這四個帳號加入 sudo 內的 ADMPW 群組中,這四個帳號可以使用 sudo 進行『 /usr/bin/passwd * 』密碼的更改動作,但是不能 (在指令前面加入 ! 代表不可) 使用 /usr/bin/passwd 或 /usr/bin/passwd root ,如此一來,就讓該 ADMPW 可以更改使用者的密碼,但是不能變更 root 的密碼囉! ^_^
在 /etc/sudoers 裡頭加入別名有很多的好處,舉例來說,以上面的例子來講, 假設未來我有其他的使用者要加入該密碼管理的群組時,直接將帳號加入 ADMPW 那個群組中就好了,很簡單的使用吧! ^_^。再看看下一題:

例題:我的系統中有 DNS 服務,他的啟動指令在 /etc/init.d/named ,如果我想要建立一個 DNSMASTER 的群組來管理他時?如何是好?
答:
我以 root 的身份使用 visudo ,進入編輯畫面後,去設定成底下的模樣:
User_Alias DNSMASTER = vbird, dmtsai
Cmnd_Alias DNSCMD = /etc/init.d/named, /usr/bin/vim /var/named/*
DNSMASTER ALL = DNSCMD
看的懂嗎?嘿嘿!因為 DNS 的設定檔大多在 /var/named 裡面,所以,我也允許相關帳號用 vi 去處理 DNS 的設定檔啦
好了,我們知道 sudo 可以搭配 su 來進行一堆系統的工作對吧! 因為 sudo 僅能進行一次指令,很麻煩,如果我能夠將 sudo 與 su 搭配在一起,不就很棒了嗎? 這個時候,我可以利用上面已經建立好的 ADMPW 群組來新增這一行:

               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19906/showart_358447.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2