用户管理生产环境实践案例

关于用户管理的命令回顾:
visudo

1. 关于用户管理命令的回顾

<1> useradd命令

useradd 
-g:指定组 
-u:指定uid 
-c:注释 
-s: 指定用户登入后所使用的shell。 
-d: 指定用户登入时的起始目录 
-G: 指定用户所属的附加群组(也就是多群组) 
-M: 不要自动建立用户的登入目录 
-D: 变更预设值(不太理解) 
-e:指定账户的有效期限

<2> 其他命令

  • userdel

  • usermod

  • groupadd

  • groupdel

  • passwd

  • chage

  • su

  • sudo

  • visudo

  • groups

  • id

  • w,whoami,last

2. 正文

<1> 问题现状

      当公司里的服务器有几十甚至超过上百台,并且能操作服务器的人员很多(开发+运维+架构+DBA),当大家登陆使用Linux服务器时,不同职位的员工水平不同,导致操作不符合规范,不同部门的人员的服务器权限没有明确的规范,经常导致文件丢失,这样导致服务器的安全存在很大问题。为了解决以上问题,单个用户管理权限过大现状,现提出针对Linux服务器用户权限集中管理的解决方案。

<2> 需求分析

      生产环境中,我们既希望root密码掌握在少数人手中,又希望多个服务器系统管理员或者相关职能的人,能够完成更多与自身职能相关的服务器工作,又不导致越权操作导致服务器安全隐患。

      在此就需要sudo管理来和su来一起完成生产环境服务器对用户的管理需求。

<3> 实现方针

      生产环境中,应该针对不同部门(开发部门,运维部门,DBA,网络部门等)的不同职能的工作人员(项目经理,开发主管,运维主管,架构师,DBA,网络工程师,开发工程师,运维工程师等),分等级的分配服务器的权限,尽量使对应人员的服务器权限最小化。

      这样即减少了服务器安全隐患,又让不同部门不同职能的工作人员提升工作效率,提升项目进度。

<4>. 实施过程

(1)信息收集

      1.1 各部门收集汇总不同职能的工作人员所需要的服务器权限,并有各部门负责人审核对应员工的服务器权限需求。并且整理成表格如下,之后针对此表格举行会议进行终审。

      举例的表格如下:

姓名 价格 jiage shuliang
张三 php中级开发 旅游业务开发 上传文件到Nginx
王五 开发经理 **项目负责 ALL,但不能修改密码

      1.2审核通过后,运维部门根据表格进行相关人员的测试服务器权限配置,也就visudo来进行配置。配置完成后运维部门负责人进行审核并交由测试部门测试,汇报相关结果。测试环境没有出现问题后,配置正式服务器环境,并进一步交由测试部门测试并给出结果。相关人员服务器权限存入数据库并备份。

      1.3方案实施后,新入员工须通过《员工服务器管理权限申请表》来申请对应的权限,并将结果记录进数据库。相关人员的服务器权限变动须提交部门负责人审批,并将结果实时记录进入数据库。

      1.4运维部门针对服务器权限写出文档,并对相关人员进行培训。

权限分配审核结果的权限分配举例(不同公司根据不同业务讨论给出,这里不罗列给出):

zhineng master
初级运维 /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig…
高级运维 /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/mount,/usr/bin/yum,/bin/umount
运维经理 ALL
开发 /sbin/service,/sbin/chkconfig,tail /app/log*,grep /app/log*,/bin/cat,/bin/ls
(2)模拟用户测试

测试建立3个初级运维,1个高级运维,1个网络工程师,1个运维经理,方便起见,密码统一设置为111111

for user in junSa001 junSa002 junSa003 senSa001 net001 saManager001do    useradd $user    echo "111111"|passwd --stdin $userdone

之后建立5个开发人员,属于phpers组

groupadd -g 666 phpersfor n in `seq 5`do    useradd -g phpers php00$n    echo "111111"|passwd --stdin php00$ndone

(以下所有配置写入visudo)定义各个部门各个职能可执行的命令组:

##Cmnd_Alias 初级运维命令组
Cmnd_Alias JY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig

