搜索

10.3. 使非特权用户运行某些命令

download PDF

作为管理员,您可以通过在 /etc/sudoers.d/ 目录中配置策略来允许非特权用户在特定工作站上输入某些命令。这比为用户授予完全 sudo 访问权限或授予 root 密码更加安全,理由如下:

  • 对特权操作进行更精细的控制。您可以允许用户对特定主机执行某些操作,而不是向他们提供完整的管理访问权限。
  • 更好的日志记录.当用户通过 sudo 执行操作时,该操作将使用其用户名而非 root 记录。
  • 透明控制。当用户试图使用 sudo 权限时,您可以为用户设置电子邮件通知。

先决条件

  • 有对系统的 root 访问权限。

流程

  1. 以 root 用户身份,在 /etc/ 下创建一个新的 sudoers.d 目录:

    # mkdir -p /etc/sudoers.d/
  2. /etc/sudoers.d 目录中创建一个新文件:

    # visudo -f /etc/sudoers.d/<filename>

    文件会自动打开。

  3. /etc/sudoers.d/<filename> 文件中添加以下行:

    <username> <hostname.example.com> = (<run_as_user>:<run_as_group>) <path/to/command>
    • <username> 替换为用户名称。
    • <hostname.example.com> 替换为主机的 URL。
    • (<run_as_user>:<run_as_group>) 替换为可执行命令的用户或组。如果省略这部分,<username> 可以以 root 用户身份执行命令。
    • <path/to/command> 替换为命令的完整的绝对路径。您还可以通过在命令路径后面添加这些选项,将用户限制为仅使用特定的选项和参数执行命令。如果没有指定任何选项,用户可以使用带有所有选项的命令。
    • 要在同一主机上的一行上允许两个和多个命令,您可以使用逗号后跟空格进行分割,来列出它们。

      例如,要允许 user1host1.example.com 上执行 dnfreboot 命令,请输入 user1 host1.example.com = /bin/dnf, /sbin/reboot

  4. 可选:要在用户每次尝试使用 sudo 权限时收到电子邮件通知,请在文件中添加以下行:

    Defaults    mail_always
    Defaults    mailto="<email@example.com>"
  5. 保存更改,退出编辑器。

验证

  1. 要验证用户是否可以使用 sudo 特权运行命令,请切换帐户:

    # su <username> -
  2. 以用户身份,使用 sudo 命令输入命令:

    $ sudo <command>
    [sudo] password for <username>:

    输入用户的 sudo 密码。

  3. 如果正确配置了特权,系统会显示命令和选项的列表。例如,使用 dnf 命令,它显示以下输出:

    ...
    usage: dnf [options] COMMAND
    ...

    如果系统返回错误信息 <username> is not in the sudoers file。此事件会被报告,the file for <username> in /etc/sudoers.d/ does not exist。

    如果系统返回错误消息 <username> is not allowed to run sudo on <host.example.com>,则配置没有被正确完成。确保您已以 root 身份登录,并且配置被正确执行。

    如果系统返回错误消息 Sorry, user <username> is not allowed to execute '<path/to/command>' as root on <host.example.com>.,则命令没有在用户的规则中被正确定义。

其他资源

  • sudo(8)visudo (8)sudoers (5) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.