sudo 手册中未定义 SUDO_USER - 澄清会很可爱

0JC*_*JC1 6 root sudo

以下语句出现在 sudoers 手册的早期,它指的是“SUDO_USER 环境变量”,但手册没有定义它:

如果 sudo 由 root 运行并且设置了 SUDO_USER 环境变量,则 sudoers 策略将使用此值来确定实际用户是谁。即使调用了 root shell,用户也可以使用它来通过 sudo 记录命令。它还允许 -e 选项即使在通过 sudo-run 脚本或程序调用时仍然有用。但是请注意,sudoers 查找仍然针对 root,而不是 SUDO_USER 指定的用户。

这整段对我来说仍然相当难以捉摸,任何澄清将不胜感激。例如,sudoers 策略使用 SUDO_USER 环境变量来确定用户实际是谁,以及用户可以使用它来记录命令是什么意思?

这句话也让我望而却步:

即使调用了 root shell,用户也可以使用它来通过 sudo 记录命令。

Mic*_*mer 11

SUDO_USER记录在man sudo(不是sudoers)中:

SUDO_USER        Set to the login name of the user who invoked sudo.
Run Code Online (Sandbox Code Playgroud)

也就是说,如果你运行sudo sh -c 'echo $SUDO_USER'它是获得whoami.

sudo当用户通过它运行(或尝试运行)命令时记录。您可以将它们与journalctl /usr/bin/sudo您的系统或等效的东西一起列出。它列出了每次调用的用户名和命令。

如果sudo1) 作为 root 和 2) 以SUDO_USERset 运行,日志条目将被标记为SUDO_USER用户名,而不是“root”。这允许(合作)用户记录他们为后代运行的命令,即使他们处于不受限制的环境中。sudo使用 root 权限运行时总是会成功(除非使用root_sudo设置禁用),因为您可以在没有它的情况下运行命令。

有两种主要方式会出现这种情况。第一个是明显的sudo bash或等效的以及记录事物的愿望。另一个用例是脚本,它可以记录他们代表用户执行的实际操作。这是一种提供信息的行为,而不是安全问题。

sudo -e用于编辑文件并使用一组不同的安全策略,也记录在man sudo更安全的编辑行为中。人们有时会在以 root 身份登录时使用这些功能,并且它与SUDO_USER上面的交互相同。