为什么 visudo 不鼓励其他编辑器?

Fab*_*ian 6 security sudo

man visudo解释 visudo 不会(默认情况下)使用EDITORVISUAL环境变量。

它指出

“如果 visudo 使用的编辑器允许 shell 转义,则没有简单的方法可以阻止用户获得 root shell。”

现在我很困惑安全风险在哪里。我相信

  • 只有 root 可以使用 visudo 进行编辑 /etc/sudoers
  • 只有 root 可以更改 root 的环境变量
  • root 已经有一个 root shell

可能有一个用例不成立,但我想不出来。

Mic*_*ler 6

visudo严格来说,我认为运行任意编辑器不会带来额外的安全风险。显然,运行的用户visudo已经拥有编辑权限/etc/sudoers,因此能够添加允许在系统上执行任何其他命令的规则。因此,无论运行哪个编辑器,用户都visudo可以通过添加新的 sudo 规则间接执行他们想要的任何内容。

我认为文档中关于EDITORVISUAL环境变量 的建议是关于在绕过 sudo 的标准日志记录的同时执行 root shell(或任意命令)。默认情况下,sudo 将所有成功和不成功的身份验证记录到 syslog。这为系统管理员提供了关于哪些用户正在通过 sudo 执行哪些命令的审计线索。如果用户更改/etc/sudoersvisudo,则可以通过校验和或查看文件来查看。但是,如果用户可以通过 获得 root shell visudo,他们可以在没有任何审计跟踪的情况下执行任意命令。

因此,安全风险与授予运行权限相同sudo bash,即具有该权限的用户可以获得 root shell 并执行任意代码,而不会对运行的命令进行任何限制或记录。