一、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