Root

ID 結果因提問者而異

  • October 5, 2017

我有通過實時組具有實時權限的 userX。我想給那個使用者管理員權限,所以我切換到 root

~>su root

跑了

#>usermod -a -G root userX

短暫延遲後,我回到提示並測試了效果。

#>id userX
#>uid=1000(userX)  gid=0(root) groups=0(root),1001(realtime)

所以看起來我是成功的。我通過添加一個虛擬使用者退出並測試了我的新管理員。

#>exit
~>useradd BSD
bash: /usr/sbin/useradd: Permission denied

出了點問題。我嘗試驗證我的群組成員資格,但它給了我不同的答案。

~>id
~>uid=1000(userX)  gid=1001(realtime) groups=1001(realtime) contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

所以,我需要知道為什麼我的使用者說它不是 root 的一部分,而 root 說使用者是。我錯過了什麼?

發生了什麼?

使用者所在的組列表僅在登錄時設置(並且可能通過使用很少使用的sg命令進行修改,但僅當為該組設置了組密碼時才有效)。如果該使用者註銷,然後重新登錄,他們應該會在該組中看到自己。但是,在 GID 0 的組中(在大多數 Linux 系統上為“root”,在大多數非 Linux 系統上為“wheel”或“adm”)與擁有管理權限不同,實際上從安全形度。

為什麼這與行政特權不同?

root 使用者 (UID 0) 是特殊的。根組(GID 0,wheel由於我似乎找不到的歷史原因在許多非 Linux 系統上呼叫)不是。您的使用者將能夠訪問 root 組所擁有的文件,但其他的可能不多。這是一個有點複雜的區別,但卻是一個非常重要的區別。

為什麼這是個壞主意?

這是一個壞主意,原因幾乎與始終以 root 使用者身份執行是一個壞主意的原因相同。使系統無法使用總是會犯一個錯誤(例如,在大多數 Linux 系統上,成為 root 組的一部分意味著您可以輕鬆地使系統無法啟動,因為您可以刪除其中的內容/boot)。

授予此使用者管理權限的正確(和安全)方法是什麼?

sudo如果可能,請設置doas或任何其他權限提升工具,而不是su您的系統上存在的其他權限提升工具,以允許他們訪問。如果您除了 之外沒有其他工具su,請安裝一個(我建議sudo,它是使用最廣泛的工具,因此是最容易學習的工具之一,因為有很多文件)。如果這也不是一個選項,那麼su當您需要執行管理任務時升級是正確的選項(儘管這樣做要小心,因為su不會正確重置通過它呼叫的命令的環境)。

引用自:https://unix.stackexchange.com/questions/396345