普通用户可以通过sudo命令来临时提权, 以拥有更高权限的用户身份来执行一些管理命令, 并且能限定其仅能够在某些主机上执行此类的命令, sudo命令操作过程还会被记录在日志中, 以便于日后审计.
配置文件:
建议: 请在/etc/sudoers.d/下新建文件来配置sudo, 这样更为优雅 ~~
警告: 如果编写sudo配置存在语法错误, 则会导致sudo不可用. 因此必须使用visudo编辑配置文件以防止出错 !!
visudo命令:
visudo - safely edit the sudoers file
visudo [OPTIONS] [-f SUDOERS_FILE]
# Options:
-c, --check # check-only mode
-f, --file=SUDOERS_FILE # specify sudoers file location
-s, --strict # strict syntax checking
详细配置语法, 请man sudoers
Sudo allows glob characters to be used in host names, path names and command line arguments in the sudoers file.
User Host=(Runas) Tag:Cmnd
# Note: Cmnd must use absolute path !!
取别名时注意:
User_Aias
定义用户别名OPERATOR, 由develop组, zak用户, tian用户组成
User_Alias OPERATOR = %develop, zak, tian
Host_Alias
定义主机别名DB, 由主机名为mysql1, mysql2, oracle1, oracle2组成
Host_Alias DB = mysql*, oracle*
定义主机别名WEB, 由IP地址为192.168.1.1至192.168.1.14, 172.16.32.1.1至172.16.32.1.14组成
Host_Alias WEB = 192.168.1.0/28, 172.16.32.0/28
Runas_Alias
定义执行者别名OP, 以root和oracle的身份来执行命令
Runas_Alias OP = root, oracle
Cmnd_Alias
定义命令别名PROCESSES, 由/bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall组成
Cmnd_Alias KILL = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
在/etc/sudoers文件中已配置了一条wheel组的提权, 这条配置允许属于wheel组的用户可以使用sudo命令在所有主机上执行所有命令
提权网管可以在所有主机上使用网络相关命令管理系统网络
useradd netadmin ; passwd netadmin
visudo -f /etc/sudoers.d/netadmin
Cmnd_Alias NETTOOLS = /usr/sbin/ifconfig, /usr/sbin/route, /usr/bin/firewall-cmd, /usr/bin/netstat, /usr/sbin/ss, /usr/bin/ping netadmin ALL=(root) NETTOOLS
提权账号管理者可以在所有主机上使用用户相关命令管理系统用户
注意: 提权配置完, 需严谨测试, 防止root用户被修改 !!
useradd useradmin ; passwd useradmin
visudo -f /etc/sudoers.d/useradmin
Cmnd_Alias USERCMD = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd ?* Cmnd_Alias BAN_USERCMD = /usr/sbin/usermod * root, /usr/bin/passwd root, /usr/bin/passwd * root useradmin ALL=(root) USERCMD, !BAN_USERCMD
提权ansible用户可以在所有主机上无密码执行所有命令
visudo -f /etc/sudoers.d/ansible
ansible ALL=(ALL) NOPASSWD:ALL
sudo默认通过syslog来记录操作日志, 可以在/var/log/secure文件里查看到sudo相关的日志. 不过, 我们也可以自定义sudo日志到指定文件.
自定义日志文件
visudo
添加如下内容:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
原文:https://www.cnblogs.com/zakzhu/p/11645191.html