APUE讀書筆記——文件和目錄

一、stat、fstat、lstat函數

#include<sys/stat.h>

int stat(const char *restrict pathname, struct stat*restrict buf);

int fstat(int filedes, struct stat *buf);

int lstat(const char *restrict pathname, struct stat*restrict buf);

返回值:成功返回0,出錯-1

返回文件有關的結構信息,lstat跟stat相似,不同之處在於若是符號鏈接文件,stat返回的是指向文件的信息,而lstat返回的是符號鏈接文件的信息。

struct stat中的變量:file type & mode/i-node num/device num/device num for specialfiles/num of links/user ID of owner …….

二、設置用戶ID和設置組ID

與進程有關的ID有6個或更多:實際用戶ID、實際組ID(標識我們究竟是誰);有效用戶ID、有效組ID、附加組ID(決定我們的文件訪問權限);保存的設置用戶ID、保存的設置組ID(在執行一個程序時包含了有效用戶id和有效組id的副本)

三、新文件和目錄的所有權

新文件的用戶ID設置爲進程的有效用戶ID。組ID:進程的有效組ID 或者它所在目錄的組ID

四、access函數

進程按照實際用戶ID和實際組ID進行訪問權限測試的

#include<unistd.h>

int access(const char *pathname, int mode)

返回值:成功0,出錯-1

五、chmod和fchmod函數

int chmod(const char *pathname, mode_t mode);

int fchmod(int filedes, mode_t mode);

返回值:成功0,出錯-1

六、粘住位

如果一個可執行程序文件的這一位被設置了,那麼在該程序第一次執行並結束時,該程序正文的一個文本被保存在交換區。(程序的正文部分是機器指令部分)這使得下次執行該程序時能較快地將其裝入內存區。

如果對一個目錄設置了粘住位,則只有對該目錄具有寫許可權的用戶並且滿足下列條件之一,才能刪除或更名該目錄下的文件:擁有此文件、擁有此目錄、是超級用戶

七、chown、fchown和lchown函數

更改文件的用戶ID和組ID

 

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