sudo权限集中管理

 每日运维   2018-08-09 18:57   5594 人阅读  0 条评论

运维根据不同职位给出对应的系统权限。
如:
1)运维组


级别

权限

初级运维

查看系统信息,查看网络状态
/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig, 


/bin/netstat,/sbin/route

高级运维

查看系统信息,查看和修改网格配置,进程管理,软件包管理,存储管理
/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

运维经理

超级用户所有权限
ALL

 
2)开发组:

级别权限
初级开发root的查看权限,对应服务查看日志的权限
/usr/bin/tail/app/log*,/bin/grep/app/log*,/bin/cat,/bin/ls
高级开发root的查看权限,对应服务查看日志的权限,重启对应服务的权限
/sbin/service,/sbin/chkconfig,tail /app/log*,grep /app/log*,/bin/cat,/bin/ls, 


/bin/sh ~/scripts/deploy.sh

开发经理项目所在服务器的ALL权限,不能修改root密码
ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root

 
3)架构组

级别权限
架构工程师普通用户的权限
不加入sudo列表

 
 
4)DBA组:

级别权限
初级DBA普通用户的权限
不加入sudo列靓
高级DBA项目所在数据库服务器的ALL权限
ALL, /usr/bin/passwd [A-Za-z]* !/usr/bin/passwd root, !/usr/sbin/visudo,

 
 
5)网络组

