免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wangfeiyue
打印 上一主题 下一主题

请问su后如何取得当前的用户名 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-30 17:47 |只看该作者
原帖由 vermouth 于 2008-8-30 17:38 发表
可以用 id 显示当前操作的是……

谢谢,试过了,这也是一个方法

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2008-08-30 20:56 |只看该作者
原帖由 kenduest 于 2008-8-30 15:35 发表

首先 who am i 與 whoami 是不同的命令與輸出,所以不可以混為一談。

在 Unix/Linux 下,空格用来分隔命令行中的各个单词(除非空格在引号中或者使用 \ 转义),因此 who am i 执行的是 who, am i 是其参数(argument),这和执行 who 时加 -m 选项(option) 是一样的,也即 who am i 和 who -m 效果相同。

而你使用 who am i 是顯示目前該自己用的終端機該使用者資訊。

准确的说是和 stdin  联系的 hostname and user 信息。

另外不管是 su 還是 su -,real 與 effective user id 都會切換過去,

嗯,这个可以通过 id 验证。
所以拉回來問題,原作者你只是用 "whoami" 這個指令就可以知道目前切換過去目的的身份就可以了。

还是用 id 为好,effective userid 和 real userid 不一致也是可能的。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
13 [报告]
发表于 2008-08-30 20:57 |只看该作者
原帖由 wangfeiyue 于 2008-8-30 17:47 发表

谢谢,试过了,这也是一个方法

This is the true way, the only way.

论坛徽章:
0
14 [报告]
发表于 2008-08-30 21:34 |只看该作者
自己去man吧,无非就是这么多东西。

论坛徽章:
0
15 [报告]
发表于 2008-08-30 23:43 |只看该作者
原帖由 jerrywjl 于 2008-8-30 21:34 发表
自己去man吧,无非就是这么多东西。


没办法,当时碰到了想在脚本中判断运行他的用户是不是root的问题,不知道有个id命令,又试了个不合适的who am i这个命令。能man的只有su了,而su的man也看不到什么相关参数。在发此帖前也用“取得当前用户名 linux”也在baidu.com搜过了。


这些看起来简单的问题对新手来说不知道man谁就变得很难了,当然大部时候分能直接从baidu,google上找到答案。而发在cu上也可以增加cu的人气。

[ 本帖最后由 wangfeiyue 于 2008-8-30 23:45 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2008-08-30 23:54 |只看该作者
原帖由 wangfeiyue 於 2008-8-30 23:43 發表
沒辦法,當時碰到了想在腳本中判斷運行他的用戶是不是root的問題,不知道有個id命令,又試了個不合適的who am i這個命令。能man的只有su了,而su的man也看不到什麼相關參數。在發此帖前也用「取得當前用戶名 ...


為何很困難呢 ??

若你只是要判斷目前登入帳號身份是否有 root 身份,shell script 不就類似是這樣判斷 ?


  1. if [ "$(whoami)" == "root" ]; then
  2.    echo "You are root"
  3. else
  4.    echo "You are not root"
复制代码


whoami 預設是輸出顯示 effective user id,所以只要是 root 那就表示具備有特權。

若是要使用 id 判斷的話也可以,預設還是輸出 effective id 資訊,所以也是可以判斷。 若你認為 EUID 要為 0 更保險,那就這樣用:


  1. if [ "$(id -u)" -eq "0" ]; then
  2.    echo "You are root"
  3. else
  4.    echo "You are not root"
复制代码


若你是 c/c++ coding 的項目,那請使用 geteuid() 取得 return code,為 0 就表示 effective user id 數值為 0。

所以問題繞回來其實不需跑這樣遠。

--

论坛徽章:
0
17 [报告]
发表于 2008-08-31 02:15 |只看该作者
原帖由 kenduest 于 2008-8-30 23:54 发表


為何很困難呢 ??

若你只是要判斷目前登入帳號身份是否有 root 身份,shell script 不就類似是這樣判斷 ?


if [ "$(whoami)" == "root" ]; then
   echo "You are root"
else
   echo "You are no ...


我觉得不管是谁,在回帖的时候都应该先把别人的帖子仔细读读,看看别人说的是什么意思,那是对别人的尊重。
你技术方面回答的很对,但是我不能肯定在引用我的帖子时是否明白了我在说什么。

别人说man上都有呢,建议自己man一下。然后我给那个人说我当时的情况是不知道有id, whoami.这两个命令。又因为看到who am i不理su,觉得奇怪。也完全没想到还有一个whoami. 所以我没有一个man的目标。


"為何很困難呢 ??

若你只是要判..."

版主你分析问题的前提是我像你一样什么whoami, id命令都知道了。知道关键命令(即使没用过)我写脚本也不会有什么困难的。


我知道大家时间都很宝贵,特别是版主,但是既然咱们参与讨论,就应该能耐着性子读完别人的帖子再补充自己的观点。


以前经历过一次面试(张扬路那里的永凯软件),在给面试官讲解自己学生时代编的一个程序怎么怎么样的时候,那个面试官直接打断我的话说“你那算什么...,我们这的都是...".当时的感觉除了面试会失败外,也感觉到那个老总不容易沟通。看到你的这句话“為何很困難呢”,想起了那次面试。所以此时如果话说的严重了,真对的是一种现象,而不是你个人。

[ 本帖最后由 wangfeiyue 于 2008-8-31 02:36 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2008-08-31 02:20 |只看该作者
不过从kenduest版主恢复问题的格式看,技术上还是很认真的。

论坛徽章:
0
19 [报告]
发表于 2008-08-31 02:23 |只看该作者
我想您可能誤解我的意思

前面回文內已經不少文章告知可以用 id 與 whoami 了,這已經是提供一個答案與方向,也有談到 "who am i" 這個與 "whoami" 是不同的命令使用。而後續您回文內還是說有點問題,所以才再次貼了一篇直接使用 id 與 whoami 這類例子給你參考,希望能夠透過這些現成的代碼告訴您判斷不複雜。

文章內如有冒犯請多見諒。

--

[ 本帖最后由 kenduest 于 2008-8-31 02:28 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2008-08-31 02:38 |只看该作者

回复 #19 kenduest 的帖子

哈哈,版主还在,我也是个人情绪。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP