6.2. 使用 sudo 实用程序配置管理访问权限


sudo 命令提供了另一种授予用户管理访问权限的方法。当受信任的用户在管理命令之前加上 sudo 时,系统会提示他们输入 自己的 密码。然后,当它们经过身份验证并假定允许 命令时,将像 root 用户一样执行管理命令。

sudo 命令的基本格式如下:

sudo command

在上例中,命令 将被替换为通常保留给 root 用户的命令,如 mount

sudo 命令具有高度的灵活性。例如,只有 /etc/sudoers 配置文件中列出的用户才能使用 sudo 命令,命令则在 用户的 shell 中执行,而不是 root shell。这意味着可以完全禁用 root shell,如 Red Hat Enterprise Linux 7 安全指南 中所示。

使用 sudo 命令的每个成功身份验证都会记录到文件 /var/log/messages,而与签发者的用户名一同发布的命令将记录到 /var/log/secure 文件。如果需要额外的日志记录,请使用 pam_tty_audit 模块为指定用户启用 TTY 审核,方法是在 /etc/pam.d/system-auth 文件中添加以下行:

session required pam_tty_audit.so disable=pattern enable=pattern

其中,pattern 代表通过可选方式使用 glob 的以逗号分隔的用户列表。例如,以下配置将为 root 用户启用 TTY 审核,并为所有其他用户禁用它:

session required pam_tty_audit.so disable=* enable=root
重要

为 TTY 审计记录配置 pam_tty_audit PAM 模块,仅用于 TTY 输入。这意味着,当被审计用户登录时,pam_tty_audit 会记录用户在 /var/log/audit/audit.log 文件中进行的确切击键操作。如需更多信息,请参阅 pam_tty_audit(8)手册页。

sudo 命令的另一个优点是,管理员可以允许不同的用户根据自己的需要访问特定的命令。

想要编辑 sudo 配置文件 /etc/sudoers 的管理员应使用 visudo 命令。

要授予某人完整的管理权限,请键入 visudo 并添加类似用户权限规范部分中的下面这一行:

juan ALL=(ALL) ALL

此示例表示用户 juan 可以从任何主机使用 sudo 并执行任何命令。

以下示例演示了配置 sudo 时可能的粒度:

%users localhost=/usr/sbin/shutdown -h now

这个示例表示,users 系统组 的任何成员都可以发出 /sbin/shutdown -h 命令,只要它 从控制台发布。

sudoers 的 man page 包含此文件的选项的详细列表。

您还可以使用 /etc/sudoers 文件中的 NOPASSWD 选项配置不需要提供任何密码的 sudo 用户:

user_name ALL=(ALL)	NOPASSWD: ALL

但是,即使对于此类用户,sudo 也 运行 可插拔验证模块(PAM)帐户管理模块,这可以检查 PAM 模块在身份验证阶段之外实施的限制。这样可确保 PAM 模块正常工作。例如,如果 pam_time 模块,基于时间的帐户限制不会失败。

警告

始终将 sudo 包含在所有基于 PAM 的访问控制规则中允许的服务列表中。否则,用户在尝试访问 sudo 时将收到"权限被拒绝"错误消息,但根据当前的访问控制规则禁止访问。

如需更多信息,请参阅在修补 Red Hat Enterprise Linux 7.6 后,Edo 给出了 permission denied 错误。

重要

使用 sudo 命令时,请记住几个潜在的风险:您可以按照上述所述,使用 visudo 编辑 /etc/sudoers 配置文件来避免它们。将 /etc/sudoers 文件保留为默认状态可授予 wheel 组中的每个用户 无限制 root 访问权限。

  • 默认情况下,s udo 将密码存储为五分钟的超时时间。在此期间内,任何后续使用 命令都不会提示用户输入密码。如果用户在仍登录时无人值守和解锁其工作站,则攻击者可能会利用此功能。可以通过在 /etc/sudoers 文件中添加以下行来更改此行为:

    Defaults  timestamp_timeout=value

    其中 value 是所需的超时长度(以分钟为单位)。将 值设 为 0 会导致 sudo 每次都需要密码。

  • 如果帐户泄露,攻击者可以使用 sudo 打开具有管理权限的新 shell:

    sudo /bin/bash

    root 用户身份以这种或类似的方式打开新 shell 可让攻击者在理论上无限制的时间内管理访问,绕过 /etc/sudoers 文件中指定的超时时间,并且无需攻击者再次为 sudo 输入密码,直到新打开的会话关闭为止。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.