Linux內(nèi)核總是根據(jù)進(jìn)程的有效用戶ID和有效組ID來決定一個進(jìn)程是否有權(quán)訪問某個文件。因此,在編寫調(diào)整用戶ID的程序時,在讀寫一個文件之前必須明確檢查其用戶是否原本就有對此文件的訪問權(quán)限。為了實(shí)現(xiàn)這種確認(rèn),需要使用access函數(shù)。
一般形式為;
#include<unistd.h>
int access(const char *pathname,int mode);
其中,pathname是希望檢驗(yàn)的文件名(包含路徑),mode是欲檢查的訪問權(quán)限,如下所示
R_OK 檢驗(yàn)調(diào)用進(jìn)程是否有讀訪問權(quán)限
W_OK 檢驗(yàn)調(diào)用進(jìn)程是否有寫訪問權(quán)限
X_OK 檢驗(yàn)調(diào)用進(jìn)程是否有執(zhí)行訪問權(quán)限
F_OK 檢驗(yàn)規(guī)定的文件是否存在
access檢查用戶對一個文件的權(quán)限情況,根據(jù)mode的值檢查調(diào)用進(jìn)程對文件pathname是否具有讀、寫、或執(zhí)行的權(quán)限。若進(jìn)程實(shí)際用戶具有mode所指出的權(quán)限,access返回0.否則返回-1.
例如:
access("test",06);
access("test",F_OK);
分別用來檢查實(shí)際用戶對test文件是否具有讀寫權(quán)限和test文件是否存在。
新聞熱點(diǎn)
疑難解答
圖片精選