sudo 前的用户名

e-s*_*tis 9 bash sudo user-accounts

我得到了一个需要sudo的脚本,但是脚本必须按照原用户设置参数,比如:

chown "${USER}:${USER}" dir
Run Code Online (Sandbox Code Playgroud)

如果我将它设置在 sudo 下,我只会得到chmod root:root,这无济于事。

那么如何在 sudo 之前获取用户名呢?

and*_*dol 12

环境变量 SUDO_USER 应该替代 USER。

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

两种可能的解决方案是:

chown "${SUDO_USER}:${SUDO_USER}" dir
Run Code Online (Sandbox Code Playgroud)

或者

chown "${SUDO_UID}:${SUDO_GID}" dir
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ndt 5

您可以使用SUDO_USER变量:

sudo bash -c 'echo $SUDO_USER'
Run Code Online (Sandbox Code Playgroud)

sudo手册页:

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

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

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