綠色代表程序(程序的性質)橙色代表檔案(檔案的性質)。當程序試圖開啟檔案時,核心會進行如下許可權測試:
0. 若程序的有效使用者id是0
(超級使用者),則允許訪問。
1. 若程序的有效使用者id
等於檔案的所有者
id,那麼進行檔案所有者訪問許可權的測試(與
open
的引數對比),對應圖中的1。
2. 若程序的有效組id
或程序的附加組
id之一等於檔案的組
id,則進行檔案所屬組的許可權測試,對應圖中的2.
3. 測試檔案的other
訪問許可權。
注:如果第1
步中程序有效使用者
id等於檔案所有者
id,但相應許可權的測試不符合,則不會進入第
2步的組測試。對於
2,3步也同理。
下面看一下乙個使用者執行程序的過程:
每個使用者登入後都對應乙個uid
,乙個gid
,一組附加組
id,如上圖紅色部分。
(2)
每個程式檔案(黃色部分)和普通檔案一樣擁有檔案所有者id
,檔案所有組
id,並具有相應
rwx許可權。
(3)
使用者開啟檔案時進行圖1
描述流程的
x許可權測試(只不過此時不是程序而是使用者)。
(4)
當a.使用者是超級使用者或
b.使用者
id和檔案所有者
id相同且檔案所有者具有
x許可權或
c.使用者的
gid和檔案的所屬組
id相同且檔案所屬組具有
x許可權或
d.檔案的
other具有x
許可權,則使用者可執行此程式,產生程序(上圖綠色部分)。
(5)
使用者的uid
變成程序的實際使用者
id,使用者的
gid變成程序的實際組
id,使用者的附加組
id變成程序的附加組id。
(6)
當程式檔案沒有設定
」設定使用者id
位(suid)」
和」設定組id
(sgid)位」
時程序的有效使用者id
等於程序的實際使用者
id,程序的有效組
id等於程序的實際組id。
(7)
當程式檔案設定了
」設定使用者id
位(suid)」
時,程序的有效使用者id
儲存到程序「儲存的設定使用者
id」,之後程序的有效使用者
id變為程式檔案的所有者id。
(8)
當程式檔案設定了
」設定組id
(sgid)位」
時,程序的有效使用者組id
儲存到程序「儲存的設定使用者組
id」,之後程序的有效使用者組
id變為程式檔案的所有組id。
理清Linux中的各種使用者ID關係
綠色代表程序 程序的性質 橙色代表檔案 檔案的性質 當程序試圖開啟檔案時,核心會進行如下許可權測試 0.若程序的有效使用者id是0 超級使用者 則允許訪問。1.若程序的有效使用者id 等於檔案的所有者 id,那麼進行檔案所有者訪問許可權的測試 與 open 的引數對比 對應圖中的1。2.若程序的有效...
實際使用者ID 有效使用者ID 設定使用者ID的區別
整理自 之前看 unix環境高階程式設計 沒明白書上說的,後來google搜到了這個帖子,讀了發現很通俗易懂,記錄一下,方便下次再讀。乙個程序的 real user id 是指執行此程序的使用者角色的 id。乙個程序的 effective user id 是指此程序目前實際有效的使用者 id 也就是...
linux程序的使用者ID,有效ID,儲存的設定ID
乙個系統啟動後,使用者login登入後,會產生乙個使用者程序,該程序和其它程序一樣有7個id值 實際使用者id,有效使用者id,儲存的設定id set user id 實際組id,有效組id,新增組id以及儲存的設定組id。這裡只說uid,這三個id都來自登入名。至此我們有了乙個使用者shell程序...