什麼機制可以防止任何使用者通過 root 訪問任何其他使用者的文件?
在多使用者系統上,什麼可以防止任何使用者通過 root 訪問任何其他使用者文件?作為上下文,這個問題是基於我的理解如下:
有兩個與 root 權限相關的命令,
sudo
和su
. 使用sudo
,您不會成為另一個使用者(包括 root)。sudo
具有代表您執行的已批准命令的預定義列表。由於您沒有成為 root 或其他使用者,因此您只需使用自己的密碼進行身份驗證。使用
su
,您實際上成為 root 或其他使用者。如果你想成為使用者 Bob,你需要 Bob 的密碼。要成為 root,您需要 root 密碼(將在多使用者系統上定義)。參考:howtogeek.com:
su
將您切換到 root 使用者帳戶並需要 root 帳戶的密碼。sudo
以 root 權限執行單個命令——它不會切換到 root 使用者。和
如果執行 su bob 命令,會提示輸入 Bob 的密碼,shell 會切換到 Bob 的使用者帳戶;computerhope.com 上的類似描述
‘sudo’ 是 root 二進制 setuid,代表授權使用者執行 root 命令
如果您成為 root,則可以訪問所有內容。任何未經授權訪問其他使用者帳戶的人都不會獲得 root 密碼,也不會擁有
sudo
允許它的定義。在您查看類似此連結的內容之前,這一切都是有道理的,這是一個使用教程
sudo -V
,然後sudo su -
僅使用您自己的密碼即可成為 root。如果任何使用者都可以在沒有 root 密碼的情況下成為 root,那麼什麼機制可以保護使用者文件免受未經授權的訪問?
和之間的主要區別在於用於身份驗證的機制。使用者必須知道密碼(這應該是一個嚴密保護的秘密),而使用者使用他/她自己的密碼。為了阻止所有使用者造成混亂,幸運的是,可以使用該文件配置命令釋放的權限。
sudo``su``su``root``sudo``sudo``/etc/sudoers
這兩個命令經常以另一個使用者的身份執行一個命令
root
。
sudo su -
在您給出的範例中有效,因為在文件中配置了使用者(或使用者所屬的組)/etc/sudoers
。也就是說,他們被允許使用sudo
. 有了這個,他們使用sudo
來臨時獲得root
特權(這是沒有提供使用者名時的預設設置)並root
啟動另一個 shell (su -
)。他們現在可以在root
不知道root
密碼的情況下訪問。相反,如果您不允許使用者使用,
sudo
那麼他們將無法使用sudo su -
.發行版通常有一個組(通常稱為
wheel
),其成員可以sudo
用來執行所有命令。將它們從該組中刪除將意味著它們sudo
在預設情況下根本無法使用。這樣做的行
/etc/sudoers
是:## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
雖然從該組中刪除使用者會使您的系統更加安全,但也會導致您(或其他系統管理員)需要代表您的使用者在系統上執行更多管理任務。
更明智的折衷方案是配置
sudo
讓您更細粒度地控制誰可以使用sudo
和誰不可以使用,以及允許使用哪些命令(而不是所有命令的預設設置)。例如,## Allows members of the users group to mount and unmount the ## cdrom as root %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
(僅在註釋掉之前的 %wheel 行或
wheel
組中沒有使用者時有用)。據推測,發行版沒有將這種更細粒度的配置作為標準配置,因為無法預測管理員對其使用者和系統的要求。
底線是 - 了解詳細資訊,您可以在允許其他不授予使用者shell 訪問權限的命令或訪問可以更改其他使用者文件的命令的同時
sudo
停止。您應該認真考慮您允許使用誰以及使用到什麼級別。sudo su -``root``sudo
**警告:**始終使用該
visudo
命令來編輯sudoers
文件,因為它會為您檢查您的編輯,並試圖將您從配置錯誤的文件(由於語法錯誤)阻止您sudo
用於編輯任何錯誤的尷尬情況中解救出來。root
在預設情況下禁用帳戶的Debian/Ubuntu 和變體上尤其如此。