/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即可