感觉看课本好无聊,那么多函数记住了又忘。 还是等看完了写个小作品吧。
关于文件权限的一些小知识点:
stat函数返回关于文件的信息。是一个struct stat结构体,里面包含用户/组id,大小,修改时间,类型,权限等信息
文件权限
若要查找某个文件,需要对包含改文件的目录具有执行权限。若要在某个目录中创建或者删除某个文件需要对目录具有写权限和执行权限。
每次对文件进行打开删除或者运行,内核都要进行权限测试,分下面四步进行:
注意:若进程已经拥有此文件,那么按照用户id权限进行测试不再进行组权限判定。
新文件和目录的所有权
一般来讲新文件的用户id为进程的有效用户id,用户组id可以为两种(1)进程的组id(2)所在目录的组id。
在(2)的情况下,在目录下创建的文件和目录具有相同的组id,于是文件和目录的所有权由该点向下传递。
相关函数
access函数按照实际用户id和实际组id进行权限测试。
关于硬链接软链接不再介绍了。贴上几句细节问题吧。
(1)父目录中的每一个子目录都会使父目录的链接数+1
(2)硬链接一般在同一个文件系统中,需要更高级权限来创建,软链接就随意了。
文件的时间
![](https://img-my.csdn.net/uploads/201301/26/1359132491_5373.png)
int utime(const char* pathname,const stuct utimbuf*time)函数用来修改文件的访问时间和修改时间。如果time为null那么修改为当前时间,否则修改为time所指向的结构体中的值。utimbuf结构体中包含访问时间和修改时间两个变量。
目录操作
对目录具有访问权限的任何用户都可以读目录,但是只有内核可以写目录。
设备特殊文件