自 sudo 1.8.x 分支形成 9 年后,用于代表其他用户组织执行命令的实用程序发布了一个重要的新版本,新版本为“sudo 1.9.0”,这也标志着一个新分支的诞生。
Sudo 是类 Unix 操作系统(如 Linux、BSD 或 Mac OS X)中最重要和最广泛使用的实用程序,因为如前所述,它允许用户以其他用户(通常是 root 用户)的安全权限安全地运行程序,从而暂时成为超级用户。
默认情况下,用户运行 sudo 命令时必须使用密码进行身份验证。用户通过身份验证后,如果 /etc/sudoers 配置文件允许用户访问所需的命令,系统将执行该命令。
可以选择启用 NOPASSWD 参数,这样在运行命令时就无需输入用户密码。/etc/sudoers 配置文件指定哪些用户可以代表哪些其他用户运行哪些命令。
由于sudo对该文件的格式非常严格,并且任何错误都可能导致严重的问题,因此提供了visudo实用程序。 此选项用于检查是否未从root用户的另一个会话中使用/ etc / sudoers文件,从而避免了可能造成文件损坏的多重编辑。
Sudo 1.9.0中的主要新闻
此新版本重点介绍了为系统提供后台进程“ sudo_logsrvd ”的工作,该进程旨在集中记录其他系统的日志。通过使用带有“ --enable-openssl”选项的“sudo”命令,数据将通过加密通信通道(TLS)传输。
日志记录是通过 sudoers 中的 log_servers 选项进行配置的,为了禁用对新日志发送机制的支持,添加了选项“ --disable-log-server ”和“--disable-log-client”。
此外,新增了一种“审计”插件,它可以发送有关调用成功和失败以及发生的任何错误的消息。同时还新增了一种插件类型,允许您连接不依赖于标准功能的自定义登录控制器。例如,用于以 JSON 格式记录日志的控制器已实现为一个插件。
新增了一种“审批”插件,它会在 sudoers 中基于规则的基本授权检查成功后执行额外的检查。可以在配置中指定多个此类插件,但只有当配置中列出的所有插件都批准该操作时,才会发出确认通知。
在 `sudo` 和`sudo_logsrvd`中,会创建一个额外的 JSON 格式日志文件,其中包含所有运行命令的参数信息,包括主机名。`sudoreplay` 工具会使用此日志,允许您按主机名筛选命令。
通过SUDO_COMMAND环境变量传递的命令行参数列表现在被截断为 4096 个字符。
公告中其他值得注意的变化包括:
- sudo -S命令现在将所有请求打印到标准输出或stderr,而无需访问终端控制设备。
- 为了测试与服务器的交互或发送现有日志,提出了sudo_sendlog实用程序;
- 新增了在Python中开发sudo插件的功能,该功能在编译期间通过选项«启用–启用python«。
- En 毛衣而不是 Cmnd_Alias,Cmd_Alias 现在它也有效。
- 添加了新设置 pam_ruser和pam_rhost 通过PAM配置会话时启用/禁用用户名和主机设置的配置。
- 可以在逗号分隔的命令行上指定多个SHA-2哈希。 SHA-2哈希还可以与“ ALL”关键字一起在sudoer中使用,以定义仅在哈希匹配时才能执行的命令。