在由sudo调用的bash脚本中识别用户
如果我创build脚本/root/bin/whoami.sh conatining:
#!/bin/bash whoami
而这个脚本是由一个用户使用正确configuration的sudo来调用的,它会指示
root
有一个快速的方式来获得脚本中的实际用户,或者我将不得不求助于传递这个用户名的参数?
TIA,Bert
如果您使用sudo su -
$ SUDO_USER不起作用。
它还需要多次检查 – 如果$USER == 'root'
则获得$SUDO_USER
。
而不是命令whoami
使用who am i
。 这将运行为当前会话过滤的who
命令。 它给你比你需要更多的信息。 所以,这样做才能得到用户:
who am i | awk '{print $1}'
另外(更简单),你可以使用logname
。 它和上面的说法是一样的。
这给你login到会话的用户名。
这些工作不pipesudo
或sudo su [whatever]
。 不pipe有多less次su
和sudo
被调用,它也可以工作。
我认为$ SUDO_USER是有效的。
#!/bin/bash echo $SUDO_USER whoami
这里是如何获得调用脚本的人的用户名,不pipe是否sudo:
if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi
或更短的版本
[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
who am i | awk '{print $1}'
who am i | awk '{print $1}'
不适用于我,但是who|awk '{print $1}'
将会提供这个工作
奇怪的是,系统确实区分真实和有效的UID ,但是我不能find在shell级别输出这个程序的程序。
尝试:
id -urn