/etc/sudoers 文件

sudo的权限控制可以在/etc/sudoers文件中查看到

如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令, 或者允许某些用户使用sudo时不需要输入密码

格式一般都是 root ALL=(ALL) ALL

授权用户/组 主机  =[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...
字段1      字段2  =[(字段3)] [字段4] 字段5

注意:凡是[ ]中的内容, 都能省略; 命令和命令之间用,号分隔;


字段1:
不以%号开头的表示"将要授权的用户" root
以%号开头的表示"将要授权的组" %wheel

字段2:表示允许登录的主机
ALL表示所有; 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令
eg:jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown
表示: 普通用户jack在主机(或主机组)mycomputer上, 可以通过sudo执行reboot和shutdown两个命令

字段3:
如果省略, 相当于(root:root),表示可以通过sudo提权到root; 如果为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组)。
注意:如果没省略,必须使用( )双括号包含起来

字段4:
可能取值是NOPASSWD:。请注意NOPASSWD后面带有冒号:。表示执行sudo时可以不需要输入密码
eg:lucy ALL=(ALL) NOPASSWD: /bin/useradd
表示: 普通用户lucy可以在任何主机上, 通过sudo执行/bin/useradd命令, 并且不需要输入密码

字段5:授权给用户的操作
逗号分开一系列命令或者ALL表示允许所有操作
注意:命令必须使用绝对路径
命令的绝对路径可通过which指令查看到
[root@VM_0_10_centos ~]# which chmod
/bin/chmod

  

高级详解

如果写成这样:
papi ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd
表示: 用户papi能在所有可能出现的主机上, 提权到root下执行/bin/chown, 不必输入密码; 但运行/usr/sbin/useradd 命令时需要密码.

注意:因为NOPASSWD:只影响了其后的第一个命令: 命令1.
在具有sudo操作的用户下, 执行sudo -l可以查看到该用户被允许和被禁止运行的命令


通配符和取消命令
eg:papi ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk

命令前面加上!号表示取消该命令
表示意思:用户papi在所有可能出现的主机上, 能够运行目录/usr/sbin和/sbin下所有的程序, 但fdisk除外.

  

编辑文件方式:

 

强烈建议通过visudo命令来修改该文件,通过visudo修改,如果配置出错,会有提示

 

 

系统文档推荐的做法是,修改/etc/sudoers.d 目录下的文件

通过此方法修改sudoers ,需要在/etc/sudoers文件的最后行,加上

#includedir /etc/sudoers.d

注意;这里的指令#includedir是一个整体, 前面的#号不能丢,并非注释,也不能在#号后有空格。

任何在/etc/sudoers.d/目录下,不以~号结尾的文件和不包含.号的文件,都会被解析成/etc/sudoers的内容。

 

小技巧:

输入密码的时候有反馈

一般sudo后输入密码,都是不会显示任何东西的

vim /etc/sudoers 

修改 Defaults env_reset -> Defaults env_reset,pwfeedback即可

posted @ 2020-01-13 22:48  linux——quan  阅读(6727)  评论(0编辑  收藏  举报