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

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

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

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

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

这句话也让我难以理解:

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

答案1

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

SUDO_USER        Set to the login name of the user who invoked sudo.

也就是说,如果你运行sudo sh -c 'echo $SUDO_USER'它,它是获得 的效果的一种迂回方式whoami

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

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

出现这种情况主要有两种方式。第一种是显而易见的sudo bash或等同的,即记录事物的愿望。另一种用例是脚本,它可以记录它们代表用户采取的实际操作。这是一种信息行为,而不是安全问题。

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

相关内容