如何在 Linux 中將用戶添加到 sudoers 文件

已發表: 2022-11-02
顯示 bash 提示符的 Linux 筆記本電腦
fatmawati achmad zaenuri/Shutterstock.com
如果您被告知用戶“不在 sudoers 文件中”,您可以使用 usermod 命令授予用戶完整的 sudo 權限。 要控制用戶可以使用 sudo 做什麼,請使用 visudo 編輯 sudoers 文件。

可以使用 Linux sudo命令的人是一個小型精選俱樂部的成員,有時稱為“sudoers”列表。 每個成員都擁有與root相同的權力。 那你怎麼加入那個俱樂部? 我們將逐步向 sudoers 添加人員以及編輯 sudoers 文件以限制權限。

目錄

sudo:你的超能改變自我
sudoers 文件和 visudo
在 Ubuntu 和其他 Linux 發行版中添加新的 sudo 用戶
通過編輯 sudoers 文件限制 sudo 權限
持有此命令的人

sudo:你的超能改變自我

在 Linux 安裝中,root 用戶是最高權限的用戶。 他們可以執行任何管理任務,訪問任何文件,而不管它實際擁有它,他們可以創建、操作甚至刪除其他用戶。

這種程度的力量是危險的。 如果root犯了錯誤,結果可能是災難性的。 他們有能力掛載和卸載文件系統,並完全覆蓋它們。 一種更安全的工作方式是永遠不要以root身份登錄。

在 Ubuntu 上調整和配置 Sudo 的 8 種方法
相關在 Ubuntu 上調整和配置 Sudo 的 8 種方法

指定用戶可以使用sudo臨時獲得管理權限,執行所需的操作,然後返回其正常的非特權狀態。 這更安全,因為當你需要它們時,你有意識地調用你的更高權力,而你專注於做任何需要它們的事情。

sudo命令相當於 Linux 中的“Shazam”。 當可怕的事情結束時,你會放棄你超能力的另一個自我,回到你平常的單調自我。

在大多數現代發行版中,默認情況下以root身份登錄是關閉的,但它可以恢復。 不建議使用 root 帳戶進行日常工作。 通常會影響單個用戶或由於權限不足而被完全阻止的錯誤,如果root發出它們,則可以不受阻礙地運行。

現代 Linux 發行版向在安裝或安裝後配置步驟期間創建的用戶帳戶授予sudo權限。 如果其他人嘗試使用sudo ,他們將看到如下警告消息:

 Mary 不在 sudoers 文件中。 將報告此事件。

這似乎很簡單。 我們的用戶mary不能使用sudo ,因為她不在“sudoers 文件中”。 那麼讓我們看看如何添加她。

相關:如何在 Linux 上控制 sudo 訪問

sudoers 文件和 visudo

在有人可以使用sudo命令之前,我們需要使用sudoers文件。 這列出了可以使用sudo的用戶的用戶組。 如果我們需要對文件進行修改,我們必須對其進行編輯。

sudoers文件必須使用visudo命令打開。 這會鎖定sudoers文件並防止兩個人同時嘗試進行更改。 它還在保存您的編輯之前執行一些完整性檢查,以確保它們正確解析並且在語法上是正確的。

請注意, visudo不是編輯器,它會啟動您可用的編輯器之一。 在 Ubuntu 22.04、Fedora 37 和 Manjaro 21 上, visudo啟動了 nano。 在您的計算機上可能並非如此。

如果我們想授予某人完全sudo權限,我們只需要引用sudoers文件中的一些信息。 如果我們想要更細化並為我們的用戶提供一些root的功能,我們需要編輯文件並保存更改。

無論哪種方式,我們都需要使用visudo

相關:如何退出 Vi 或 Vim 編輯器

在 Ubuntu 和其他 Linux 發行版中添加新的 sudo 用戶

我們有兩個用戶需要訪問 root 權限才能執行他們的工作角色。 他們是湯姆和瑪麗。 Mary 需要訪問root可以執行的所有操作。 湯姆只需要安裝應用程序。

讓我們先將 Mary 添加到 sudoers 組。 我們需要啟動visudo

 須藤 visudo 

在 Ubuntu Linux 上啟動 visudo

