配置sudoers使普通用户以root方式运行命令

为了系统安全稳定,一般使用非root方式登陆系统,然后在必要时配置sudoers文件,让普通用户可以使用sudo命令来以root身份来执行某些命令。

sudoers文件介绍:

如其所说,Sudoers允许用户以root用户的方式来执行所定义的命令,并且编辑配置这个文件必须使用visudo命令。

让我们看看默认root用户的定义:

前面的root指的是用户,第一个ALL指得是在任何机器上,=(ALL)是指可以以任何用户方式运行,最后个ALL代表可以执行任何命令。

看下普通用户执行需要权限的命令状态:

可以看到,系统不会返回结果,试图以sudo方式运行,但未对此用户配置规则,亦不会处理。

要想使其可以运行此条命令,可以添加sudoers权限,我们看到配置文件末尾,发现其可以从/etc/sudoers.d目录中读取配置信息:

注意: 这里两个#代表注释,一个#仍然是配置信息,括号中有提示。

在/etc/sudoers.d下建立用户权限的配置文件;

[root@nagios ~]# vim /etc/sudoers.d/oracle
# User Oracle Command Defined.
oracle  ALL=(root)      /usr/sbin/fdisk -l

然后此用户重新使用sudo执行此命令

可以看到,输入用户密码后执行成功。

但是可以看到,每次使用sudo执行命令都需要输入一次用户密码;如果不想输入直接执行的话,可以在命令前面加上NOPASSWD: 即可

[root@nagios ~]# vim /etc/sudoers.d/oracle
# User Oracle Command Defined.
oracle  ALL=(root)      NOPASSWD: /usr/sbin/fdisk -l

可以看到,不必输入密码了。

除此,我们还可以将多个命令做成别名的样式,以方便调用,默认配置文件中就已经定义好了一些:

使用visudo将NETWORKING前的#去掉,以启用;有了定义好的别名,我们就可以使用别名来进行配置:

[root@nagios ~]# vim /etc/sudoers.d/oracle
# User Oracle Command Defined.
oracle  ALL=(root)      NOPASSWD: /usr/sbin/fdisk -l
oracle  ALL=(root)      NOPASSWD: NETWORKING

正常运行;当然,除了命令可以别名,用户、主机也都可以使用别名,以达到灵活调用,这里就不一一演示了。

发表评论

error: Content is protected !!