和進程相關聯的用戶信息(讀unix高級編程筆記)

  和每個進程相關聯的用戶id和組id:

 

  實際用戶id

  實際組id                             我們實際上是誰

  有效用戶id

  有效組id

  添加組id                              用於文件存取許可權檢查

  保存的set-user-id

  保存的set-group-id               由exec函數保存

 

  實際用戶id和實際組id標識我們究竟是誰。這兩個字段取自登錄操作系統的用戶。

  有效用戶id和有效組id通常等於實際用戶id和實際組id,決定了我們的文件訪問權限。在文件方式字st_mode(可以由stat函數得到)設一個特殊標誌,其定義爲“當執行此文件時,進程的有效用戶id和有效組id設置爲執行文件的所有者用戶id和所有組id。在文件方式字中,這兩個特殊標誌位,分別是set-user-ID和set-group-ID.舉一個例子是passwd執行文件,需要修改paasswd文件,這個文件只有root用戶可以修改。那麼普通用戶修改自己密碼的時候,爲什麼會有權限修改這個文件的內容呢。原因就是passwd進程執行的時候,有效用戶id和有效組id設置爲passwd執行文件的所屬用戶id和所屬組id。

  保存的set-user-id和set-group-id保存了有效用戶id和有效組id的副本。

 

  一個進程在試圖open一個文件的時候,是根據進程的有效用戶id和有效組id進行權限的檢查。

  1)若進程的有效用戶id是0(root),則允許存取

  2)若進程的有效用戶id等於文件的所有者id,檢查相應的權限位

  3)若進程的有效用戶組id等於文件的所有組id,檢查相應的權限位

  4)檢查其他權限位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章