为了系统安全稳定,一般使用非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
正常运行;当然,除了命令可以别名,用户、主机也都可以使用别名,以达到灵活调用,这里就不一一演示了。