sudo授權(quán)
1、什么是sudo授權(quán)
/sbin/和/usr/sbin/
以上兩個目錄下命令只有超級用戶才能使用。
sudo授權(quán):把指定的命令授權(quán)給普通用戶,讓普通用戶可以執(zhí)行指定的命令。(只給用戶授權(quán)執(zhí)行一個命令的權(quán)限)
原則上:
賦予的權(quán)限越詳細(xì),普通用戶得到的權(quán)限越小。
賦予的權(quán)限越簡單,普通用戶得到的權(quán)限越大。
2、 sudo授權(quán)說明
root身份操作:執(zhí)行visudo命令,賦予普通用戶權(quán)限命令,命令執(zhí)行后和vi一樣使用。
用戶名 被管理主機的地址(IP地址)=(可使用的身份) 授權(quán)命令(絕對路徑)
root ALL=(ALL) ALL
組名 被管理主機的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
%wheel ALL=(ALL) ALL
(組名前邊要加上%)
說明:
用戶名/組名:代表root給哪個用戶或用戶組賦予命令,注意組名前加"%"。
被管理主機的地址:這里的IP地址管理的不是登錄者來源的IP地址,這里的IP指定的是用戶可以管理哪個IP地址的服務(wù)器。那么如果你是一臺獨立的服務(wù)器,這里寫ALL和你服務(wù)器的IP地址,作用是一樣的。如果寫ALL,代表可以管理任何主機,如果我們這里寫本機的IP地址,不代表只允許本機的用戶使用指定命令,而代表指定的用戶可以從任何IP地址來管理當(dāng)前服務(wù)器。(這里記住寫ALL就可以了)
可使用身份:就是把來源用戶切換成什么身份使用(就是把前面用戶的身份,切換成什么身份),(ALL)代表可以切換成任意身份,包括root。這個字段可以省略,代表切換成root。
授權(quán)命令:代表root把什么命令授權(quán)給普通用戶。默認(rèn)是ALL,代表任何命令,這個當(dāng)然不行,賦予的權(quán)限越詳細(xì),普通用戶得到的權(quán)限越小。不過需要注意,命令一定要寫成絕對路徑。
3、舉例
1)比如授權(quán)用戶user1可以重啟服務(wù)器
普通用戶是無法重啟服務(wù)器的,因為沒有這個命令的權(quán)限。
[userl@localhost ~ ] $ shutdown -r now
shutdown: Need to be root
由root用戶添加如下行:
執(zhí)行執(zhí)行visudo命令,賦予普通用戶權(quán)限。
[root@localhost ~ ] # visudo
user1 ALL=(省略不寫)/sbin/shutdown -r now(whereis查一下)
#查看可用的授權(quán)
[user1@localhost ~ ] $ sudo -1
查看結(jié)果如下圖:

上圖中藍(lán)框前邊的(root),是因為我上邊配置的時候省略了等號后邊的賦值,默認(rèn)切換成root用戶,如果我配置成ALL,(root)位置會顯示成ALL。(root和ALL效果上都一樣)
還要注意一點,如果編輯授權(quán)內(nèi)容是user1 ALL=/sbin/shutdown,代表user1用戶可以使用shutdown所有的參數(shù),如-r重啟,-h關(guān)機。所以就向上面的說賦予的權(quán)限越詳細(xì),普通用戶得到的權(quán)限越小。
注意:配置sudo授權(quán),不需要重啟服務(wù)器,保存退出即可。
- 普通用戶如何執(zhí)行呢?
普通用戶直接使用shutdown命令是不行的,需要使用sudo /sbin/shutdown -r now,才能執(zhí)行。注意要使用shutdown命令的絕對路徑。如下圖所示。

2)我想授權(quán)一個用戶管理我的Web服務(wù)器,以后修改設(shè)置更新網(wǎng)頁什么都不用管。
首先要分析授權(quán)用戶管理Apache,至少要實現(xiàn)哪些基本授權(quán):
- 1、可以使用Apache管理腳本
- 2、可以修改Apache配置文件
- 3、可以更新網(wǎng)頁內(nèi)容
剩下的解決不了,再來找我就行了。
假設(shè)Aapche管理腳本程序為/etc/rc.d/init.d/httpd(舉例的是rpm包安裝的apache)。
- 條件一,用visudo進(jìn)行授權(quán):
[root@localhost ~ ] # visudo
編輯內(nèi)容
user1 192. 168. 0. 156(寫ALL一樣)=/etc/rc. d/init. d/httpd reload
擴展:
reload:是重新加載配置文件的命令。如果你正在訪問服務(wù)器,比如下載,先不會關(guān)閉服務(wù)器,會等你訪問完成后再重啟服務(wù)器。(起作用時間有時候會比較長)
restart:重啟,先把服務(wù)關(guān)了,再進(jìn)行重啟。如果有人正在你的服務(wù)器下程序,也直接斷了。(但是常用)
授權(quán)用戶user1可以連接192.168.0.156上的Apache服務(wù)器,通過Apache管理腳本重新讀取配置文件,讓更改的設(shè)置生效(reload),但不允許其執(zhí)行關(guān)閉(stop)、重啟(restart)等操作。
- 條件二,同樣使用visudo授權(quán):
授權(quán)用戶user1可以用root身份使用vim編輯器,編輯Apache配置文件。
[root@localhost ~ ] # visudo
user1 192. 168. 0. 156=/usr/bin/vim /etc/httpd/conf/httpd. conf
以上兩種sudo的設(shè)置,要特別注意,使用sudo會犯兩個錯誤:
第一,授權(quán)命令沒有細(xì)化到選項和參數(shù);
第二,認(rèn)為只能授權(quán)管理員執(zhí)行的命令。
- 條件三則比較簡單,假設(shè)網(wǎng)頁存放目錄為
/var/www/html,則只需要授權(quán)user1對此目錄具有寫權(quán)限或者索性更改目錄所有者為user1即可。
3)授權(quán)aa用戶可以添加其他普通用戶
[root@localhost ~ ] # visudo
# 賦予aa添加用戶權(quán)限,命令必須寫入絕對路徑
aa ALL=/usr/sbin/useradd
# 賦予改密碼權(quán)限
aa ALL=/usr/bin/passwd
#取消對root用戶的密碼修改
aa ALL=/usr/bin/passwd [A-Za-z]*,(逗號后一定要有一個空格)!/usr/bin/passwd"", !/usr/bin/passwd root
說明:
-
[A-Za-z]*:正則表達(dá)式,表示任意字母任意重復(fù)多次。 -
!/usr/bin/passwd" ":表示不能在passwd命令后加空。因為passwd命令后什么都不加,表示修改當(dāng)前用戶密碼,因為sudo授權(quán)passwd命令給user1用戶,當(dāng)user1用戶執(zhí)行passwd命令時的身份時root,所以也是修改root用戶的密碼。 -
!/usr/bin/passwd root:表示禁止在passwd命令后加root。 - 以上三個條件的順序也不能改變,測試改變順序好像不太好用了。
- 注意:有多個權(quán)限的時候用逗號隔開。
普通用戶使用sudo命令執(zhí)行添加新用戶命令
sudo /usr/sbin/useradd ee