- 问题现状
当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构DBA+产品+市场),在大家登录使用Linux服务器时,不同职能的员工水平不同,因此导致操作系统很不规范,root权限泛滥(几乎大部分人员都有root权限),经常导致文件等莫名其妙的丢失,老手和新手员工对服务器的熟知度也不同,这样使得公司服务器安全存在很大不稳定性、及操作安全隐患,据调查企业服务器环境,50%以上的安全问题都来自于内部,而不是外部。为了解决以上问题,单个用户管理权限过大现状,现提出针对Linux服务器用户权限集中管理的解决方案。 - 项目需求
我们既希望超级用户root密码掌握在少数或唯一的管理员手中,又希望多个系统管理员或相关有权限的人员,能够完成更多更复杂的自身职能相关的工作,又不至于越权操作导致系统安全隐患。
最小化:1)安装软件最小化。2)目录文件权限最小化。3)用户权限最小化。4)程序运行权限最小化。
那么,如何解决多个系统管理员都能管理系统而不又不让超级权限泛滥的需求呢?这就需要sudo管理来替代或结婚su命令来完成这样的苛刻且必要的企业服务器用户管理需求。
3.具体实现
针对公司里不同部门,根据员工的具体工作职能(例如:开发,运维,数据库管理员),分等级分层次的实现对Linux服务器管理的权限最小化、规范化。这样既减少了运维管理成本,消除了安全隐患,又提高了工作效率,实现了高质量的、快速化的完成项目进度,以及日常系统维护。
4.实施方案
4.1信息采集
召集 相关各部门领导通过会议讨论或是与各组领导沟通确定权限管理方案的可行性。需要支持的人员:运维经理或总监、CTO支持、各部门组的领导。
4.2确定方案可行性后,会议负责人汇总、提交、审核所有相关员工对Linux服务器的权限需求。
5.按照需要执行的Linux命令程序及公司业务服务来规划权限和人员对应配置。
####权限管理实战项目######
1、建立用户
for user in chuji001 chuji002 chuji003 net001 senior001 manager001
do
useradd $user
echo "111111"|passwd --stdin $user
done
2、建立5个开发人员,属于phpers组
groupadd -g 999 phpers
for n inseq 5
do
useradd -g phpers php00$n
done
for user in kaifamanager001 seniorphpers
do
useradd $user
echo "111111"|passwd --stdin $user
done
3、使用visudo编辑vi /etc/sudoers 新增配置如下
Defaults logfile=/var/log/sudo.log
##Cmnd_Alias by Tim##2018/01/16
Cmnd_Alias CY_CMD_1 = /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /usr/bin/iostat, /bin/ifconfig, /bin/netstat, \
/bin/hostname, /bin/route
Cmnd_Alias GY_CMD_1 = /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, \
/sbin/route, /sbin/iptables, /etc/init.d/network, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/rpm, \
/usr/bin/up2date, /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias CK_CMD_1 = /usr/bin/tail /app/log, /bin/grep /app/log, /bin/cat, /bin/is
Cmnd_Alias GK_CMD_1 = /sbin/service, /sbin/chkconfig, /bin/tail /app/log, /bin/grep /app/log, /bin/cat, /bin/ls, \
/bin/sh ~/scripts/deploy.sh
Cmnd_Alias GW_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/
###################################################################################
##User_Alias by Tim##2018/01/16
User_Alias CHUJIADMINS = chuji001,chuji002,chuji003
User_Alias GWNETADMINS = net001
User_Alias CHUJI_KAIFA = %phpers
##Runas_Alias by Tim##2018/01/16
Runas_Alias OP = root
#pri config
senior001 ALL=(OP) GY_CMD_1
manager001 ALL=(ALL) NOPASSWD:ALL
kaifamanager001 ALL=(ALL) ALL,(ALL) /usr/bin/passwd [A-Za-z],(ALL) !/usr/bin/passwd root, \
(ALL) !/usr/sbin/visudo, (ALL) !/usr/bin/vim, (ALL) !/usr/bin/vi sudoer, (ALL) !/usr/bin/sudo su -, (ALL) !/bin/su
seniorphpers ALL=(OP) GK_CMD_1
CHUJIADMINS ALL=(OP) CY_CMD_1
GWNETADMINS ALL=(OP) GW_CMD_1
CHUJI_KAIFA ALL=(OP) CK_CMD_1
原文地址:http://blog.51cto.com/11956937/2061492