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

关于用户管理的命令回顾:
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

相关推荐

  • LVM2

    LVM2:         LVM: Logical Volume Manger, Version:2        dm: device mapper, 将一个或多个底层块设备组织 成一个逻辑设备的模块;           &…

    Linux干货 2016-12-30
  • N21-第二周博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理命令有复制、删除与移动:cp,mv,rm cp(复制档案或目录) [root@study ~]# cp [-adfilprsu] 源(source) 目标(destination) [root@study ~]# cp [options] source1 source2 s…

    Linux干货 2016-07-16
  • DHCP简单阐述及配置实现方法

    DHCP是什么…… DHCP是Dynamic Host Configuration Protocol的缩写,它是TCP/IP协议簇中的一种,主要是用来给网络客户机分配动态的IP地址。 其主要功能是: 用于内部网络或网络服务供应商自动分配IP地址给用户 用于内部网络管理员作为对所有电脑作中央管理的手段 直接点就是,这些被…

    Linux干货 2016-12-05
  • Linux系统的磁盘管理

    linux磁盘及文件系统管理 磁盘分区及文件系统管理 RAID设备 LVM: 磁盘的动态编辑管理 CPU, memory(RAM), I/O I/O设备: Disks, Ethercard (网卡) Disks: 实现持久存数数据 接口类型: IDE(ata): 并口  理论速度: 133MB/s SCSI: 并口 640MB/s SATA: 串口…

    Linux干货 2016-08-29
  • Linux简单命令

    cal 日历 bc  计算器     obase=2 输出为二进制       ibase=2输入为二进制      \onnn八进制      \xHH十六进制 $()识别命令和变量,同反向单引号 , 可在命令调用另一个命令的执行结果时用 字体颜色:红色-打包文件(压缩包),绿色-可执行,浅蓝-软连接,蓝色-目录 echo $SHELL查看当前shell …

    Linux干货 2018-03-18
  • N21 第二周练习

    ####1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。复制:cp   移动:mv    删除:rm   cp:copy,复制文件或目录</br>  cp [OPTION]… SOURCE… DIRECTORY…

    Linux干货 2016-07-22