首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 學習筆記:解決「xxx is not in the sudoers file」權限問題

     編輯:MySQL 綜合教學

Linux 學習筆記:解決「xxx is not in the sudoers file」權限問題

初學 Linux 時,嘗試執行 sudo 指令卻提示 xxx is not in the sudoers file. This incident will be reported. 是常見挫折。本文記錄完整解決流程,並補充 sudoers 進階配置技巧,助您掌握 Linux 權限管理核心。

問題原因

預設只有 root 與 sudo 群組成員能執行 sudo。一般使用者未被加入 /etc/sudoers 設定檔,故無權限執行。

解決步驟(四步驟法)

步驟 1:切換至 root 使用者

su - root
# 輸入 root 密碼

注意:需具備 root 密碼。若雲端主機僅提供金鑰登入,請先以具 sudo 權限的使用者登入(如 ubuntu、ec2-user)。

步驟 2:給 sudoers 檔案加入寫入權限

chmod u+w /etc/sudoers

/etc/sudoers 預設唯讀(440),編輯前必須授予擁有者寫入權限。

步驟 3:編輯 sudoers 檔案新增使用者

visudo
# 或 vi /etc/sudoers

強烈建議使用 visudo:它會在儲存前自動語法檢查,防止配置錯誤導致無法 sudo(進而無法修復)。

在檔案中找到:

root ALL=(ALL) ALL

在其下方新增一行(將 xxx 替換為您的使用者名稱):

xxx ALL=(ALL) ALL

步驟 4:移除 sudoers 寫入權限(安全加固)

chmod u-w /etc/sudoers

恢復唯讀狀態,防止惡意或誤修改。

進階:sudoers 四種常見授權模式

在 sudoers 中可依需求選擇以下任一行:

配置行效果適用場景
youuser ALL=(ALL) ALL允許使用者 youuser 執行所有指令,需輸入密碼標準管理員帳號
%youuser ALL=(ALL) ALL允許群組 youuser 成員執行所有指令,需輸入密碼團隊共用管理權限
youuser ALL=(ALL) NOPASSWD: ALL允許使用者 youuser 執行所有指令,免密碼自動化腳本、CI/CD 機器人
%youuser ALL=(ALL) NOPASSWD: ALL允許群組 youuser 成員執行所有指令,免密碼自動化部署群組

關鍵差異:% 前綴代表群組;NOPASSWD: 表示免密碼(生產環境謹慎使用,建議搭配指令白名單限制)。

最佳實踐建議

  1. 優先使用群組管理:建立 wheel 或 admin 群組,將需 sudo 的使用者加入群組,統一在 sudoers 配置群組權限,單一維護點。
  2. 最小權限原則:僅授權必要指令,如 deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx。
  3. 審計日誌:sudo 執行記錄預設寫入 /var/log/secure 或 /var/log/auth.log,定期審查。
  4. 避免直接編輯:利用 visudo -f /etc/sudoers.d/username 建立獨立配置檔,主檔保持乾淨,套件升級不衝突。

快速驗證

# 切回一般使用者
su - xxx
# 測試 sudo
sudo whoami
# 輸出 root 即成功

搞定 sudo 權限,是 Linux 進階之路的第一關。養成「最小權限、群組管理、審計追蹤」習慣,才能在生產環境遊刃有餘。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved