首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux进程的几个用户id及其转换

http://www.oklinux.cn  2008-06-13  linuxidc   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

Linux为每个进程设置了3个ID:实际用户id,有效和用户id和保存的设置id

关于这3个id,需要注意以下几个方面:

1.只有root才能改变进程的实际用户id。例如,用户从终端login程序登陆,此时login程序的3个id都是root。然后正确输入用户名密码之后,login程序于是setuid到注册的id。于是3个id都被改成了注册的用户id。然后exec shell程序。非root用户注册进入shell之后,他的实际用户id是绝对不会被更改的。除非logout之后,重新注册shell。一些su改变用户的操作实际上都是改变shell进程的有效用户id,并不是shell进程的实际用户id。

2.exec程序时,可执行文件有一个设置id位,该位的设置与否与进程的有效用户id和保存的设置id有很大关系。可以用ll命令查看,如果有s标记的话说明设置了,否则没有。首先没有设置的情况,3个id均不会改变和调用者的进程的id一样。现在是设置了的情况,实际用户id仍然不会改变,有效用户id则设置为可执行文件的属主用户,保存的设置id设置成有效用户id一样。这样的程序有很多,比如passwd,su等。例如,passwd程序,一个普通用户foo通过shell执行passwd,首先shell进程fork产生一个子进程,然后子进程exec passwd程序。由于passwd设置了设置id位,并且passwd是属于root用户。于是子进程设置有效用户id位为root,保存的设置用户id也设置成了root。passwd执行完毕时,再改变有效用户id和保存的设置用户id为以前的实际用户id的值。

3.保存的设置-用户- ID 是由exec从有效用户I D复制的。在exec按文件用户I D设置了有效用户I D后,即进行这种复制,并将此副本保存起来。


上一篇:Linux系统下内存申请应用的方法原理总结   下一篇:专家预言:PHP将会比Java更受欢迎

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·专家预言:PHP将会比Java更受欢迎
·Linux下搭建j2me环境开发手机游戏
·关于Linux下面的一些“绿色软件”的命令行启动
·PHP程序不适用大型系统的九大原因
·GCC编译器学习记
·Linux 下java图像处理报错解决办法
·Linux系统下判断是否正常关机的一个简单方法
·FS2410自带光盘Linux内核编译问题解决
·Linux2.6 模块的两种编译方式
·Linux进入临界去开关中断的几种方式
·Ubuntu下使用substance美化JAVA界面
·Linux多线程socket编程一些心得
·Linux C中也有“ThreadLocal”
·Linux 系统学习之shell脚本学习
·SHELL脚本的编缉、存储、执行
·将clock_t转化为秒值在Windows与Linux平台下的差异
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·专家预言:PHP将会比Java更受欢迎
·Linux下搭建j2me环境开发手机游戏
·关于Linux下面的一些“绿色软件”的命
·PHP程序不适用大型系统的九大原因
·GCC编译器学习记
·Linux 下java图像处理报错解决办法
·Linux系统下判断是否正常关机的一个简
·FS2410自带光盘Linux内核编译问题解决
·Linux2.6 模块的两种编译方式
·Linux进入临界去开关中断的几种方式
·Ubuntu下使用substance美化JAVA界面
·Linux多线程socket编程一些心得
  阅读排行
·开源空间 网络安全工具开发函数库Libne
·Linux socket编程实例:echo服务器程序
·Linux下Qtopia Core 4.3(QT/E)交叉编译
·Linux环境下OpenGL编程学习
·Linux编程时获取当前时间实例解析
·GNU/Linux应用程序编程:用管道进行编
·升级Redhat Linux 9.0内核有感
·Linux系统中限制用户进程CPU及内存占用
·Linux中断处理学习笔记
·解决Linux中Matlab中文乱码问题
·Linux程序设计入门 系统进程的详细介绍
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux环境下Wine的中文显示以及freetyp
·SUSE Linux中安装Quartus 7.2过程笔记
·Linux下安装g77 fortran complier过程
网摘收藏: