简述问题:

        随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有

更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问
题,并需要解决以往的root权限泛滥问题.
        我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的
部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化
这样无疑给公司的服务器及数据安全造成了不小的隐患.因此下文将详解此次关于权限划分的方案.
        公司有多个部门使用我们提供的linux服务器以及开通的账号:安全权限没有进行合理规划.,因此我提出更加
安全的账号管理方式: sudo授权形式.
        优势: 它可以对账号进行详细的权限分层划分,给服务器带来了更好的安全保障
        公司有级别不同的运维人员,我们需要对其权限整理划分,根据职责能力我们规划权限为  初级运维  中级运维
高级运维.他们拥有的权限分别为:

权限规划

运维部:

 级别 权限
 初级运维: 查看系统信息,查看网络状态: 
/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
 

开发部:

级别 权限
初级开发 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
 

架构组:

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

DBA组:

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

网络组

级别 权限
初级网络 普通用户权限
不加入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/*

 

公司现在有的运维人员:

运维组:5个初级运维,2个高级运维,1个运维经理
开发组:3个初级开发人员,1个高级开发,1个开发经理
架构组:2个架构工程师(架构组不加入sudo)
DBA组:3个初级DBA(初级DBA不加入sudo),1个高级DBA
网络组:2个初级网管(初级DBA不加入sudo),1个高级网管
 
基础命令说明(后面不详细讲解了):
useradd yun1 && echo "123456" | password --stdin yun1   这个是创建yun1用户 然后 输出一个123456交给 passwd 然后passwd把这一串字符作为了 yun1 的密码
 
for n in `seq 21 25`;do useradd user$n;echo "user$n`echo user$n|md5sum|cut -c4-8`"|passwd --stdin user$n;done 这里用的for循环来创建用户账号和密码:  seq 21 25  创建5个数字 n 就代表这5个数字  后面的创建用户接着 user$n  就是以user开头接n
然后 echo 输出yoghurt名的md5 使用cut 取出  4-8块的自字符交给 password --stdin  来为每位用户没配置不同的密码,他们的密码都是用户名的md5值  详细请看下面的参考
 
开始创建用户:
useradd yun1 && echo "123456" | password --stdin yun1   ##基础创建方法
 
使用for循环来创建用户和密码3(参考)
for n in `seq 21 25`;do useradd user$n;echo "user$n`echo user$n|md5sum|cut -c4-8`"|passwd --stdin user$n;done ##批量创建用户方式  

运维组:5个初级运维,2个高级运维,1个运维经理

for n in `seq 21 25`;do useradd chuyun$n;echo "user$n`echo user$n|md5sum|cut -c4-8`"|passwd --stdin user$n;done #创建5个初级运维,密码是md5的4-8位

-----------------------------------------------------

for n in `seq 1 5`;do useradd chuji$n;echo "123456" | passwd --stdin chuji$n;done #推荐用这个创建账户和密码,创建了 5个初级运维账户并配置了密码

for n in `seq 1 2`;do useradd gaoji$n;echo "123456" | passwd --stdin gaoji$n;done #创建高级运维的用户和密码

useradd jingli && echo 123456 | passwd --stdin jingli ## 创建经理的账号和密码

for n in `seq 1 2`;do useradd jiagou$n;echo "123456" | passwd --stdin jiagou$n;done #创建2个架构师 账号和密码

for n in `seq 1 3`;do useradd chujidba$n;echo "123456" | passwd --stdin chujidba$n;done #创建初级dba 账号和密码

useradd gaojidba && echo 123456 | passwd --stdin gaojidba ##创建高级dba账号和密码

for n in `seq 1 2`;do useradd wangguan$n;echo "123456" | passwd --stdin wangguan$n;done ## 创建初级网管

useradd superwangguan1 && echo 123456 | passwd --stdin superwangguan ## 创建高级网管

useradd jingli && echo 123456 | passwd --stdin jingli #创建运维经理

-----------------------------------------------------

开发组:3个初级开发人员,1个高级开发,1个开发经理

for n in `seq 1 5`;do useradd chuji$n;echo "123456" | passwd --stdin chuji$n;done

架构组:2个架构工程师(架构组不加入sudo)

DBA组:3个初级DBA(初级DBA不加入sudo),1个高级DBA

网络组:2个初级网管(初级DBA不加入sudo),1个高级网管

 
与本次权限规划无关======批量删除用户方式:
参考:

批量创建用户,创建随机密码

for n in `seq 21 25`;do useradd user$n;echo "user$n`echo user$n|md5sum|cut -c4-8`"|passwd --stdin user$n;done #取用户的md5 的 4-8位字符作为密码.

以上密码怎么看? ---- 通过 echo user$ 的用户名来查看 md5值.上面截取的就是 md5值得 4-8位那么准确获取密码的方法就是(user$ $是赋值的) 如是user21

echo user21|md5sum|cut -c4-8 # 这种方式比较麻烦 我们可以字节使用批量创建用户指定密码.如下

批量创建用户,创建指定密码

 for n in `seq 1 5`;do useradd chen$n;echo "123456" | passwd --stdin chen$n;done

批量删除用户:

for n in `seq 21 25`;do userdel -r user$n;done ## 尾部的user$中 user 就是你的用户名前缀 21-25 是后缀. 批量创建用户删除用户都有这个

 
开始创建相关用户:

运维组:5个初级运维,2个高级运维,1个运维经理

开发组:3个初级开发人员,1个高级开发,1个开发经理

for n in `seq 1 5`;do useradd chuji$n;echo "123456" | passwd --stdin chuji$n;done

架构组:2个架构工程师(架构组不加入sudo)

DBA组:3个初级DBA(初级DBA不加入sudo),1个高级DBA

网络组:2个初级网管(初级DBA不加入sudo),1个高级网管

下列命令直接复制粘贴即可完成创建

for n in `seq 1 5`;do useradd chujiyunwei$n;echo "123456" | passwd --stdin chujiyunwei$n;done

for n in `seq 1 2`;do useradd gaojiyunwei$n;echo "123456" | passwd --stdin gaojiyunwei$n;done

useradd yunweijingli && echo 123456 | passwd --stdin yunweijingli

for n in `seq 1 3`;do useradd chujikaifa$n;echo "123456" | passwd --stdin chujikaifa$n;done

useradd gaojikaifa && echo 123456 | passwd --stdin gaojikaifa

useradd kaifajingli && echo 123456 | passwd --stdin kaifajingli

for n in `seq 1 2`;do useradd jiagou$n;echo "123456" | passwd --stdin jiagou$n;done

for n in `seq 1 3`;do useradd chujidba$n;echo "123456" | passwd --stdin chujidba$n;done

useradd gaojidba && echo 123456 | passwd --stdin gaojidba

for n in `seq 1 2`;do useradd wangguan$n;echo "123456" | passwd --stdin wangguan$n;done

useradd gaojiwangguan1 && echo 123456 | passwd --stdin gaojiwangguan1

总计用户:

yunweijingli #(创建运维经理 useradd gaojiwangguan1 && echo 123456 | passwd --stdin gaojiwangguan1)

gaojiyunwei1 gaojiyunwei2 (#创建高级运维: (for n in `seq 1 2`;do useradd gaojiyunwei$n;echo "123456" | passwd --stdin gaojiyunwei$n;done))

chujiyunwei1 chujiyunwei2 chujiyunwei3 chujiyunwei5 chujiyunwei5 #创建处及运维: (for n in `seq 1 5`;do useradd chujiyunwei$n;echo "123456" | passwd --stdin chujiyunwei$n;done)

kaifajinlgi ##(创建开发经理 useradd kaifajingli && echo 123456 | passwd --stdin kaifajingli)

gaojikaifa1 ##(创建高级开发 useradd gaojikaifa && echo 123456 | passwd --stdin gaojikaifa)

chujikaifa1 chujikaifa2 chujikaifa3 ##创建初级开发 ( for n in `seq 1 3`;do useradd chujikaifa$n;echo "123456" | passwd --stdin chujikaifa$n;done )

jiagoushi1 jiagoushi2 ##(创建架构师 for n in `seq 1 2`;do useradd jiagoushi$n;echo "123456" | passwd --stdin jiagoushi$n;done)

dba1

dba2 ##(创建架构师 for n in `seq 1 2`;do useradd dba$n;echo "123456" | passwd --stdin dba$n;done)

dba3

gaojidba #创建高级DBA useradd DBA && echo 123456 | passwd --stdin DBA

wangguan1

wangguan2 ##(创建网管 for n in `seq 1 2`;do useradd wangguan$n;echo "123456" | passwd --stdin wangguan$n;done)

gaojiwanguan #创建高级网管 useradd gaojiwangguan && echo 123456 | passwd --stdin wangjiwangguan

 
用户权限规划:
高级运维: %gaojiyunwei

初级运维: %yunwei

开发: %kaifa

网络组: %net

#配置命令:

User_Alias NET = %net

User_Alias KAIFA = %kaifa

User_Alias YUNWEI = %yunwei

User_Alias GAOJIYUNWEI = %gaojiyunwei

-----------------------

#创建用户

useradd net1 && echo '123456' | passwd --stdin net1

useradd yunwei1 && echo '123456' | passwd --stdin yunwei1

useradd gaojiyunwei1 && echo '123456' | passwd --stdin gaojiyunwei1

useradd kaifa1 && echo '123456' | passwd --stdin kaifa1

创建组: (groupadd)

groupadd net

groupadd kaifa

groupadd yunwei

groupadd gaojiyunwei

加入组:(usermod -g 组 用户)

usermod -g yunwei yunwei1

usermod -g gaojiyunwei gaojiyunwei1

usermod -g net net1

usermod -g kaifa kaifa1

 
用户别名分类:
User_Alias NET = %net

User_Alias KAIFA = %kaifa

User_Alias YUNWEI = %yunwei

User_Alias GAOJIYUNWEI = %gaojiyunwei
 
命令别名管理
#网络工程师命令别名组

Cmnd_Alias NET_CMD = /bin/vi, /bin/ping, /bin/traceroute, /sbin/route, /bin/netstat, /bin/ps

#开发命令别名组

Cmnd_Alias KAIFA_CMD = /bin/grep, /usr/bin/vim, /bin/vi, /usr/bin/tail, /usr/bin/wc, /bin/ps

#运维命令别名组

Cmnd_Alias YUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], !/usr/bin/passwd root

#高级运维命令别名组

Cmnd_Alias GAOJIYUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], /usr/sbin/usermod, /usr/sbin/userdel

 
权限管理
#能获取到的权限

Runas_Alias NET = root

Runas_Alias KAIFA = root

Runas_Alias YUNWEI = root

Runas_Alias GAOJIYUNWEI = root
 
#对应关系

#权限分组

User_Alias NET = %net

User_Alias KAIFA = %kaifa

User_Alias YUNWEI = %yunwei

User_Alias GAOJIYUNWEI = %gaojiyunwei

#网络工程师命令别名组

Cmnd_Alias NET_CMD = /bin/vi, /bin/ping, /bin/traceroute, /sbin/route, /bin/netstat, /bin/ps

#开发命令别名组

Cmnd_Alias KAIFA_CMD = /bin/grep, /usr/bin/vim, /bin/vi, /usr/bin/tail, /usr/bin/wc, /bin/ps

#运维命令别名组

Cmnd_Alias YUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], !/usr/bin/passwd root

#高级运维命令别名组

Cmnd_Alias GAOJIYUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], /usr/sbin/usermod, /usr/sbin/userdel

#能获取到的权限

Runas_Alias NET = root

Runas_Alias KAIFA = root

Runas_Alias YUNWEI = root

Runas_Alias GAOJIYUNWEI = root

#Runas_Alias OP = root

#对应关系

NET ALL=(NET) NET_CMD

KAIFA ALL=(KAIFA) KAIFA_CMD

YUNWEI ALL=(YUNWEI) YUNWEI_CMD

GAOJIYUNWEI ALL=(GAOJIYUNWEI) GAOJIYUNWEI_CMD

 
一个脚本全部搞定权限(实测无问题,权限全部搞定 sudo -l 查看获得的权限)
 
useradd net1 && echo '123456' | passwd --stdin net1

useradd yunwei1 && echo '123456' | passwd --stdin yunwei1

useradd gaojiyunwei1 && echo '123456' | passwd --stdin gaojiyunwei1

useradd kaifa1 && echo '123456' | passwd --stdin kaifa1

groupadd net

groupadd kaifa

groupadd yunwei

groupadd gaojiyunwei

usermod -g yunwei yunwei1

usermod -g gaojiyunwei gaojiyunwei1

usermod -g net net1

usermod -g kaifa kaifa1

cat >>/etc/sudoers <<eof

User_Alias NET = %net

User_Alias KAIFA = %kaifa

User_Alias YUNWEI = %yunwei

User_Alias GAOJIYUNWEI = %gaojiyunwei

##network--

Cmnd_Alias NET_CMD = /bin/vi, /bin/ping, /bin/traceroute, /sbin/route, /bin/netstat, /bin/ps

##kaifamingling--

Cmnd_Alias KAIFA_CMD = /bin/grep, /usr/bin/vim, /bin/vi, /usr/bin/tail, /usr/bin/wc, /bin/ps

##yunweimingling--

Cmnd_Alias YUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], !/usr/bin/passwd root

##gaojiyunweimingling--

Cmnd_Alias GAOJIYUNWEI_CMD = /bin/chmod, /usr/bin/chattr, /usr/sbin/useradd, /usr/sbin/groupadd, /bin/touch, /bin/mkdir, /usr/bin/passwd[A-Za-z], /usr/sbin/usermod, /usr/sbin/userdel

##quanxian--

 Runas_Alias NET = root

 Runas_Alias KAIFA = root

 Runas_Alias YUNWEI = root

 Runas_Alias GAOJIYUNWEI = root

##Runas_Alias OP = root

#guanxi--

NET ALL=(NET) NET_CMD

KAIFA ALL=(KAIFA) KAIFA_CMD

YUNWEI ALL=(YUNWEI) YUNWEI_CMD

GAOJIYUNWEI ALL=(GAOJIYUNWEI) GAOJIYUNWEI_CMD

eof

 
 
 
 
 

企业sudo权限规划详解 (实测一个堆命令搞定)的更多相关文章

  1. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  2. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  3. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  4. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

  5. Spring Data Redis 详解及实战一文搞定

    SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问Redis的功能.它提供了与商店互动的低级别和高级别抽象,使用户免受 ...

  6. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  7. SVN 权限配置详解

    SVN权限详细配置 本章将详细介绍SVN权限配置涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内 ...

  8. (转) shiro权限框架详解06-shiro与web项目整合(上)

    http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...

  9. 若依管理系统RuoYi-Vue(二):权限系统设计详解

    若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...

随机推荐

  1. JSP Servlet中的Request和Response的简单研究

    本文参考了几篇文章所得,参考目录如下: 1.http://www.cnblogs.com/guangshan/p/4198418.html 2.http://www.iteye.com/problem ...

  2. CPU 和 Linux 进程

    进程与线程 进程应该是Linux中最重要的一个概念.进程运行在CPU上,是所有硬件资源分配的对象.Linux中用一个task_struct的结构来描述进程,描述了进程的各种信息.属性.资源. Linu ...

  3. IIS调用批处理权限的处理[转]

    最近公司希望将Windows 2003升级为Windows 2008,做完安全设置后发现.net调用批处理拒绝访问的情况.网上很多说更改应用程序池的权限,建议不需要修改该权限,我这里强烈建议使用默认的 ...

  4. 单端IO标准

    单端标准 常用的单端IO标准是LVTTL和LVCMOS. 目前业界绝大部分FPGA/CPLD器件的LVCOMS的IO是由CMOS推挽(push-pull)驱动器构成的,这种结构是上面的PMOS管和下面 ...

  5. java代码异常,水位异常的捕获

    总: 异常的产生!!!!异常如何实现,继承~~~ package com.b; //我不懂为什么这里的异常一定要来自于父类.子类.去继承它.因为Exception是Throwable类的子类异常类.而 ...

  6. mysql函数之三:find_in_set() 函数 返回str在字符串集strlist中的序号

    如果字符串str是在的strlist组成的N子串的字符串列表,返回值的范围为1到N. FIND_IN_SET(str,strlist) 如果字符串str是在的strlist组成的N子串的字符串列表,返 ...

  7. Cordova 3.x 配置文件config.xml强制横屏

    官方文档: http://cordova.apache.org/docs/en/3.5.0/config_ref_index.md.html#The%20config.xml%20File 添加 &l ...

  8. [0day]jQuery Mobile XSS

    漏洞影响范围: 任何一个website使用了 jQuery Mobile 并且开放了重定向都有可能存在XSS,并且目前还没有相关补丁信息. 应用介绍: jQuery Mobile是jQuery 框架的 ...

  9. pipeline(管道的连续应用)

    # -*- coding: utf-8 -*- """ Created on Tue Aug 09 22:55:06 2016 @author: Administrato ...

  10. 用UltraISO把硬盘文件制作成ISO格式

    转自:https://wenku.baidu.com/view/0052c88dcc22bcd126ff0cbf.html 用UltraISO把硬盘文件制作成ISO格式方法: 制作硬盘ISO文件步骤一 ...