首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过多个sudo和su命令找到原始用户?

如何通过多个sudo和su命令找到原始用户?
EN

Stack Overflow用户
提问于 2011-01-05 04:17:13
回答 8查看 64.9K关注 0票数 98

当通过sudo或su运行脚本时,我想获取原始用户。无论多个sudosu在彼此内部运行,尤其是sudo su -,都应该发生这种情况。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-05 04:30:24

结果:

使用who am i | awk '{print $1}'logname,因为不能保证使用其他方法。

以self身份登录:

代码语言:javascript
运行
复制
evan> echo $USER
evan
evan> echo $SUDO_USER

evan> echo $LOGNAME
evan
evan> whoami
evan
evan> who am i | awk '{print $1}'
evan
evan> logname
evan
evan>

普通sudo:

代码语言:javascript
运行
复制
evan> sudo -s
root> echo $USER
root
root> echo $SUDO_USER
evan
root> echo $LOGNAME
root
root> whoami
root
root> who am i | awk '{print $1}'
evan
root> logname
evan
root>

sudo su -:

代码语言:javascript
运行
复制
evan> sudo su -
[root ]# echo $USER
root
[root ]# echo $SUDO_USER

[root ]# echo $LOGNAME
root
[root ]# whoami
root
[root ]# who am i | awk '{print $1}'
evan
[root ]# logname
evan
[root ]#

sudo su -;su:

代码语言:javascript
运行
复制
evan> sudo su -
[root ]# su tom
tom$ echo $USER
tom
tom$ echo $SUDO_USER

tom$ echo $LOGNAME
tom
tom$ whoami
tom
tom$ who am i | awk '{print $1}'
evan
tom$ logname
evan
tom$
票数 142
EN

Stack Overflow用户

发布于 2012-10-20 07:39:46

这是我在HP-UX上编写的ksh函数。我不知道它将如何在Linux中与Bash一起工作。其思想是,sudo进程以原始用户身份运行,子进程是目标用户。通过循环返回父进程,我们可以找到原始进程的用户。

代码语言:javascript
运行
复制
#
# The options of ps require UNIX_STD=2003.  I am setting it
# in a subshell to avoid having it pollute the parent's namespace.
#
function findUser
{
    thisPID=$$
    origUser=$(whoami)
    thisUser=$origUser
    while [ "$thisUser" = "$origUser" ]
    do
        ( export UNIX_STD=2003; ps -p$thisPID -ouser,ppid,pid,comm ) | grep $thisPID | read thisUser myPPid myPid myComm
        thisPID=$myPPid
    done
    if [ "$thisUser" = "root" ]
    then
        thisUser=$origUser
    fi
    if [ "$#" -gt "0" ]
    then
        echo $origUser--$thisUser--$myComm
    else
        echo $thisUser
    fi
    return 0
}

我知道最初的问题来自很久以前,但人们(比如我)仍然在问,这看起来是一个很好的解决方案的地方。

票数 8
EN

Stack Overflow用户

发布于 2011-01-05 22:13:01

使用logname(1)获取用户的登录名如何?

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4598001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档