Files

所有者/root 和 RUID/EUID 之間的區別

  • June 22, 2018

我對問題中提到的概念相對較新,從不同來源閱讀它們只會使它們更加混亂。所以這是我到目前為止所理解的:

當我們被授予文件權限時,它們看起來像這樣:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin

我們假設user2組中的使用者users嘗試執行file.bin. 如果未設置 setuid 位,這將意味著 的 RUID 和 EUIDfile.bin都等於 的 UID user2。但是由於設置了 setuid 位,這意味著 RUID 現在等於 的 UID user2,而 EUID 是文件所有者的 UID user1,.

我的問題是:

  1. 文件的所有者和文件的所有者有什麼區別root?是否root具有與所有者相同的權限?或者我們是否需要在權限列表中單獨輸入一個root
  2. RUID和EUID的區別?
  • 據我了解,RUID 和 EUID 僅適用於程序。如果是這樣,為什麼他們有使用者 ID 的值?
  • 如果 RUID 是創建程序的使用者,而 EUID 是目前正在執行程序的使用者,那麼這個問題的第一個答案的第一句話對我來說沒有任何意義。
  • 我是否正確理解 setuid 位的作用?

以下是答案:

  1. root始終具有對文件和目錄的完全訪問權限。文件的所有者通常也有它們,但這並不總是正確的。例如:
-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin

user1所有者;但是它們只能讀取執行,但root仍然具有文件的完全訪問權限 ( rwx )。 2. RUID 是真實使用者 ID,它永遠不會(幾乎)改變。如果user2登錄到系統,則會啟動 shell,並將其真實 ID 設置為user2。他們從shell啟動的所有程序都將繼承真實IDuser2作為它們的真實ID。

EUID 是有效使用者 ID,它會針對使用者執行的已設置setuid 位的程序(而不是使用者)進行更改。

如果user2執行file.bin,則 RUID 將是user2,而啟動的程序的 EUID 將是user1

讓我們使用以下情況passwd

-rwsr-xr-x 1 root root 45396 may 25  2012 /usr/bin/passwd
  • user2想要更改他們的密碼時,他們執行/usr/bin/passwd
  • RUID 將是user2,但該程序的 EUID 將是root.
  • user2只能用於passwd更改自己的密碼,因為內部passwd檢查 RUID,如果不是root,則其操作將僅限於真實使用者的密碼。
  • EUID 必須變為root的情況,passwd因為程序需要寫入/etc/passwd/或/etc/shadow.

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