我得到一个需要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)