Linux 權(quán)限管理進(jìn)階:sudo 實戰(zhàn)技巧詳解
今天分享一下sudo權(quán)限管理。

1. 什么是 sudo?
sudo(superuser do)允許普通用戶在不切換到 root 賬戶的前提下,以其他用戶(默認(rèn)是 root)的身份運行命令。相比直接使用 su,sudo 提供了更細(xì)粒度、更安全的權(quán)限控制。
2. sudo 的基本命令用法
sudo command # 以 root 權(quán)限執(zhí)行命令
sudo -u 命令 # 以指定用戶身份執(zhí)行命令
sudo -i # 獲取一個 root 登錄 shell
sudo -l # 查看當(dāng)前用戶被授權(quán)執(zhí)行的命令列表3. sudo 權(quán)限配置
所有 sudo 的核心配置文件是 /etc/sudoers,但你不應(yīng)該直接編輯它。推薦使用 visudo 來避免配置錯誤導(dǎo)致系統(tǒng)無法使用 sudo。
visudosudoers 文件的基本語法:
<用戶> <主機(jī)>= (<可切換身份>) <命令列表>例如:
liyb ALL=(ALL) NOPASSWD: /usr/vibin/systemctl restart nginx含義是:用戶 liyb 可以在所有主機(jī)上,以任意用戶身份,無需輸入密碼,執(zhí)行 /bin/systemctl restart nginx。
4. 實戰(zhàn)案例
(1) 限制用戶只運行特定命令:
liyb ALL=(ALL) /usr/bin/systemctl restart nginx效果:用戶 bob 只能使用 sudo 重啟 nginx,不能用它來執(zhí)行其他命令。
(2) 多個用戶共享相同權(quán)限:
Cmnd_Alias RESTART_CMDS = /sbin/reboot, /usr/bin/systemctl restart nginx
User_Alias ADMINS = alice, liyb
ADMINS ALL=(ALL) NOPASSWD: RESTART_CMDS用戶組 ADMINS 成員可以無需密碼執(zhí)行 RESTART_CMDS 里的命令。
(3) 開發(fā)人員編輯特定配置文件
dev ALL=(ALL) NOPASSWD: /usr/bin/vi /etc/nginx/nginx.conf開發(fā)人員只能編輯 nginx 配置文件,而無法訪問其他系統(tǒng)文件。
(4) 將liyb設(shè)為root權(quán)限
liyb ALL=(ALL) ALL如果設(shè)置成這樣,代表liyb用戶可以執(zhí)行任何權(quán)限,不過需要輸入密碼才能執(zhí)行。
還有一種辦法就是將liyb用戶加入wheel組。

5. sudo 日志與審計
所有通過 sudo 執(zhí)行的命令都會被記錄,方便日后審計和追蹤:
- Ubuntu/Debian 系統(tǒng):/var/log/auth.log
- CentOS/RHEL 系統(tǒng):/var/log/secure
日志信息包含用戶名、執(zhí)行命令、終端信息、是否成功等關(guān)鍵信息:

6. 安全建議與最佳實踐
- 最小權(quán)限原則:只授權(quán)用戶執(zhí)行他們所需的最少命令
- 避免通配符(如 /bin/*):容易被濫用
- 謹(jǐn)慎使用 NOPASSWD:雖然方便,但可能成為安全隱患
- 定期審計授權(quán)規(guī)則:用戶、命令需求可能會變化





























