#include
int stat(const char *restrict pathname,struct stat *restrict buf);//由文件路径名字做第一个参数,得到文件的信息存入buf
int fstat(int filedes,struct stat *buf);//根据文件描述符来做第一个参数,得已经在描述符filedes上打开文件的信息存入buf;
int lstat(const char *restrict pathname,struct stat *restric buf);//文件路径做第一参数,可以得到符号链接信息而不是符号链接引用的文件。文件类型可以是符号链接文件。
struct stat{ ...................};//buf返回指向此结构体的指针,包含文件的信息。
文件类型:regular file,directory file block file,character file ,socket ,fifo,symbolic link
与进程相关联的ID有6个或者更多:实际用户ID,实际组ID // 我们实际是谁 这个是文件的拥有者,文件的性质
有效用户ID,有效组ID ,附加组ID // 用于文件访问权限检查,进程的性质
保存的设置用户ID,保存的设置组ID // 由exec函数保存
在struct stat结构体的st_mode中有两个特殊位,设置用户ID(set-user-ID)位,设置组ID(set-group_ID)位。可以使得执行此文件的进程的有效用户ID,设置为文件所有者的用户ID。这样就可以访问文件。例如超级用户设置某个文件的设置用户ID位,然后当该程序由另一个程序执行时,则该进程对此文件或者程序具有超级用户特权。而不用管此执行文件的实际进程是的实际用户ID是什么。
st_mode 包含文件的访问权限位,9种权限:S_IRUSR,S_IRGRP,S_IROTH,S_IXOTH等
阅读(765) | 评论(0) | 转发(0) |