如何在 Linux 中將用戶添加到 sudoers 文件
已發表: 2022-11-02 可以使用 Linux sudo
命令的人是一個小型精選俱樂部的成員,有時稱為“sudoers”列表。 每個成員都擁有與root
相同的權力。 那你怎麼加入那個俱樂部? 我們將逐步向 sudoers 添加人員以及編輯 sudoers 文件以限制權限。
sudo:你的超能改變自我
sudoers 文件和 visudo
在 Ubuntu 和其他 Linux 發行版中添加新的 sudo 用戶
通過編輯 sudoers 文件限制 sudo 權限
持有此命令的人
sudo:你的超能改變自我
在 Linux 安裝中,root 用戶是最高權限的用戶。 他們可以執行任何管理任務,訪問任何文件,而不管它實際擁有它,他們可以創建、操作甚至刪除其他用戶。
這種程度的力量是危險的。 如果root
犯了錯誤,結果可能是災難性的。 他們有能力掛載和卸載文件系統,並完全覆蓋它們。 一種更安全的工作方式是永遠不要以root
身份登錄。
指定用戶可以使用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
在編輯器中向下滾動,直到看到“用戶權限規範”部分。 尋找類似於“允許該組的成員執行任何命令”的評論。
我們被告知sudo
組的成員可以執行任何命令。 在瑪麗的案例中,我們需要知道的只是該組的名稱。 它並不總是sudo
; 它可能是wheel
或其他東西。 現在我們知道組的名稱,我們可以關閉編輯器並將 Mary 添加到該組。
我們使用帶有-a
(追加)和-G
(組名)選項的usermod
命令。 -G
選項允許我們命名我們想要添加用戶的組,並且-a
選項告訴usermod
將新組添加到該用戶已經在的現有組列表中。
如果您不使用-a
選項,則您的用戶所在的唯一組是新添加的組。 仔細檢查,並確保您已包含-a
選項。
sudo usermod -aG sudo mary
下次 Mary 登錄時,她將可以訪問sudo
。 我們已經讓她登錄,並且正在嘗試編輯文件系統表文件“/etc/fstab”。 這是一個除了root
之外的所有人都無法訪問的文件。
須藤納米 /etc/fstab
nano 編輯器打開並加載了“/etc/fstab”文件。
如果沒有sudo
權限,您只能將其作為只讀文件打開。 瑪麗不再有這些限制。 她可以保存所做的任何更改。
關閉編輯器,不要保存您所做的任何更改。
通過編輯 sudoers 文件限制 sudo 權限
我們的另一個用戶 Tom 將被授予安裝軟件的權限,但他不會獲得授予 Mary 的所有權限。
我們需要編輯sudoers
文件。
須藤 visudo
在編輯器中向下滾動,直到看到“用戶權限規範”部分。 尋找類似於“允許該組的成員執行任何命令”的評論。 在文件中我們找到需要將 Mary 添加到的組的名稱的位置相同。
在該部分下方添加這些行。
# 用戶tom可以安裝軟件 湯姆所有=(根)/usr/bin/apt
第一行是一個簡單的註釋。 請注意,用戶名“tom”和單詞“All”之間有一個製表符。
這就是線路上的項目的含義。
- tom :用戶默認組的名稱。 通常這與其用戶帳戶的名稱相同。
- ALL= :此規則適用於該網絡上的所有主機。
- (root) :“tom”組的成員(即用戶 Tom)可以為列出的命令承擔
root
權限。 - /usr/bin/apt :這是用戶 Tom 可以以
root
身份運行的唯一命令。
我們在這裡指定了apt
包管理器,因為這台計算機使用的是 Ubuntu Linux。 如果您使用不同的發行版,則需要用適當的命令替換它。
讓我們登錄 Tom,看看我們是否得到了預期的行為。 我們將嘗試編輯“/etc/fstab”文件。
須藤納米 /etc/fstab
該命令被拒絕,我們被告知“不允許用戶 tom 以 root 身份執行 '/usr/bin/nano /etc/fstab' ...”
這就是我們想要的。 用戶 Tom 應該只能使用apt
包管理器。 讓我們確保他們能做到這一點。
sudo apt install neofetch
該命令已為 Tom 成功執行。
持有此命令的人
如果您的所有用戶都可以使用sudo
,那麼您將手頭上的混亂。 但是值得推廣其他用戶,這樣他們就可以分擔您的管理負擔。 只要確保他們是有價值的,並密切關注他們。
即使您是計算機上的唯一用戶,也值得考慮創建另一個用戶帳戶並為其提供對sudo
的完全訪問權限。 這樣,如果您發現自己被鎖定在主帳戶之外,您可以使用另一個帳戶登錄以嘗試糾正這種情況。
相關:如何在 Linux 上查看 sudo 命令用法