linux解決“XXX is not in the sudoers file”錯誤

習慣沉澱發表於2018-03-27

問題:我想在我的Linux系統上使用sudo來執行一些特權命令,然而當我試圖這麼做時,我卻得到了"[我的使用者名稱] is not in the sudoers file. This incident will be reported."的錯誤資訊。我該怎麼處理這種sudo錯誤呢?

sudo是一個允許特定的使用者組用另一個使用者(典型的是root)的特權來執行一個命令。sudo有詳細的日誌功能,並且提供了對使用者可通過sudo來執行哪些命令的細粒度控制。

Sudo vs. Su

su命令也提供了同樣的特權提升功能,兩者不同的是它們認證過程和特權變化的粒度。su允許你從你的登入會話切換到另一個使用者的會話,然後你可以隨心所欲地用該使用者的特權來執行任何程式,但是你需要知道目標使用者的密碼才能切換這個使用者。而另一方面,sudo能在單個命令的基礎上工作,允許你用root的特權來執行單個命令。用sudo你不必一定要知道root的密碼,但是在提示輸入sudo密碼的時候要輸入你的密碼。

在Sudoers列表裡新增使用者

作為一個新使用者的你如果試圖執行sudo命令,你會碰到以下錯誤。意思是你不在這個包含經過認證就可以使用sudo特權的這麼一個使用者組的sudoers列表裡。

  1. [my-user-id]isnotin the sudoers file.This incident will be reported.

有兩個方法可以把你加入到sudoers列表中去。

方法一(我試了試貌似不能用, 或者是我的操作不正確, 方法二有效)

第一個方法是把你新增到名為sudo的Linux使用者組裡。這個特殊的Linux使用者組是預配置來使用sudo的。因此,一旦你在這個組裡面,那你就可以執行sudo命令了。

以下命令會把你加入到Linux的sudo組裡,來確保讓你能作為root使用者來執行命令。

  1. # adduser <使用者名稱> sudo

現在來確認你的組員資格有沒有更新,使用groups命令來看看你當前屬於哪個組的列表裡。這個列表必定是包含sudo組的。

  1. $ groups

  1. alice adm cdrom sudo dip plugdev fuse lpadmin netdev sambashare davfs2 libvirtd docker promiscuous

組員資格變動(和sudo訪問)會在你登出後重新登入後生效。

方法二

第二個能讓你使用sudo的方法是直接把你自己新增到 /etc/sudoers 這個配置檔案中去。

要修改 /etc/sudoers 檔案,你可以使用一個名為visudo的特殊sudo編輯器命令。用root身份簡單呼叫以下命令。

  1. # visudo

這條命令能開啟並編輯 /etc/sudoers 檔案,將以下這行文字新增至檔案末尾,並按Ctrl+X。提示出現時,儲存修改退出。

  1. <username> ALL=(ALL) ALL

這個修改會立即生效,你就能馬上使用sudo了。

相關文章