级别权限
初级网络普通用户权限
不加入sudo列靓
高级网络项目所在数据库服务器的ALL权限
/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/*

 
例如:
运维组:3个初级运维,1个高级运维,1个运维经理
开发组:2个初级开发人员,1个高级开发,1个开发经理
架构组:2个架构工程师(架构组不加入sudo)
DBA组:3个初级DBA(初级DBA不加入sudo),1个高级DBA
网络组:2个初级网管(初级网管不加入sudo),1个高级网管
 
模拟创建用户角色:
运维组:
3个初级运维,1个高级运维,1个运维经理
密码统一是:123.abc
for user in chujiyw001 chujiyw002 chujiyw003 ywsenior001 ywmanager001
do
useradd $user
echo “123.abc”|passwd –stdin $user
done
groupadd -g 555 chujiyw
gpasswd -a chujiyw001 chujiyw
gpasswd -a chujiyw002 chujiyw
gpasswd -a chujiyw003 chujiyw
 
开发组:
2个初级开发人员,1个高级开发,1个开发经理
密码统一是:123.abc
for user in chujikf001 chujikf002 kfsenior001 kfmanager001
do
useradd $user
echo “123.abc”|passwd –stdin $user
done
groupadd -g 666 chujikf
gpasswd -a chujikf001 chujikf
gpasswd -a chujikf002 chujikf
 
架构组:
2个架构工程师 (因为架构组不加入sudo不用管它)
密码统一是:123.abc
for user in jiak001 jiak002
do
useradd $user
echo “123.abc”|passwd –stdin $user
done
 
DBA组:
3个初级DBA(初级DBA不加入sudo),1个高级DBA
密码统一是:123.abc
for user in chjidba001 chjidba002 chjidba003 dbasenior001
do
useradd $user
echo “123.abc”|passwd –stdin $user
done
 
网络组:2个初级网管(初级网管不加入sudo),1个高级网管
密码统一是:123.abc
for user in chjidwg001 chjidwg002 wgsenior001
do
useradd $user
echo “123.abc”|passwd –stdin $user
done
 
 
首先定义一个命令别名:
运维组:
#yuwei Cmnd_Alias#
Cmnd_Alias CYW_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,
/bin/netstat,/sbin/route
 
Cmnd_Alias GYW_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
 
开发组:
#kaifa Cmnd_Alias#
Cmnd_Alias CKF_CMD_1 = /usr/bin/tail /app/log*,/bin/grep/app/log*,/bin/cat,/bin/ls
Cmnd_Alias GKF_CMD_1 = /sbin/service,/sbin/chkconfig,/usr/bin/tail/app/log*,/bin/grep /app/log*,
/bin/cat,/bin/ls,/bin/sh ~/scripts/deploy.sh
Cmnd_Alias KFJL_CMD_1 = ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
 
 
DBA组:
#DBA#
Cmnd_Alias GJDBA_CMD_1 = ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
 
网络:
#wangguan#
Cmnd_Alias GWG_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 xxxx at 20170818##
User_Alias CHUJIADMINS = %chujiyw
User_Alias CHUJI_KAIFA = %chujikf
User_Alias GWGADMINS = wgsenior001
 
设置Runas_Alias用户身份别名
##Runas_Alias by xxxx at 20170818##
Runas_Alias OP = root
 
命令与用户授权配置
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
##set bydingjian at 20131222##
#yunwei#
CHUJIADMINS     ALL=(OP)     CYW_CMD_1
ywsenior001      ALL=(OP)     GYW_CMD_1
ywmanager001    ALL=(OP)     ALL
#kaifa#
CHUJI_KAIFA      ALL=(OP)     CKF_CMD_1
kfsenior001       ALL=(OP)      GKF_CMD_1
kfmanager001    ALL=(OP)      KFJL_CMD_1
#DBA#
dbasenior001     ALL=(OP)     GJDBA_CMD_1
#net#
GWGADMINS     ALL=(OP)     GWG_CMD_1
 
sudoer配置内容如下:
##Cmd_Alias by xxxx at 20170818##
#yuwei Cmnd_Alias#
Cmnd_Alias CYW_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,
/sbin/ifconfig,/bin/netstat,/sbin/route
Cmnd_Alias GYW_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
 
#kaifa Cmnd_Alias#
Cmnd_Alias CKF_CMD_1 = /usr/bin/tail /app/log*,/bin/grep/app/log*,/bin/cat,/bin/ls
Cmnd_Alias GKF_CMD_1 = /sbin/service,/sbin/chkconfig,/usr/bin/tail/app/log*,/bin/grep /app/log*,
/bin/cat,/bin/ls,/bin/sh ~/scripts/deploy.sh
Cmnd_Alias KFJL_CMD_1 = ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
#DBA#
Cmnd_Alias GJDBA_CMD_1 = ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
 
#wangguan#
Cmnd_Alias GWG_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 xxxx at 20170818##
User_Alias CHUJIADMINS = %chujiyw
User_Alias CHUJI_KAIFA = %chujikf
User_Alias GWGADMINS = wgsenior001
##Runas_Alias by xxxx at 20170818##
Runas_Alias OP = root
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
##set by xxxx at 20170818##
#yunwei#
CHUJIADMINS     ALL=(OP)     CYW_CMD_1
ywsenior001      ALL=(OP)     GYW_CMD_1
ywmanager001    ALL=(OP)     ALL
#kaifa#
CHUJI_KAIFA      ALL=(OP)     CKF_CMD_1
kfsenior001       ALL=(OP)      GKF_CMD_1
kfmanager001    ALL=(OP)      KFJL_CMD_1
#DBA#
dbasenior001     ALL=(OP)     GJDBA_CMD_1
#net#
GWGADMINS     ALL=(OP)     GWG_CMD_1
 
注意事项: 
1)别名大写 
2)路径要全路径 
3)用”\”换行 
 
测试
分别切换到每个用户下
用sudo -l查看每个人所拥有的sudo权限
 
 
 

sudo配置注意事项:
1)命令别名下的成员必须是文件或目录的绝对路径
2)别名名称是包含大写字母、数字、下划线,如果是字母都要大写。
3)一个别名下有多个成员,成员与成员之间,通过半角“,”逗号分隔;成员必须是有效实际存在的。
4)别名成员受别名类型Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias制约,定义什么类型的别名,就要有什么类型的成员相配。
5)别名规则是每行算一个规则,如果一个别名规则一行容不上时,可以通过“\”来续行
6)指定切换的用户要用()括号括起来,如果省略括号,则默认为root用户;如果括号里是ALL,则代表能切换到所有用户
7)如果不需要密码直接运行命令的,应该加NOPASSWD:参数
8)禁止某程序或命令执行,要在命令动作前面加“!”号,并且放在允许执行命令的后面。
9)用户组前面必须加%


本文地址:https://linux365.cn/39.html
版权声明:本文为原创文章,版权归 每日运维 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?