我以 root 身份登录,并想以另一个用户身份执行具有 sudo 权限的 Bash 脚本。
这是测试 Bash 脚本/home/me/sudo.bash
:
mkdir -p /etc/test # Creating an /etc directory to test permissions
echo "test $(whoami) $USER $HOME" > /etc/test/a.txt
我当前拥有的命令(从 root 运行,为我运行):
sudo --non-interactive --login --set-home --user=me \
sudo --non-interactive bash /home/me/sudo.bash
内容/etc/test/a.txt
:
test root root /home/me
我的预期是:
test me me /home/me
我在这里做错了什么?
答案1
这是预期的,它将$(whoami)
返回“root”,因为它由于第二个而以 root 身份运行sudo
。
此外,$USER
将返回“root”,因为sudo
始终将该变量设置为目标用户(再次,在第二个 sudo 上是 root。)
如果您有兴趣知道哪个用户调用了sudo
,在第二个情况下是“我” sudo
,那么请查看$SUDO_USER
变量,该变量sudo
设置为调用它的用户。
看SUDO_USER 和 USER在手册页的“环境”部分中sudo
。