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

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


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

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

二、授權(quán)用戶組可以執(zhí)行的命令1、定義組可執(zhí)行的命令,注意,組名前面有個%如圖:2、創(chuàng)建tgroup組和三個用戶,并將用戶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后無法執(zhí)行,因此此用戶不在tgroup組中,如圖:

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

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

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

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

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