手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

技巧分享 实现Linux的whoami命令

[日期:2008-04-01] 来源:Linux公社  作者:Linuxidc [字体: ]

Linux下的whoami命令会显示当前的用户是谁,也就是显示自己的用户名。开始我一直想从utmp文件入手,但是总不知道怎么确定自己,后来我去群里问了,他们说每个进程都有用户ID,而用户ID可以通过geteuid系统函数获得,有了ID就好办了,下面是怎么将他转化成一个用户名,用utmp?没有uid这个数据,后来知道是查找/etc/passwd这个文件,自己写查找代码很麻烦,还好有个系统调用可以解决这个问题,它帮我们查找passwd文件,我们只要给出id就可以了

struct passwd* getpwuid(uit_t id)

这样,实现起来就超 easy了

#include
#include
#include
#include

int
main()
{
uid_t id;
struct passwd* pbuf;
id=geteuid();
pbuf=getpwuid(id);
printf("%s\n",pbuf->pw_name);
return 0;

who、whoami命令 和 who am i 命令的区别

先看看普通用户root用户输入这三条命令的不同结果:

看出区别来了吧,whoami显示的是当前“操作用户”的用户名,而who am i显示的是“登录用户”的用户名。

用Linux的术语来解释就是:(实际用户=uid,即user id。有效用户=euid,即effective user id)

who am i 显示的是实际用户的用户名,即用户登陆的时候的用户ID。此命令相当于who -m。
whoami  显示的是有效用户ID(
操作用户).

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款