Files
所有者/root 和 RUID/EUID 之間的區別
我對問題中提到的概念相對較新,從不同來源閱讀它們只會使它們更加混亂。所以這是我到目前為止所理解的:
當我們被授予文件權限時,它們看起來像這樣:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
我們假設
user2
組中的使用者users
嘗試執行file.bin
. 如果未設置 setuid 位,這將意味著 的 RUID 和 EUIDfile.bin
都等於 的 UIDuser2
。但是由於設置了 setuid 位,這意味著 RUID 現在等於 的 UIDuser2
,而 EUID 是文件所有者的 UIDuser1
,.我的問題是:
- 文件的所有者和文件的所有者有什麼區別
root
?是否root
具有與所有者相同的權限?或者我們是否需要在權限列表中單獨輸入一個root
?- RUID和EUID的區別?
- 據我了解,RUID 和 EUID 僅適用於程序。如果是這樣,為什麼他們有使用者 ID 的值?
- 如果 RUID 是創建程序的使用者,而 EUID 是目前正在執行程序的使用者,那麼這個問題的第一個答案的第一句話對我來說沒有任何意義。
- 我是否正確理解 setuid 位的作用?
以下是答案:
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
.