##Cmnd_Alias 高级运维命令组
Cmnd_Alias SY_CMD_1 = /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/mount,/usr/bin/yum,/bin/umount

##Cmnd_Alias 开发命令组
Cmnd_Alias KF_CMD_1 = /sbin/service,/sbin/chkconfig,tail /app/log*,grep /app/log*,/bin/cat,/bin/ls

之后给用户组定义别名:

##User_Alias 
User_Alias CHUJIADMINS = junSa001 junSa002 junSa003
User_Alias GWNETADMINS = net001

##phpers组
User_Alias CHUJI_KAIFA = %phpers

定义OPERATOR,执行root的权限命令

##Runas_AliasRunas_Alias OP = root

接下来就是主配置了:

CHUJIADMIS   ALL=(OP)  JY_CMD_1 
GWNETADMINS  ALL=(OP)  SY_CMD_1
CHUJI_KAIFA  ALL=(OP)  KF_CMD_1 
kaifaManager ALL=(ALL) ALL,!/usr/bin/passwd,!/usr/sbin/visudo,!/usr/bin/vi *sudoer*##....

切换到junSa001用户,执行sudo -l命令,可以看到junSa001用户可以执行的命令:

User chuji001 may run the following commands on this host:(root) /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig,/bin/netstat, /sbin/route

测试发现,执行sudo useradd,则没有权限执行命令:

[chuji001@localhost ~]$ sudo useradd kkkk
Sorry, user chuji001 is not allowed to execute '/usr/sbin/useradd kkkk' as root on localhost.localdomain.

原创文章,作者:21期王逸凡,如若转载,请注明出处:http://www.178linux.com/52798

(5)
21期王逸凡21期王逸凡
上一篇 2016-10-18 20:48
下一篇 2016-10-18 21:50

相关推荐

  • 第一篇

     新的征程又开始了,努力吧!

    Linux干货 2016-12-26
  • Linux逻辑卷LVM实现

    Linux逻辑卷LVM实现 背景: 在学习Linux中,学习到了逻辑卷LVM,发现LVM是个十分好用的一个技术,可以多个硬盘合并在一起使用,同时还可以动态的增加和减少。在这里将Linux逻辑卷的具体实现记录下来。 介绍: 逻辑卷LVM:Logica Volum Manager,它是Linux环境下对磁盘分区进行管理的一种机制,普通的磁盘分区管理方式在逻辑分区…

    2017-08-12
  • vim的使用

    本文主要讲述vim的使用 一.vim是什么? vim是一个十分著名也十分强大的编辑器,是vi的增强版,是一个模式化的编辑器,英文名称为 Visual Interface iMprove,在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器的美称。 二.vim的工作模式  (1)编辑模式:也叫命令模式,通过编辑命令实现…

    Linux干货 2016-10-29
  • 【26期】Linux第二周学习小总结

    关于用户组的一些小小的整理     本周学习很多的知识,一些文件管理的技巧和命令,重定向和管道的实用技巧和拓展,最后则是到了我们的用户组的权限和管理,既然说到了管理,我们都知道在Linux中,老师讲的最多的一句话就是一切皆文件,既然是文件就会有用户去用,在里面进行各种的操作,比如增删改查啊,对文件的重新定义啊,那我们就…

    2017-07-21
  • 推荐-NFS共享MySQL使用DNS轮询实现Web负载均衡

    NFS共享MySQL使用DNS轮询实现Web负载均衡 NFS共享MySQL使用DNS轮询实现Web负载均衡 前言: 实验拓扑图 实验环境 实验步骤 搭建NFS 搭建dns,MySQL环境 DNS配置 MySQL配置 WEB配置 第一台主机安装 第二台主机安装 测试 web1测试 web2测试 回到web1测试 总结 前言: 今天学习了NFS,遂结合前面学习的…

    Linux干货 2016-03-29
  • Linux Cluster之Keepalived + Nginx的实现

      一、实验环境 http server1与http server2组成web集群,由nginx服务器实现负载均衡代理,使用keepalived保证nginx服务的高可用。通过虚拟IP192.168.154.177对外提供web服务。 实验目的: 1)当Nginx server1上的nginx服务异常时,由nginx server2提供反带服务。 …

    2016-11-02