APUE讀書筆記(2)

2021-05-22 19:03:40 字數 1023 閱讀 5167

chapter4 file & directory

struct stat

檔案型別

用提供的巨集來判斷,如if(s_isdir(buf.st_mode))

uid和gid

檔案將其所有者的使用者id和組id記錄在stat結構的st_uid和st_gid

實際使用者id和實際組id用於標識使用者究竟是誰。這兩個欄位在登入時取自口令檔案中的登入項。可以使用getuid和getgid函式查詢。有效使用者id和有效組id,附加組id用於檔案訪問許可權檢查。可以使用geteuid和getegid函式查詢。儲存的設定使用者id和儲存的設定組id執行時包含了有效使用者id和有效組id的副本。
通常有效使用者/組id就是實際使用者/組id。但是st_mode中包含兩個設定id位,如果被設定,則執行此檔案時,將有效使用者/組id設定為檔案所有者的使用者/組id。程式對檔案的訪問許可權主要就是看有效使用者id和組使用者id,這樣普通使用者也可以擁有超級使用者的許可權。

檔案訪問許可權檢查

程序每次開啟,建立或刪除乙個檔案時,核心就進行檔案訪問許可權檢查。核心按順序執行以下四步,一旦滿足就停止檢查:

1若程序的有效使用者id是0(超級使用者),則允許訪問。

2若程序的有效使用者id等於檔案的所有者id,並且適當的訪問許可權位被設定,則允許訪問,否則拒絕訪問。

3若程序的有效組id或程序的附加組id等於檔案所有者的組id,並且適當的訪問許可權位被設定,則允許訪問,否則拒絕。

4若其他使用者適當的訪問許可權位被設定,則允許訪問,否則拒絕訪問。

新檔案和目錄的所有權

新檔案的使用者id設定為程序的有效使用者id。

新檔案的組id取決於它所在目錄st_mode中的設定組id位是否設定。如果該目錄的這一位已經設定,則將新檔案的組id設定為目錄的組id,否則將新檔案的組id設定為程序的有效組id。

檔案系統

1.硬鏈結要求同一檔案系統內

2.只有超級使用者可以建立硬鏈結

APUE讀書筆記 程序通訊

程序通訊 1,管道 pipe 在理解管道時需要注意的地方 管道是半雙工的,不能假設它是全雙工的。它只能用在有公共祖先的程序之間。比如shell幾個命令之間用管道連線,但父程序都是終端程序。1.1 管道的建立 include int pipe int filedes 2 管道一般用在有共同祖先的程序間...

讀書筆記2

關於this指標 雖然this指標大家已經很熟悉了,但是我這裡討論的關於this指標的問題可能大家還沒注意過 為了說明這個關於this的歸屬問題,我自寫了一段再簡單不過的程式,雖簡單但具體 include class a void aa 我的問題是指標p1是指向b自身嗎?一看程式,大家就知道 不是,...

讀書筆記(2)

沉默的藝術 意識科學基礎理論 量子效應只是用於穩定某種內在自由度極大的基本粒子,然後再用基本粒子的內在屬性產生意識體驗。只能通過呈現乙個系統的 物理 屬性來描述乙個系統。只能通過變成內在屬性配對的其中乙個系統,以直接體驗的方式來獲得這些內在屬性的資訊。定義乙個包含所有系統的系統d,除該系統外無任何系...