从使用 sudo 运行的脚本中获取默认用户名

从使用 sudo 运行的脚本中获取默认用户名

我需要为需要使用 执行一些不带 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 的帮助。

相关内容