好文鏈接:實戰!銀河麒麟 KYSEC 安全中心執行控制高級配置指南
Hello,大家好啊!今天給大家帶來一篇關于信創終端操作系統中 sudoers 文件詳解的實用文章!在 Linux 系統中,sudo 是一項非常重要的權限控制機制,它允許普通用戶以其他用戶(通常是 root)身份執行指定的命令。而 sudo 的行為規則,全部由 /etc/sudoers 文件來定義和管理。正確理解和配置 sudoers 文件,不僅能提升系統管理的安全性,也能讓權限分配更加靈活高效。本文將全面講解 sudoers 文件的結構、寫法、典型配置示例及最佳實踐。歡迎大家分享點贊,點個在看和關注吧!
1.什么是 sudoers 文件?
/etc/sudoers 是 sudo 工具的主配置文件。它定義了哪些用戶或用戶組可以使用 sudo,能以誰的身份執行哪些命令,以及是否需要輸入密碼等行為細節。
sudoers 文件必須由 root 用戶通過專門的編輯工具 visudo 修改,確保語法正確,避免因配置錯誤導致系統無法使用 sudo。
注意:直接用普通文本編輯器(如 vim 或 nano)打開 /etc/sudoers 是不安全的,必須用 visudo。
2.sudoers 文件基本語法結構
一條典型的規則格式為:
用戶或用戶組 主機 = (以誰的身份) [是否免密碼] 允許執行的命令
各部分含義:
*部分* | *說明* |
---|---|
用戶或用戶組 | 指定用戶名或以 %組名 表示的用戶組 |
主機 | 指定在哪些主機上有效,通常填寫 ALL |
(以誰的身份) | 指定以哪個用戶身份執行命令,常用 (ALL) 或 (root) |
[是否免密碼] | NOPASSWD: 表示免密碼;不寫則默認需要輸入密碼 |
允許執行的命令 | 指定具體允許執行的命令,必須使用絕對路徑 |
3.常見配置示例
3.1 創建普通用戶
作用:在系統中新增一個名為 pdsyw1024 的普通用戶,默認無管理員(sudo)權限。
3.2允許用戶執行所有命令(需輸入密碼)
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo ? pdsyw1024 ALL=(ALL) ALL
用戶 pdsyw1024 在所有主機上,可以以任何身份執行任何命令,但執行時需要輸入密碼。
pdsyw1024@pdsyw-PC:~$ sudo apt install nginx
解釋:用戶 pdsyw1024 現在可以用 sudo 安裝軟件,比如安裝 nginx,執行前會要求輸入自己的登錄密碼。
3.3 允許用戶執行特定命令且免密碼
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo ? pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
用戶 pdsyw 可以直接重啟 nginx 服務,無需輸入密碼,且只能執行指定命令。
pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx ? pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx ? 對不起,用戶 pdsyw1024 無權以 root 的身份在 pdsyw-PC 上執行 /usr/bin/systemctl stop nginx。
解釋:用戶只能重啟 nginx服務,無法停止、啟動或管理其他服務。
這是限制最小權限原則的體現。
3.4 給用戶組統一授權
pdsyw@pdsyw-PC:~/Desktop$ sudo usermod -aG pdsyw pdsyw1024 ? pdsyw@pdsyw-PC:~/Desktop$ id pdsyw1024 ? uid=1001(pdsyw1024) gid=1001(pdsyw1024) 組=1001(pdsyw1024),7(lp),100(users),109(netdev),117(lpadmin),119(scanner),997(sambashare),1000(pdsyw)
含義:把用戶 pdsyw1024 加入到 pdsyw 用戶組中(-aG表示追加到新組,不影響原有組)。
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo ? %pdsyw ALL=(ALL) ALL
pdsyw 組內的所有用戶,擁有 sudo 所有權限。
注意:組名前必須加 % 符號。
含義:% 表示用戶組,賦予 pdsyw 組內所有成員完全的 sudo 權限,執行任何命令,需要輸入密碼。
pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx ? pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx ? pdsyw1024@pdsyw-PC:~$ sudo apt install nginx
解釋:屬于 pdsyw 組的用戶可以正常用 sudo 執行各類系統管理命令。
3.5允許執行多個特定命令
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo ? pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl stop nginx
含義:允許 pdsyw1024 免密碼執行重啟和停止 nginx 的命令,中間用逗號分隔多個命令。
pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx ? pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx ? pdsyw1024@pdsyw-PC:~$ sudo systemctl start nginx ? 對不起,用戶 pdsyw1024 無權以 root 的身份在 pdsyw-PC 上執行 /usr/bin/systemctl start nginx。
解釋:用戶只能執行被列出的特定命令,不能超出范圍,比如無法執行 start nginx。
4.使用 /etc/sudoers.d/ 子文件進行權限管理(推薦)
為了提高管理靈活性,推薦將 sudo 配置拆分成子文件,存放在 /etc/sudoers.d/ 目錄下。
操作步驟:
新建子文件并編輯(用 visudo 檢查語法):
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo -f /etc/sudoers.d/pdsyw1024 ? pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
作用:在 /etc/sudoers.d/ 目錄下,專門為 pdsyw1024 單獨建一個規則文件,便于權限管理、維護和審計。
含義:只允許重啟 nginx,免密碼。
pdsyw@pdsyw-PC:~/Desktop$ sudo chmod 440 /etc/sudoers.d/pdsyw1024
作用:保證子文件權限是 -r--r-----(即 0440),符合 sudo 要求,防止文件被隨意修改。
pdsyw1024@pdsyw-PC:~$ sudo systemctl start nginx ? 對不起,用戶 pdsyw1024 無權以 root 的身份在 pdsyw-PC 上執行 /usr/bin/systemctl start nginx。 ? pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx ? pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx ? 對不起,用戶 pdsyw1024 無權以 root 的身份在 pdsyw-PC 上執行 /usr/bin/systemctl stop nginx。
解釋:用戶權限依然受到嚴格限制,只能執行授權的命令。
好處:
避免直接修改主 sudoers 文件,降低誤操作風險。
按用戶、應用、角色單獨管理權限,更清晰、更規范。
系統維護、配置審計更方便。
5.sudoers 文件中常用的 Defaults 配置
Defaults 行可以用來調整 sudo 的全局默認行為。
常見示例:
*配置* | *含義* |
---|---|
Defaults env_reset | 清空大部分環境變量,防止環境污染 |
Defaults timestamp_timeout=30 | 設置 sudo 密碼緩存時間,單位分鐘(30分鐘內不用重復輸入) |
Defaults insults | 密碼輸錯時顯示幽默提示(娛樂用) |
Defaults !requiretty | 允許在無終端(比如腳本里)使用 sudo |
例如:
pdsyw@pdsyw-PC:~/Desktop$ sudo visudo ? Defaults timestamp_timeout=15
表示 sudo 密碼輸入一次后,15分鐘內免輸。
6.安全注意事項
*注意事項* | *說明* |
---|---|
始終使用 visudo 編輯 | 防止語法錯誤導致系統無法使用 sudo |
指定命令時使用絕對路徑 | 必須寫完整路徑,例如 /usr/bin/systemctl,不能只寫命令名 |
權限最小化原則 | 只授權必要命令,避免給予過大權限 |
不濫用通配符 | /usr/bin/* 等寬泛規則容易引發安全漏洞 |
保持子文件權限為 0440 | 防止未授權用戶篡改 sudo 配置 |
小結:
/etc/sudoers 是 Linux 系統中 sudo 權限的核心配置文件。
正確使用 sudoers 可以精確控制普通用戶的操作權限,提升系統安全性。
推薦通過 /etc/sudoers.d/ 子文件進行分模塊管理,規范又安全。
編輯時務必使用 visudo 工具,確保配置無誤。
良好的 sudo 權限管理,不僅能有效提升系統運維效率,也是保障系統安全不可或缺的重要措施。
附錄:常見命令參考
*操作* | *命令* |
---|---|
打開 sudoers 主文件 | sudo visudo |
編輯 sudoers 子文件 | sudo visudo -f /etc/sudoers.d/用戶名 |
查看命令絕對路徑 | which 命令名 |
設置文件權限為 0440 | sudo chmod 440 /etc/sudoers.d/文件名 |
正確配置 /etc/sudoers,是保障 信創終端操作系統 安全性和運維效率的重要步驟。
本文結合 dde-printer 組件操作實例,講解了從基礎到進階的完整配置方式,包含:
語法規則
用戶與組授權
子文件管理
安全最佳實踐
掌握這些技巧,能夠幫助大家在日常管理中更加規范、靈活、安全地使用 sudo!
如果你覺得這篇文章對你有幫助,歡迎點贊、轉發、點個在看~我們下次再見!