使用 sudo su 时未设置 SUDO_* 环境变量 -

使用 sudo su 时未设置 SUDO_* 环境变量 -

我有一个用例,我想要sudo su - user1某个用户,然后运行脚本,然后在脚本中我想要获取SUDO_USER。但是,当我使用而不是时,SUDO_*环境变量没有设置。sudo su - user1sudo su app

sudo su user1
[sudo] password for rbhanot:
$ env | grep -i sudo
SUDO_COMMAND=/bin/su user1
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot 

如果我su使用登录 shell 调用,则不会设置这些变量

sudo su - user1
$ env|grep -i sudo
$

如果我使用稍微不同的命令,它会起作用sudo -i

sudo -i -u user1
$ env|grep -i sudo
SUDO_COMMAND=/bin/ksh
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot

那么为什么这些SUDO_*变量没有su - user1具体得到。

答案1

尝试不使用 -i ,变量应该会为您所用。

如果这不起作用,您可能会考虑让他们在命令行上指定变量?也许并不理想,但它会给用户带来你想要的灵活性。

ie.  sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh

如果用户需要记住这一点,您可以在他们的 .bash_profile 中为其添加一个别名。

ie.  alias myroot="sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh"

然后,他们只需输入“myroot”,它就会运行所写的 sudo 命令。

相关内容