sudo 之前的用户名

sudo 之前的用户名

我得到了一个需要sudo的脚本,但是该脚本必须根据原始用户设置参数,例如:

chown "${USER}:${USER}" dir

如果我将其设置在 sudo 下,我最终只会得到chmod root:root,这没有帮助。

那么如何才能获取sudo之前的用户名呢?

答案1

环境变量 SUDO_USER 应该可以替代 USER。

由于您将所有权设置为 USER:USER,我假设总有一个与用户同名的组?否则,更严格的解决方案可能是使用 SUDO_UID 和 SUDO_GID。

那么可能有两种解决方案:

chown "${SUDO_USER}:${SUDO_USER}" dir

或者

chown "${SUDO_UID}:${SUDO_GID}" dir

答案2

您可以使用SUDO_USER变量:

sudo bash -c 'echo $SUDO_USER'

来自须藤手册页:

须藤使用以下环境变量。安全策略可以控制命令环境的实际内容。[...]

SUDO_UID 设置为调用 sudo 的用户的用户 ID。

SUDO_USER 设置为调用 sudo 的用户的登录名。

答案3

SUDO_USER 可以被用户覆盖。

 $ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
 USER=root
 SUDO_USER=test
 USERNAME=root

您应该使用“我是谁”或“logname”来获取原始用户名

toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' logname             
toto
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' who am i
toto   pts/4        Jan 23 15:13 (:0.0)

来自(哪里https://stackoverflow.com/questions/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands

相关内容