(2.8)文件和目录操作——Linux文件权限管理

1.用户和组ID

  • Linux系统通过进程的有效用户ID和有效用户组ID来决定进程对系统资源的访问权限
  • 与一个进程相关联的用户ID和用户组ID有如下几种
    (2.8)文件和目录操作——Linux文件权限管理
  • 通常情况下, 有效用户ID等于实际用户ID, 有效组ID等于实际组ID;
  • 可执行文件的权限中有一个特殊标志, 定义为“当执行此文件时,将进程的有效用户ID设置为文件的所有者” , 与此类似, 组ID也有类似的情况。 这两个标志位称为: “设置用户ID” 和 “ 设 置 组 ID” , 这 两 位 都 包 含 在 stat 信 息 中 的 st_mode 中 , 可 用S_ISUID,S_ISGID测试。
    S_ISUID:有效用户id等于文件所有者的uiD,而不是实际用户ID
    S_ISGID:有效用户组id等于文件所有者的gid,而不是用户组gid

2.文件权限:读,写,执行

  • 对于一个文件的读权限决定了我们是否能够打开该文件进行读操作
  • 对一个文件的写权限决定了我们是否能够打开该文件进行写操作
  • 为了在open函数中对一个文件指定O_TRUNC标志(会将文件内容的长度清0,要与O_READ结合使用), 必须对该文件具有写权限
  • 执行某个可执行文件, 都必须对该文件具有执行权限

3.目录权限:读,写,执行

  • 目录文件的执行权限也表示可以进入该目录
  • 通过文件名打开一个任意类型的文件时, 对该文件路径名中包含的每一个目录都应具有执行权限
  • 为了在一个目录中创建一个新文件, 必须对该目录具有写权限和执行权限
  • 为了删除一个文件, 必须对包含该文件的目录具有写权限和执行权限,对该文件本身则不需要有读、 写权限