与一个进程相关联的ID有6个或更多,它们如表4-4所示:

表4-4 与每个进程相关联的用户ID和组ID

实际用户ID                            我们实际上是谁
实际组ID
有效用户ID                            用于文件访问权限检查
有效组ID
附加组ID
保存的设置用户ID                   由exec函数保存
保存的设置组ID
  • 实际用户ID和实际组ID标识我们究竟是谁(执行这个程序的用户和组)。这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话间这些值并不改变,但是超级用户进程有方法改变它们。
  • 有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限。
  • 保存设置用户ID和保存设置组ID在执行一个程序时包含了有效用户ID和有效组ID的副本

在POSIX.1 2001版中,需要这些保存的ID。在早期POSIX版本中,它们是可选的。一个应用程序在编译时可测试常量_POSIX_SAVED_IDS,或在运行时从参数_SC_SAVED_IDS调用函数sysconf,以判断此实现是否支持这种特征。

通常,有效用户ID等于实际用户ID,有效组ID等于实际组ID。

每个文件都有一个所有者和组所有者,所有者由stat结构中的st_uid成员表示,组所有者则由st_gid成员表示。

当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组ID通常就是实际组ID。但是可以在文件模式字(st_mode)中设置一个特征标志,其含义是“当执行此文件时,将进程的有效用户ID设置为文件所有者的用户ID(st_uid)”。与此相类似,在文件模式字中可以设置另一位,它使得将执行此文件的进程的有效组ID设置为文件的组所有者ID(st_gid)。在文件模式字中的这两位被称为设置用户ID(set-user-ID)位和设置组ID(set-group-ID)位。

例如,若文件所有者是超级用户,而且设置了该文件的设置用户ID位,然后当该程序由一个进程执行时,则该进程具有超级用户特权。不管执行此文件的进程的实际用户ID是什么,都进行这种处理。例如,UNIX程序passwd(1)允许任一用户改变其口令,该程序是一个设置用户ID程序。因为该程序应能将用户的新口令写入口令文件(一般是/etc/passwd或/etc/shadow)中,而只有超级用户才具有对该文件的写权限,所有需要使用设置用户ID特征。因为运行设置用户ID程序的进程通常得到额外的权限,所以编写这种程序时要特别谨慎。

设置用户ID及设置组ID位都包含在st_mode值中。这两位可用常量S_ISUID和S_ISGID测试。

本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/

最新文章

  1. Redis系列-好玩的用法
  2. win7挂载NFS
  3. [c++] Iterators
  4. MTNET 自用ios网络库开源
  5. 最长公共子序列模板(LCS)和LICS模板
  6. C++统计一段文字中各单词出现的频率
  7. jvm之xms、xmx等参数分析
  8. 解决android sdk manage打开闪退的解决方法
  9. Universal-Image-Loader(UIL)使用方法&流程图&源码分析 ----- 未完
  10. 你应该了解的 7个Linux ls 命令技巧
  11. js学习笔记第一课(js基础知识)
  12. NSTimer定时器
  13. 掌握NIO,程序人生
  14. centos 6.3安装ssh
  15. 随机四则运算的出题程序java
  16. <图文教程>VMware 14上Ubuntu 16.04 desktop版的安装
  17. 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
  18. 【tomcat】sessionId学习(未完待续)
  19. 2018.10.04 NOIP模拟 排队(组合数学)
  20. 【转】Bri's改装笔记

热门文章

  1. 一致性hash算法 - consistent hashing
  2. JDBC 与ODBC的区别
  3. Hibernate4.x之映射关系--单向一对多
  4. 将你的Asp.NET应用程序嵌入到SharePoint
  5. 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画
  6. win7远程链接ubuntu 桌面版
  7. mvc5 HTML Helper
  8. 卸载redhat6.5的yum,安装centos6的yum,配置第三方yum源
  9. POJ1149 PIGS
  10. TCP/IP协议详解内容总结