我正在尝试查看是否id -r
会打印出登录系统的用户的 UID 或用户名,尽管有任何su
或sudo
。我有兴趣这样做,这样我可以让人们更加负责并相应地定制脚本功能(即:他们在脚本上发出 sudo 并从登录用户的主目录中提取信息)。
我意识到sudo
设置SUDO_USER
,但我不想依赖它,因为它是一个可以由用户修改的变量,并且它只有发出最近 sudo 的用户的用户名(即:sudo -i ; sudo -iu randomUser ; echo $SUDO_USER
打印出“root”而不是实际用户)。
手册页或我在网上找到的任何内容似乎都没有表明该命令的正确用法是什么,并且明显的排列不起作用:
[root@ditirlns03 ~]# id -r
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r jadavis6
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r root
id: cannot print only names or real IDs in default format
此时,我仍然不确定id -r
是否会打印出我想要的内容,主要是因为我根本不知道如何让它打印出任何内容。
答案1
-r
必须与另一个选项结合使用。例如:
$ id -Gr
1000 4 24 27 30 46 109 124
引用手册页:
-r, --real
print the real ID instead of the effective ID, with -ugG
答案2
该程序和文档偏离了标准实践:
如果-ugG
确实意味着-u|g|G[modifier]
(显然确实如此),那么应该以这种方式记录。作者似乎并不认为值得付出努力。然而,当用户做同样的事情时(戴维斯先生相当合理地尝试过):
-ru
,一个合理的、直观的假设,返回一个错误。
关于这个提示:
stat -c "%U" $(tty)
可能会有助于提到它是特定于 shell 的。
答案3
- 打印用户 ID:
id -u
- 打印用户名:
id -u -n
尝试man id
更多地倾斜。