一、服务器运维-sudo权限控制的sudoers配置文件详细说明
1. sudo权限控制的sudoers配置文件详细说明:
[root@test ~]# cat /etc/sudoers ## Sudoers allows particular users to run various commands as the root user, without needing the root password. ##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码 ## Examples are provided at the bottom of the file for collections of related commands, which can then be delegated out to particular users or groups. ## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或 用户组所使用 ## This file must be edited with the 'visudo' command. ## 该文件必须使用"visudo"命令编辑 ## Host Aliases,Groups of machines. You may prefer to use hostnames (perhap using wildcards for entire domains) or IP addresses instead. ## 主机别名,对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符) 或IP地址代替,这时可以配置主机别名 Host_Alias FILESERVERS = fs1, fs2 Host_Alias MAILSERVERS = smtp, smtp2 ## User Aliases These aren't often necessary, as you can use regular groups (ie, from files, LDAP, NIS, etc) in this file - just use %groupname rather than USERALIAS ## 用户别名, 这并不很常用,因为你可以通过使用组来代替一组用户的别名 User_Alias ADMINS = jsmith, mikem ## Command Aliases,These are groups of related commands... ## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限, 可以通过sudo调用所有别名包含的命令,下面是一些示例 ## Networking #网络操作相关命令别名 Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,/sbin/mii-tool ## Installation and management of software #软件安装管理相关命令别名 Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum ## Services #服务相关命令别名 Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig ## Updating the locate database #本地数据库升级命令别名 Cmnd_Alias LOCATE = /usr/sbin/updatedb ## Storage #磁盘操作相关命令别名 Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount ## Delegating permissions #代理权限相关命令别名 Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Processes #进程相关命令别名 Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall ## Drivers #驱动命令别名 Cmnd_Alias DRIVERS = /sbin/modprobe #环境变量的相关配置 # Defaults specification # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # Defaults requiretty Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \ LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \ LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \ LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \ _XKB_CHARSET XAUTHORITY" ## Next comes the main part: which users can run what software on which machines (the sudoers file can be shared between multiple systems). ## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享) ## Syntax: ## user MACHINE=COMMANDS ## 用户 登录的主机=(可以变换的身份) 可以执行的命令 ## The COMMANDS section may have other options added to it. ## 命令部分可以附带一些其它的选项 ## Allow root to run any commands anywhere ## 允许root用户执行任意路径下的任意命令 root ALL=(ALL) ALL ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令 ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## 允许wheel用户组中的用户执行所有命令 ## Same thing without a password ## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令 %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the ## cdrom as root ## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令 %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system %users localhost=/sbin/shutdown -h now ## 允许users用户组中的用户像root用户一样使用shutdown命令
2. sudo 命令语法:
sudo [-bhHpV][-s ][-u <用户>][指令] #或者使用 sudo [-klv] #参数意义如下 -b 在后台执行指令。 -h 显示帮助。 -H 将HOME环境变量设为新身份的HOME环境变量。 -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。 -l 列出目前用户可执行与无法执行的指令。 -p 改变询问密码的提示符号。 -s 执行指定的shell。 -u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。 -v 延长密码有效期限5分钟。 -V 显示版本信息。 -S 从标准输入流替代终端来获取密码
二、利用sudo对用户账号分组权限控制-运维sudoers配置
虽然我的阿里云服务器只有我自己一个人用,但是接下来我还是决定要开启一个普通用户,不再只使用root用户进行登录处理。因为root权限太大,频繁登录使用存在风险。sudo就是一种权限管理机制,linux管理员可以授权于一些普通用户去执行一些root执行的操作,而不需要使用root账号登录服务器(防止暴露root密码),并且会记录详细的日志。
在Linux中的普通用户默认权限会受到较大的限制,比如yum install安装软件会改变服务器软件环境的操作、比如reboot甚至shutdown直接关机这些命令使用普通用户都不能操作,必需要root用户权限来运行。 而普通用户想要执行这些命令, 要么使用su命令切换为root用户(暴露root密码)很不安全。因此使用sudo命令临时获取root权限(如已配置sudo权限,执行sudo只需要用户自己的密码,甚至可以免密码),就能大大提高安全性。
安装好sudo后通过修改配置文件:/etc/sudoers 来配置权限,sudo不建议直接使用vim来编辑,有一个方便的编辑命令visudo,其可以提示语法错误。默认有一行root ALL=(ALL) ALL
[root@007 ~]# visudo
97 ## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
上面主要配置权限的这行root ALL=(ALL) ALL意义如下:
root [目标用户,也可以是组%]表示 root 用户,也可以是groupname%
ALL [目标主机] 表示从任何的主机上都可以执行,也可以是 192.168.100.0/24。
(ALL:ALL) [目标身份] 是以谁的身份来执行,ALL:ALL 就代表 root 可以任何人的身份来执行命令。如果有多个用户,使用sudo命令时可以加上-u选项来选择用户。
ALL [命令控制] 表示任何命令。写具体的命令时需写全路径,命令前面加!表示禁止执行此命令。
整条规则就是 root 用户可以在任何主机以任何人的身份来执行所有的命令。上面的用户,主机,身份都可以在命令之前先定义别名(可以认为是一个分组),然后对分组进行权限控制。被控制用户可以使用sudo -l来查看自己的sudo权限控制。
#允许ROOTUSER别名分组用户(包括adminer,dtuser)免密码使用sudo功能,NOPASSWD: 即表示免密码
User_Alias ROOTUSER = adminer,dtuser
ROOTUSER ALL=(ALL) NOPASSWD: ALL
#允许users组的用户使用sudo,但不能使用passwd命令
%users ALL=(root) !/usr/bin/passwd
%users ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
sudo 的日志:在 centos中,sudo 的日志默认被记录在/var/log/secure文件中(ubuntu在/var/log/auth.log)。当我们执行 sudo 命令时,相关日志都是会被记录下来的。比如下图中显示的就是一次执行 sudo 命令的日志:
[testuser@474 ~]$ sudo tail /var/log/secure May 22 18:06:48 localhost sshd[915]: refused connect from 112.93.153.24 (112.93.153.24) May 22 18:33:24 localhost sshd[1077]: refused connect from 19.24.84.10 (19.24.84.10) May 22 18:54:41 localhost sudo: onlinedev : TTY=pts/0 ; PWD=/home/testuser ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/secure
一般小公司运维人员可以考虑给开发人员使用以下用户权限配置:
#sudoers配置如下: User_Alias DEVELOPER = developer,jenkins_deploy,others DEVELOPER ALL=(ALL) NOPASSWD: ALL,!/bin/bash,!/bin/su,!/bin/su root,!/bin/su -,!/bin/su - root,!/usr/bin/sudo,!/usr/bin/chattr,!/usr/sbin/useradd,!/usr/sbin/userdel,!/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
另外:上面的配置中有一项配置 !/usr/bin/sudo 即禁止普通用户在sudo中使用sudo命令,什么意思呢?就是禁止普通用户使用sudo sudo passwd来绕过sudo的权限配置,这是我向公司运维人员请教才知道的。而且后来自己亲自尝试了一下,确实通过sudo sudo能绕过控制。而加上这个禁止就可防止这种问题出现。
标签:bin,运维,##,sudoers,sudo,命令,usr,root From: https://blog.csdn.net/weixin_47792780/article/details/141683519