获取 root 脚本 ubuntu 上的当前用户

问题描述 投票:0回答:5

我在

/etc/NetworkDispatcher/dispatcher.d/
中为网络调度程序编写了一个脚本。 如何获取当前登录用户?

我已经尝试过这些命令:

$USER
$LOGNAME

谢谢您的帮助。

bash shell ubuntu
5个回答
5
投票

如果使用 /usr/bin/sudo 运行脚本,您可以从 $SUDO_USER 环境变量访问原始用户。

例如,如果这是脚本 test.sh 的内容:

#!/bin/sh

echo "USER:      $USER"
echo "SUDO_USER: $SUDO_USER"

然后如果你以“alex”身份运行它:

alex@yuzu:~$ ./test.sh 
USER:      alex
SUDO_USER: 

如果您通过 sudo 运行它:

alex@yuzu:~$ sudo ./test.sh
USER:      root
SUDO_USER: alex

3
投票

您可以使用

whoami
。或者,也许您可以获得使用
users
登录的用户列表。这实际上取决于您具体需要什么。


2
投票

您也可以使用“最后”:

$ last | grep "logged in"

0
投票

我需要这个作为 deb 文件中的 postins 脚本,上面的方法都不起作用,但这在 LinuxMint 19.3 上做到了(tricia):

`users`

0
投票

此命令应该最适合您的情况:

logname

您可以使用 logname 命令显示或打印当前用户(也称为呼叫用户)的名称。该命令读取 var/run/utmp 或 /etc/utmp 文件以显示当前用户的名称。
来源:https://www.cyberciti.biz/faq/unix-linux-logname-command-examples-syntax-usage/

logname命令显示当前进程的登录名。这是用户登录时使用的名称,对应于系统状态环境中的 LOGNAME 变量。该变量仅在用户登录系统时设置。 logname 命令调用 getlogin 子例程来获取有关登录名的信息。
来源:https://www.ibm.com/docs/zh/aix/7.1?topic=l-logname-command

© www.soinside.com 2019 - 2024. All rights reserved.