文件的访问权限有9位 : -xxx-xxx-xxx--
从左到右分别是 ----文件所有者权限---文件所在组用户权限---其他用户权限----
权限:xxx 三个位分别为 -读-写-执行-
当某位为1时,表示有权限,为0 时,则表示无权限
例:-rwxr-xr-x
文件所有者权限为 : rwx (读 写 执行)
文件所在组用户权限:r-x (读 执行)
其他用户权限:r-x (执行)
文件的权限存放在 struct stat 结构中 的 st_mode 字段中。
可以用以下的的常量来测试用户的权限
文件所有者 :S_IRUSR S_IWUSR S_IXUSR
文件组所有者 :S_IRGRP S_IWGRP S_IXGRP
其他用户 :S_IROTH S_IWOTH S_IXOTH
对一个目录下的文件访问的时候,首先要对该目录具有相应的访问权限,然后
才能访问目录下的文件。
例如 : 访问 /usr/include/stdio.h 文件
首先要对 usr 和 include 目录具有执行权限 , 然后对stdio.h具有访问权限
这样才能访问stdio.h文件
文件的权限可以用 chmod 命令 或 chmod() 函数更改
例如:chmod 700 /usr/include/stdio.h
这样 仅仅文件拥有者对该文件有 完全的访问权限 , 而其他用户对该文件无
任何访问权限
进程每次打开、创建 或 删除一个文件的时候,内核都会进行权限位的测试,这种测试
可能涉及文件的所有者 、进程的有效ID 以及 进程的附加组ID
测试步骤如下:
1、如果用户ID 是0 , 则可以访问 (0 是超级用户的用户ID)
2、如果进程的有效用户ID 等于 文件的所有者ID ,则允许以文件被设置的权限位访问,
如果文件的权限位设置 不有允许用户 进行某些访问, 那么就拒绝
3、如果进程的有效组ID 等于 文件的组ID , 则 测试 文件的组权限 。如果不允许访问则
拒绝
4、测试 文件 的其他文件权限位 ,