文件的访问权限有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、测试 文件 的其他文件权限位 ,

 

posted on 2013-05-30 17:53  wowk  阅读(365)  评论(0编辑  收藏  举报