第四章:用户ID和组ID

用户 ID  和  组 ID 

   注意:以下的概念通常是跟进程相关的

  文件所有者ID 和 文件所有者组ID

        这两个id可通过获取文件stat来获取

        struct  stat  结构中的  st_uid  和  st_gid   成员真好就对应这两个id

  实际用户ID 和 实际组ID   :

        int  getuid();    获取用户ID

        int  getgid();  获取实际组ID

        这俩ID 指出执行当前进程的是谁 

  有效用户ID 、 有效用户组ID   和    附加组ID:

        int  geteuid();  获取有效用户ID

        int  getegid();  获取有效组ID

         用于文件访问权限的检查。

        通常,进程的有效用户ID 就是 进程的 实际用户ID

        有效组ID 就是 实际组ID

        在用户模式字中 (就是  struct stat 结构中的st_mode成员 ),有 两个位 : 设置用户ID位   和   设置用户组位

        如果这两个位设置后 , 执行可执行文件的时候  进程的有效用户 ID  就会被设置成  可执行文件的 所有者的用户ID

        进程的有效组ID 会被设置成  可执行文件的 所有者的组ID

        这样进程就会以  可执行文件所属用户 所 拥有的 权限 运行

        设置用户ID 位  和 设置用户组 ID  位   可以用  S_ISUID   和 S_ISGID   这两个 常量测试

  

  保存的设置用户ID  和 保存的设置组ID

        当进程的有效用户ID   和  有效用户组ID 改变的时候,  保存的设置用户ID   和  保存的设置组ID   这俩  变量会保存  有效ID 的 一个副本

        当调用  exec  函数的时候, 会利用  这两变量来恢复进程的有效ID

        

        

    

  

  

原文地址:https://www.cnblogs.com/wowk/p/3108515.html