Linux 上預設組和使用者背後的原因
看看一些常見的 Linux 發行版(分別是 ArchLinux 和 Debian)上的預設使用者和組管理,我想知道關於它的兩件事以及修改預設設置和配置的後果。
USERGROUPS_ENAB
in的預設值/etc/login.defs
好像是“yes”,體現在 man 中可以找到的*“預設情況下,也會為新使用者創建一個組”*useradd
,所以每次創建新使用者時,組是用相同的名稱創建的,並且只有這個新使用者。這有什麼用,或者這只是一個佔位符?我覺得這樣做我們正在失去作為使用者/組/其他人的權限管理的一部分。有一個組“使用者”或“常客”或任何你想稱之為的組是每個使用者的預設組而不是擁有他們自己的組,這會很糟糕嗎?
我的問題的第二部分,仍然基於我在 Arch 和 Debian 上看到的內容:預設創建了很多使用者(FTP、HTTP 等)。它們有什麼用,還是僅出於歷史原因而存在?
我正在考慮刪除它們,但不想破壞任何可以使用它的東西,但我從來沒有見過這樣做的東西,也不知道什麼可以。我從未見過任何使用者所屬的預設組(tty、mem 等)也是如此。
每使用者組
我也沒有在每個使用者組中看到很多實用程序。主要案例是如果使用者想要允許“朋友”訪問他們的文件,他們可以將朋友使用者添加到他們的組中。我遇到的很少有系統實際上以這種方式使用它。
當
USERGROUPS_ENAB
in/etc/login.defs
設置為“no”時,useradd
將所有創建的使用者添加到欄位定義的組/etc/default/useradd
中GROUP
。在大多數發行版中,這被設置為100
通常對應於users
組的 GID。這確實允許您對使用者進行更通用的管理。然後,如果您需要更好的控制,您可以手動添加這些組並將使用者添加到其中。預設創建的組
它們中的大多數來自歷史原因,但許多今天仍然有效:
- disk 是擁有最多磁碟驅動器設備的組
- lp 擁有並行埠(有時配置為對 cups 的管理員權限)
- uucp 經常自帶串口(包括USB串口)
- 在 cd 驅動器上安裝權限需要 cdrom
- 一些系統使用 wheel 來獲得 sudo 權限;有些不是
- 等等
其他組由後台腳本使用。例如,
man
執行時生成臨時文件等;它的程序使用 man 組來處理其中的一些文件,並且通常會自行清理。但是,根據Linux 標準基礎核心規範,只有 3 個使用者,即 root、bin 和 daemon 是絕對強制的。其他組背後的基本原理是:
指定可選使用者和組的目的是減少應用程序和發行版之間發生名稱衝突的可能性。
因此,看起來最好保留這些組。理論上可以在不損壞的情況下刪除它們,儘管對於某些“神秘”的事情可能開始無法正常工作(例如,如果您殺死該組,則某些手冊頁不會呈現等)。將它們留在那裡並沒有任何害處,並且通常假設所有 Linux 系統都會擁有它們。