Sudo临时提权配置
Sudo临时提权配置
😄 Written by Zak Zhu
参考
- LinuxPanda/sudo的使用和配置(https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_009.html)
- Sudo(https://wiki.archlinux.org/index.php/Sudo_(简体中文)#让_sudo_使用_/etc/sudoers.d_中的文件)
- 马哥linux视频
- Aaron Kili/在Linux中设置sudo的十条sudoers实用配置(https://linux.cn/article-8145-1.html)
Sudo简介
普通用户可以通过sudo命令来临时提权, 以拥有更高权限的用户身份来执行一些管理命令, 并且能限定其仅能够在某些主机上执行此类的命令, sudo命令操作过程还会被记录在日志中, 以便于日后审计.
Sudo配置文件
-
配置文件:
建议: 请在/etc/sudoers.d/下新建文件来配置sudo, 这样更为优雅 ~~
- /etc/sudoers
- /etc/sudoer.d/*
警告: 如果编写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
Sudo配置语法
详细配置语法, 请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_Alias
定义用户别名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
Sudo配置实例
-
在/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日志记录
sudo默认通过syslog来记录操作日志, 可以在/var/log/secure文件里查看到sudo相关的日志. 不过, 我们也可以自定义sudo日志到指定文件.
自定义日志文件
visudo
添加如下内容:
Defaults log_host, log_year, logfile="/var/log/sudo.log"