我需要为需要使用 执行一些不带 sudo 的命令的脚本获取此用户名sudo -u username foo
。但我需要从使用 sudo 执行的脚本中获取此用户名。我该如何实现?(如果有点令人困惑,请见谅)
答案1
如果您使用执行脚本sudo
,该工具将设置SUDO_USER
环境变量。使用它来检索调用 的用户的登录名sudo
。
因此,在脚本中你可以这样做:
sudo -u "$SUDO_USER" foo
但如果$SUDO_USER
为空(例如,错误地运行了整个脚本,但没有sudo
),则将尝试foo
以 root 身份运行。为了防止这种情况,请改用以下代码片段:
if [ "$SUDO_USER" ]; then
sudo -u "$SUDO_USER" foo
else
foo
fi
答案2
我已设法使其与 $SUDO_USER 配合使用。例如,在运行 pip package 命令时,不要使用sudo -u "$SUDO_USER" foo
,而应使用和 I ,这样效果会更好。su - "SUDO_USER" -c "foo"
感谢 Kamil Maciorowski 和 gnubeard 的帮助。