在編輯器中向下滾動,直到看到“用戶權限規範”部分。 尋找類似於“允許該組的成員執行任何命令”的評論。

sudoers 文件在 nano 編輯器中打開

我們被告知sudo組的成員可以執行任何命令。 在瑪麗的案例中,我們需要知道的只是該組的名稱。 它並不總是sudo ; 它可能是wheel或其他東西。 現在我們知道組的名稱,我們可以關閉編輯器並將 Mary 添加到該組。

如何在 Linux 上使用 chfn 和 usermod 更改用戶數據
相關如何在 Linux 上使用 chfn 和 usermod 更改用戶數據

我們使用帶有-a (追加)和-G (組名)選項的usermod命令。 -G選項允許我們命名我們想要添加用戶的組,並且-a選項告訴usermod將新組添加到該用戶已經在的現有組列表中。

如果您不使用-a選項,則您的用戶所在的唯一組是新添加的組。 仔細檢查,並確保您已包含-a選項。

 sudo usermod -aG sudo mary 

使用 usermod 將用戶 mary 添加到 sudo 組

下次 Mary 登錄時,她將可以訪問sudo 。 我們已經讓她登錄,並且正在嘗試編輯文件系統表文件“/etc/fstab”。 這是一個除了root之外的所有人都無法訪問的文件。

 須藤納米 /etc/fstab 

使用 usermod 將用戶 mary 添加到 sudo 組

nano 編輯器打開並加載了“/etc/fstab”文件。

用戶 mary 使用 sudo 編輯 /etc/fstab 文件

如果沒有sudo權限,您只能將其作為只讀文件打開。 瑪麗不再有這些限制。 她可以保存所做的任何更改。

關閉編輯器,不要保存您所做的任何更改。

通過編輯 sudoers 文件限制 sudo 權限

我們的另一個用戶 Tom 將被授予安裝軟件的權限,但他不會獲得授予 Mary 的所有權限。

我們需要編輯sudoers文件。

 須藤 visudo 

在 Ubuntu Linux 上啟動 visudo

在編輯器中向下滾動,直到看到“用戶權限規範”部分。 尋找類似於“允許該組的成員執行任何命令”的評論。 在文件中我們找到需要將 Mary 添加到的組的名稱的位置相同。

在該部分下方添加這些行。

 # 用戶tom可以安裝軟件
湯姆所有=(根)/usr/bin/apt 

向 sudoers 文件添加新條目

第一行是一個簡單的註釋。 請注意,用戶名“tom”和單詞“All”之間有一個製表符。

這就是線路上的項目的含義。

  • tom :用戶默認組的名稱。 通常這與其用戶帳戶的名稱相同。
  • ALL= :此規則適用於該網絡上的所有主機。
  • (root) :“tom”組的成員(即用戶 Tom)可以為列出的命令承擔root權限。
  • /usr/bin/apt :這是用戶 Tom 可以以root身份運行的唯一命令。

我們在這裡指定了apt包管理器,因為這台計算機使用的是 Ubuntu Linux。 如果您使用不同的發行版,則需要用適當的命令替換它。

讓我們登錄 Tom,看看我們是否得到了預期的行為。 我們將嘗試編輯“/etc/fstab”文件。

 須藤納米 /etc/fstab 

試圖在沒有 sudo 權限的情況下編輯 /etc/fstab 文件

該命令被拒絕,我們被告知“不允許用戶 tom 以 root 身份執行 '/usr/bin/nano /etc/fstab' ...”

這就是我們想要的。 用戶 Tom 應該只能使用apt包管理器。 讓我們確保他們能做到這一點。

 sudo apt install neofetch 

用戶 Tom 使用 apt 命令和 sudo

該命令已為 Tom 成功執行。

持有此命令的人

如果您的所有用戶都可以使用sudo ,那麼您將手頭上的混亂。 但是值得推廣其他用戶,這樣他們就可以分擔您的管理負擔。 只要確保他們是有價值的,並密切關注他們。

即使您是計算機上的唯一用戶,也值得考慮創建另一個用戶帳戶並為其提供對sudo的完全訪問權限。 這樣,如果您發現自己被鎖定在主帳戶之外,您可以使用另一個帳戶登錄以嘗試糾正這種情況。

相關:如何在 Linux 上查看 sudo 命令用法