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