使用sudo以root用户身份运行命令

导言—— Linux遵循非常严格的权限模型。根用户可以执行任何操作,但普通用户没有权限。要运行任何命令,他们需要向超级用户请求权限。向非root用户授予管理权限的简单而常见的方法是,用户可以使用 命令并暂时成为 但是用户必须知道root用户的密码。在企业界,这是非常危险的,因为root的所有特权都被授予任何可以做任何事情的用户。例如——

null
[userA@rhel7 ~]$ su -Password:

它在询问超级用户的密码。

为了克服上述风险, 苏多 命令是一种趋势。它允许用户在提供用户自己的身份验证密码后,以root用户或任何其他用户的身份运行命令。这些信息在 /etc/sudoers 文件在描述“sudo”命令之前,我想先谈谈 visudo

你要做什么—— visudo 用于编辑配置文件的命令 苏多 位于 /etc/sudoers 。为了安全起见,您不应直接使用普通编辑器编辑此文件,请始终使用visudo。编辑/etc/sudoers文件需要超级用户权限。

visudo命令不能通过锁定文件来同时编辑/etc/sudoers文件,如果有人试图访问相同的文件,它将收到一条消息,稍后再试。

[root@rhel7 ~]# visudovisudo: /etc/sudoers busy, try again later

它还检查编辑的语法,并提供基本的健全性检查,这些检查非常有用。如果它识别出任何错误,那么visudo将不允许保存带有编辑的文件。

在sudoers文件中设置规则- 在每个人的脑海中都会出现一个常见的问题:我们如何定义sudoers文件中的规则?因此,在编辑之前,最好先了解现有配置,该配置定义了哪些用户可以在哪些机器上运行哪些软件。预定义规则的语法如下所示-

root    ALL=(ALL:ALL) ALL

这允许root在任何地方运行任何命令。这句话的意思是——

username    hosts=(users:groups)    commands

全部的 也就是说,用户可以在所有主机上运行所有命令,以及所有用户和组。因此,root拥有作为任何用户或组运行任何命令的所有权限。

让我们考虑一个例子,并将所有权力提供给作为root用户的userA。

userA   ALL=(ALL:ALL)   ALL

如果希望使用不带密码的命令,请使用PASSWD参数–

userA    ALL(ALL:ALL)    NOPASSWD:ALL

在下面的示例中,userA仅启动、停止并重新启动 “httpd” 服务

userA   ALL=(root)      /usr/bin/systemctl, /usr/sbin/httpd start stop restart

用户可以检查命令是否有效。然后按照以下程序检查——

[root@rhel7 ~]# su - userALast login: Thu Sep 13 15:01:18 EDT 2018 on pts/0[userA@rhel7 ~]$ sudo -u root systemctl stop httpd[sudo] password for userA:[userA@rhel7 ~]$

注—— 我们也可以将vim与visudo结合使用。

export VISUAL=vim; visudo

将nano与visudo结合使用

export VISUAL=nano; visudo

将权限分配给组—— 只需将一个组设置为多个用户,就可以将类似的权限分配给多个用户。sudoers文件中有一个预定义的组。此组的成员可以使用sudo以任何用户(包括超级用户)的身份运行任何命令。我们可以向该组添加用户。它的配置通常如下——

%wheel  ALL=(ALL)       ALL

使用命令在控制盘组中添加用户–

usermod -aG wheel username

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享