sudo
(superuser do)是一個(gè)在Linux和Unix系統(tǒng)中廣泛使用的命令行程序,它允許授權(quán)的用戶(hù)以另一個(gè)用戶(hù)的身份,通常是超級(jí)用戶(hù)(root)來(lái)運(yùn)行命令,sudo主要特性如下:
- 權(quán)限提升:
sudo
命令提升普通用戶(hù)的權(quán)限,使其能夠執(zhí)行原本需要更高權(quán)限才能運(yùn)行的命令 - 安全機(jī)制:通過(guò)
sudo
,系統(tǒng)管理員可以安全地委派任務(wù)給普通用戶(hù),而無(wú)需共享 root 密碼 - 配置文件:通過(guò)
/etc/sudoers
控制誰(shuí)可以通過(guò) sudo
運(yùn)行哪些命令,以及在哪些條件下可以運(yùn)行 - 最小權(quán)限原則:
sudo
允許用戶(hù)僅在需要時(shí)獲得執(zhí)行特定任務(wù)所需的權(quán)限 - 環(huán)境隔離:
sudo
可以在執(zhí)行時(shí)隔離環(huán)境變量,避免用戶(hù)的環(huán)境影響系統(tǒng)命令的執(zhí)行 - 靈活性:
sudo
提供了極大的靈活性,管理員可以精細(xì)控制每個(gè)用戶(hù)的權(quán)限
本例子演示使用centos7.9系統(tǒng)?
首先查看下配置文件/etc/sudoers,使用visudo命令打開(kāi):
#不建議使用vim命令打開(kāi),因?yàn)闀?huì)提示只讀,還要賦權(quán)
#使用visudo編輯保存后會(huì)自動(dòng)校驗(yàn)語(yǔ)法是否正確
visudo #直接輸入這個(gè)命令即可打開(kāi)/etc/sudpers文件

上圖中也是系統(tǒng)提示的模版,指定用戶(hù)和用戶(hù)組可以執(zhí)行的sudo命令,含義如下:參數(shù) | 說(shuō)明 |
root | 表示roo用戶(hù) |
%wheel | 表示wheel用戶(hù)組,以%開(kāi)頭表示組 |
ALL | 表示從任何主機(jī)都可以執(zhí)行,保持默認(rèn)即可 |
(ALL) | 表示任何人都可以以root身份執(zhí)行命令,此字段可省略 |
ALL | 所有命令,NOPASSWD表示無(wú)需輸入密碼 |
因此,圖中第一行表示root用戶(hù)可以在任何主機(jī)以任何人身份來(lái)執(zhí)行所有的命令,第2行表示wheel組中的用戶(hù)可以在任何主機(jī)以任何人身份來(lái)執(zhí)行任何命令,第三行與第二行一樣,只是無(wú)需輸入密碼一、授權(quán)用戶(hù)可執(zhí)行的命令1、下面定義用戶(hù)gongguan可以執(zhí)行的命令,如圖:


上述命令表示用戶(hù)gongguan可以在任何主機(jī)以任何身份執(zhí)行useradd和userdel命令,執(zhí)行未授權(quán)的cat /etc/passwd命令就會(huì)報(bào)錯(cuò),執(zhí)行,并提示輸入gongguan用戶(hù)密碼,如圖:

注:配置命令要使用絕對(duì)路徑,主要是出于安全考慮,如果用戶(hù)創(chuàng)建了一個(gè)相同名字的腳本,那么就很可能導(dǎo)致執(zhí)行錯(cuò)誤,實(shí)際執(zhí)行的是創(chuàng)建的腳本而不是原始的命令如果執(zhí)行命令的時(shí)候不需要輸入密碼,加上字段NOPASSWD即可,如圖:

二、授權(quán)用戶(hù)組可以執(zhí)行的命令1、定義組可執(zhí)行的命令,注意,組名前面有個(gè)%如圖:2、創(chuàng)建tgroup組和三個(gè)用戶(hù),并將用戶(hù)userone和usertwo加入到組中,如下:groupadd tgroup
useradd -m userone && usermod -a -G tgroup userone
useradd -m usertwo && usermod -a -G tgroup usertwo
useradd -m userthree

3、切換到userone和usertwo,執(zhí)行cat命令,如圖:


登錄userthree后無(wú)法執(zhí)行,因此此用戶(hù)不在tgroup組中,如圖:

通過(guò)別名定義命令
還可以通過(guò)Cmnd_Alias來(lái)定義別名,別名中填寫(xiě)命令,別名需要大寫(xiě)
1、下面創(chuàng)建一個(gè)別名COMM1,在其中定義命令,然后在ALL后指定即可,如圖:

設(shè)置禁止用戶(hù)執(zhí)行某條命令
1、下圖定義用戶(hù)只能創(chuàng)建用戶(hù),但是不能刪除用戶(hù),如圖:

切換到gongguan用戶(hù),執(zhí)行創(chuàng)建和刪除命令,可以看到刪除失敗,如圖:

修改sudo會(huì)話(huà)有效期
sudo 默認(rèn)在輸入一次密碼后 5 分鐘內(nèi)不會(huì)再次要求密碼。5 分鐘后,你會(huì)再次被要求輸入密碼,這個(gè)有效期可以設(shè)置,操作如下:
打開(kāi)文件/etc/sudoers,找到行:
在這行上面添加如下全局變量,對(duì)用戶(hù)和組都適用:

Defaults timestamp_timeout=2
閱讀原文:原文鏈接
該文章在 2025/7/1 23:17:35 編輯過(guò)