目录
一、文件操作时的权限检查规则
st mode中记录的文件权限位
st mode本质上是一个32位的数(类型就是unsinged int),这个数里的每一个位表示一个含义。
文件类型和文件的权限都记录在st_mode中。我们用的时候使用专门的掩码去取出相应的位即可得知相应的信息。
ls -1打印出权限列表
权限位共9位,3位为一组。第一组分别表示文件的属主对该文件的可读、可写、可执行权限;第2组表示文件的属主所在的组(group)对应的权限。
一个程序a.out被执行, a.out中试图去操作一个文件1.txt,这时候如何判定a.out是否具有对1.txt的某种操作权限呢?
判定方法基本是:首先1.txt具有9个权限位,规定了3种人(user、group、 others )对该文件的操作权限。所以我们判定1. txt是否能被a.out来操作, 关键先搞清楚a.out被谁执行,也就是当前程序(进程)是哪个用户的进程。
access函数检查权限设置
文本权限管控其实较为复杂,一般很难明确知道自己是否对一个文件具有某种权限。设计优秀的软件应该是:在操作某个文件之前先判断当前是否有权限进行此操作,如果有,操作就可以进行,没有则提供错误信息给用户。
access函数可以测试得到当前执行程序的用户在当前环境下对目标文件是否具有某种操作权限。
access具体手册描述如下:
根据手册描述,主要用法为int access(const char *pathname,int mode),第一个参数为文件名路径,第二个参数已给出,有F_OK,R_OK,X_OK,W_OK。