实际用户ID(实际组ID):标识当前用户(所属组)是谁,当用户登陆时取自口令文件。

  有效用户ID(有效组ID):用来决定我们(当前进程)对文件的访问权(即实际该进程的是以那个用户运行的)。

  一般情况下,进程的有效用户ID等于进程的实际用户ID,进程的有效用户组ID等于进程的实际用户组ID。

  但是当可执行程序文件的文件模式(st_mode)中设置了“设置-用户-ID(set_user_id)位”时,进程的有效用户ID等于该可执行文件的拥有者ID。

  同样的如果可执行文件的文件模式(st_mode)中设置了“设置-组-ID(set-group-d)位”时,进程的有效用户组ID等于该可执行文件的拥有组ID例如:

  现在有两个可执行文件test,passwd,其中passwd是linux系统自带的修改密码程序(linux下在/usr/bin目录下),test是我自己编写的测试程序,只是一个无限循环代码如下:

1 #include <stdio.h>
2
3 int main(){
4 while(1){
5 ; //空语句用于实现无限循环
6 }
7 return 0;
8 }

  用ls -l查看这两个文件的详细信息如下:

  

  从图中可以看到test文件的拥有ID和组ID都为zzg(我的登陆账号),passwd文件的拥有者ID和组ID都为root,且由命令提示符可以看出现在我是以zzg用户登陆的,或者用命令id来查看shell下当前用户的用户ID和组ID:

  

  即当前的实际用户ID和实际用户组ID都为zzg。

  现在分别运行test程序和passwd程序,然后在另一个终端下用ps命令查看test的有效ID和有效ID,如下:

  运行程序

    

  ps输出

  

  由图可知

  test实际是以用户ID:zzg,组ID:zzg来运行的,即对PID=8442的进程来说:

    它的实际用户ID为zzg

    它的有效用户ID为zzg   

    它的实际用户组ID为zzg

    它的有效用户组ID为zzg

  passwd实际是以用户ID:root,组ID:zzg来运行的,即对PID=8444的进程来说:

    它的实际用户ID为zzg(由于是当前用户是zzg)

    它的有效用户ID为root

    它的实际用户组ID为zzg

    它的有效用户组ID为zzg

  下面让我们再来看这两个文件的详细信息  

  

  从图中可以看出passwd的设置了“设置-用户-id”位(第四位上的‘s’,为设置该为的标志),但是没有设置“设置-组-id”位,

所以会出现以上的情况,即对PID=8444的进程来说,有效用户ID等于passwd的拥有者ID(root),有效用户组ID等于运行该程序的实际用户组ID(zzg)。

  同样可以看出test的"设置-用户-ID"位,"设置-组-ID"位都没有设置,所以对PID=8442的进程来说,有效用户ID和有效用户组ID分别等于运行该程序的实际用户ID,实际用户组ID。

最新文章

  1. dp和px转换
  2. 关于StdAfx.h和StdAfx.cpp
  3. 201521123024 《Java程序设计》第5周学习总结
  4. Shell编程基础篇
  5. webp图片实践之路(转载)
  6. SonarQube安装文档
  7. java web(一):tomcat服务器的安装和简单介绍,与eclipse关联
  8. [转]Python依赖打包发布详细
  9. base64加密和解码原理和代码
  10. docker 给运行的容器映射本地端口
  11. 【Selenium-WebDriver自学】Selenium-IDE用户扩展(七)
  12. (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法
  13. 标准SQL资料整理
  14. 【LeetCode43】 Multiply Strings
  15. 单点登录 之 OAuth
  16. DateReader读取数据
  17. MySQL集群系列2:通过keepalived实现双主集群读写分离
  18. PL/SQL 训练11--包
  19. 简单使用c3p0连接池
  20. Android View中滚动相关

热门文章

  1. eclipse 统一设置编码_项目工程统一设置成utf8编码_eclipse代码规范
  2. 关于“No loop matching the specified signature and casting was found for ufunc lstsq_n”问题的解决
  3. 使用 Loki 进行日志报警(二)
  4. CentOS无法识别NTFS格式U盘完美解决方案
  5. Linux Hardening Guide
  6. Fluentd部署详解
  7. MySQL学习(2)---MySQL数据类型
  8. a除于b
  9. vue中a标签地址传参
  10. 【论文翻译】KLMo: Knowledge Graph Enhanced Pretrained Language Model with Fine-Grained Relationships