注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

读程序,学习Linux编程(二十四)  

2010-08-30 20:48:28|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

3.17. 实际用户,有效用户

从makedaemon回来继续向下,中间有些sock类的函数,以后再说。来到318行:

318 if (geteuid() == 0) {

与geteuid相关的一票函数如下:

uid_t getuid(void); // 返回调用进程的实际用户id

int setuid(uid_t uid); // 设置进程的有效用户id

uid_t geteuid(void); // 返回调用进程的有效用户id

int seteuid(uid_t euid); // 设置进程的有效用户id

gid_t getgid(void); // 返回调用进程的实际组id

int setgid(gid_t gid); // 设置进程的有效组id

gid_t getegid(void); // 返回调用进程的有效组id

int setegid(gid_t egid); // 设置进程的有效组id

组和用户是一样的。这里说明一下什么是实际用户和有效用户。

启动进程的用户是实际用户,除此Linux为每个进程指定一个有效用户。通常getuid和geteuid返回的都是启动进程的当前用户id。

记住我上面说的两条就行了,其它的内容太复杂,一般用不上。写个程序:

main()

{

printf("uid %d euid %d\n", getuid(), geteuid());

}

编译后直接运行,然后再加上sudo运行,得到结果如下:

clip_image002

由上面的实验得知,可以用geteuid返回值是否为0来判断,当前进程是否以管理员的身份在运行。

  评论这张
 
阅读(16)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017