1. 完成本案例,可以在增加以下项目经验:
服务器用户权限管理改造方案与实施项目
- 提出权限整改解决方案改进公司超级权限root泛滥的现状
- 召集大家开会讨论确定方案后推进实施
- 实施后使得公司的权限管理更加清晰了
2. 问题现状
公司服务器管理人员多,(开发+运维+架构+DBA+产品+市场),使用Linux服务器时,不同职能的员工操作不规范,root权限泛滥
3.项目需求
既希望超级用户root密码掌握在少数或者唯一的管理员手中,又希望多个系统管理员有相关权限
4 实施方案
4.1 信息采集
4.1.1 召集相关各部门领导通过会议讨论或是与各组领导沟通确定权限方案的可行性
需要支持人员:运维经理、CTO支持、各组的领导。我们作为运维人员,拿着类似老师给大家讲解的这个文档,通过会议形式做演讲,慷慨激昂的演说,取得大佬们的支持
4.1.2 汇总、提交、审核所有相关员工对Linux服务器的权限需求
取得大佬们的支持后,通过发邮件或者联系相关人员取得需要的信息。比如说,让各个部门的经理整理归类本部门需要权限的人员名单、职位及对应的业务及权限
4.1.3 按照linux命令及服务规划权限
主要是运维人员根据上面手机的名单,对应账号配置权限
4.1.4 权限方案实施后,所有员工必须通过《员工Linux服务器管理权限申请表》来申请对应的权限,确定审批流程,规范化管理。
4.2 收集员工职能和对应权限
1)初级运维3名
权限分配:普通用户的权限,所管理的服务器的ALL权限,但是排除一些危害及切换root的权限
Cmnd_Alias C_CMD_1 = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root, !/sbin/fdisk, !/sbin/parted, !/bin/rm, !/bin/su, !/usr/sbin/visudo, !/usr/bin/vi * *sudo*, !/bin/vi*sudo* |
2) 运维经理和高级运维:各一名
权限分配:普通用户的权限,所管辖的服务器的ALL权限
4) 网络工程师:1名
权限分配:普通用户的权限,查看网络配置,并排除故障的权限
Cmnd_Alias N_CMD_1 = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/* |
5) 普通开发:10名
权限分配:普通用户的权限,对应服务的查看日志的权限,重启对应服务权限
大公司:项目负责制的规定
Cmnd_Alias P_CMD_1 = /bin/cat ~/log/*, /bin/cat /var/log/message, /bin/cat /app/log/*, /bin/sh / ~/scripts/deploy.sh |
4.3 创建用户角色
建立3个初级运维,一个网络工程师,一个运维经理,一个高级运维经理的用户,密码是111111
for user in chuji001 chuji002 chuji003 net001 senior001 manager001 do useradd $user echo “111111” | passwd --stdin $user done |
建立10个开发人员,属于phpers组
groupadd -g 999 phpers for n in `seq 10` do useradd -g phpers php00$n done |
4.4 sudoers配置内容
事先要备份/etc/sudoers文件,cp /etc/sudoers /etc/sudoers.ori
##Cmnd_Alias by oldboy##2012 Cmnd_Alias C_CMD_1 = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root, !/sbin/fdisk, !/sbin/parted, !/bin/rm, !/bin/su, !/usr/sbin/visudo, !/usr/bin/vi * *sudo*, !/bin/vi*sudo* Cmnd_Alias N_CMD_1 = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/* Cmnd_Alias P_CMD_1 = /bin/cat ~/log/*, /bin/cat /var/log/message, /bin/cat /app/log/*, /bin/sh / ~/scripts/deploy.sh ## User_Alias by oldboy###2012 User_Alias ADMINS = senior001, manager01 User_Alias CHUJIADMINS = chuji001, chuji002, chuji003 User_Alias NETADMINS = net001 User_Alias PROGRAMERS = %phpers ##Runas_Alias by oldboy##2012/11/30 Runas_Alias SUUSER = root #pri config ADMINS ALL=(ALL) NOPASSWD:ALL CHUJIADMINS ALL=(SUUSER) NOPASSWD:ALL,C_CMD_1 NETADMINS ALL=(SUUSER) NOPASSWD:N_CMD_1 |
PROGRAMERS ALL=(SUUSER) NOPASSWD:P_CMD_1 |