Permissions

什麼機制可以防止任何使用者通過 root 訪問任何其他使用者的文件?

  • October 7, 2014

在多使用者系統上,什麼可以防止任何使用者通過 root 訪問任何其他使用者文件?作為上下文,這個問題是基於我的理解如下:

有兩個與 root 權限相關的命令,sudosu. 使用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 上的類似描述

tecmint.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 和變體上尤其如此。

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