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)
您可以使用SUDO_USER变量:
sudo bash -c 'echo $SUDO_USER'
Run Code Online (Sandbox Code Playgroud)
从sudo手册页:
sudo使用以下环境变量。安全策略可以控制命令环境的实际内容。[...]
SUDO_UID设置为调用 sudo 的用户的用户 ID。
SUDO_USER设置为调用 sudo 的用户的登录名。