sudo之前的用户名

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

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

如果我把它设置在sudo下面,我只需要chmod root:root ,这没有帮助。

那么我怎么才能得到sudo之前的用户名?

环境variablesSUDO_USER应该作为USER的替代品。

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

两种可能的解决scheme将是:

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

要么

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

你可以使用SUDO_USERvariables:

 sudo bash -c 'echo $SUDO_USER' 

从sudo手册页:

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

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

SUDO_USER设置为调用sudo的用户的login名。

SUDO_USER可以被用户覆盖。

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

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

 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