②权限规划(sudo)

权限规划(sudo)

起草人:陈泰成

时间:2017年8月12日

一 问题简述

随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想(root权限随意给出,开发、测试、运维共用同一账号)应当摒弃,公司需要有更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系。运维主管明确指出权限存在的问题,并需要解决以往的root权限泛滥问题。

我作为本次权限规划的发起人,我首先了解到公司服务器权限现状后,经过多次与相关员工及领导沟通,确认了公司存在的部分问题:运维部基本入职离职流程中存在一些账号问题,如:离职不报备,系统权限不回收、账号密码过于简单化等。root权限随意给开发及测试。

以上问题无疑给公司的服务器及数据安全造成了不小的隐患。因此下文将详解此次关于权限划分的方案。

公司有多个部门使用我们提供的linux服务器以及开通的账号:安全权限没有进行合理规划,因此我提出更加安全的账号管理方式:①领用账号权限流程,②命令执行以sudo授权形式。

优势: 它可以对账号进行详细的权限分层划分,给服务器带来了更好的安全保障,公司有级别不同的运维人员,我们需要对其权限整理划分,根据职责能力我们规划权限为初级、中级、高级。而其他部门,如开发、测试等部门采取服务器账号权限流程。这样有利于权限最小化控制,避免因权限滥用导致服务运行不稳定,配置随意修改,不规范操作等安全隐患。为后续日志审计等溯源,分析奠定基础。

二 权限规划表及技术人员配备情况

1.权限规划表

①运维组权限规划表


级别


权限


初级运维


查看系统、网络、服务、进程状态信息:

/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/ip,/bin/ping,/usr/bin/sar,/usr/bin/free,   /usr/bin/vmstat,/usr/bin/mpstat,/usr/bin/iostat,/usr/sbin/iotop,/usr/bin/top,/bin/ps


高级运维


查看和修改系统、网格、服务、进程状态配置信息,软件包管理,存储管理

/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/ip,/usr/bin/sar,/usr/bin/free, /usr/bin/vmstat,/usr/bin/mpstat,/usr/bin/iostat,/usr/sbin/iotop,/usr/bin/top,/bin/ps,/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,/usr/bin/tail /app/log*,/bin/grep   /app/log*,/bin/cat,/bin/ls, /bin/sh ~/scripts/deploy.sh


开发经理


项目所在服务器的ALL权限,不能修改root密码
  ALL,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vim   /etc/sudoers

③测试组权限模板


级别


权限


测试


普通用户的权限

不加入sudo列表

④DBA组权限模板


级别


权限


初级DBA


普通用户的权限

不加入sudo列表


高级DBA


项目所在数据库服务器的ALL权限
  ALL,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vim   /etc/sudoers

⑤网络组权限模板


级别


权限


初级网工


普通用户的权限

不加入sudo列表


高级网工


项目所在服务器的有关网络配置的权限
  /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/ip,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat /var/log/*,/usr/bin/vim   /etc/sysconfig/network-scripts/*

2.公司目前的技术人员配备情况

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

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

测试组:2个测试工程师(测试组不加入sudo)

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

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

三 命令讲解

创建用户

useradd yw && echo "123456" | passwd --stdin yw

创建yw用户,然后输出一个123456交passwd作为yw用户的密码

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个数字(21,22,23,24,25),n 就代表这5个数字,后面的创建用户接着user$n就是以user开头接n,

然后 echo 输出用户名的md5,使用cut 取出4-8块的字符交给passwd --stdin来为每位用户配置不同的密码,他们的密码都是用户名的md5值的4至8位字符串。

删除用户

userdel yw

删除yw用户

for n in `seq 21 25`;do userdel -r user$n;done

用for循环删除用户

查看自己的sudo权限:sudo -l

……

……

四 实施命令脚本

举例:在公司时根据实际情况编写用户账号密码及相应权限,此处根据上述权限规划表为例。

1.创建用户组和用户:

#运维组、开发组、测试组、DBA组、网络组

groupadd chujiyunwei -g 1100

groupadd gaojiyunwei -g 1110

groupadd yunweijingli -g 1120

groupadd chujikaifa -g 1200

groupadd gaojikaifa -g 1210

groupadd kaifajingli -g 1220

groupadd ceshi -g 1300

groupadd chujidba -g 1400

groupadd gaojidba -g 1410

groupadd chujinetwork -g 1500

groupadd gaojinetwork -g 1510

#-----------------------------------------------------------------------------

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

#-----------------------------------------------------------------------------

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

#创建5个初级运维账户并配置了密码

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

#创建2个高级运维的用户和密码

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

#创建1个运维经理的账号和密码

#-----------------------------------------------------------------------------

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

#-----------------------------------------------------------------------------

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

#创建3个初级开发账户并配置了密码

useradd gaojikaifa1 -g 1210 && echo "123456" | passwd --stdin gaojikaifa1

#创建1个高级开发的用户和密码

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

#创建1个开发经理的账号和密码

#-----------------------------------------------------------------------------

#测试组:2个测试

#-----------------------------------------------------------------------------

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

#创建2个测试账号和密码

#-----------------------------------------------------------------------------

#DBA组:3个初级DBA,1个高级DBA

#-----------------------------------------------------------------------------

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

#创建3个初级dba 账号和密码

useradd gaojidba1 -g 1410&& echo 123456 | passwd --stdin gaojidba1

#创建1个高级dba账号和密码

#-----------------------------------------------------------------------------

#网工组:2个初级网工,1个高级网工

#-----------------------------------------------------------------------------

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

#创建2个初级网工

useradd gaojinetwork1 -g 1510 && echo 123456 | passwd --stdin gaojinetwork1

#创建1个高级网工

2.配置/etc/sudoers文件

cat >>/etc/sudoers<<EOF

#配置用户组别名:

User_Alias CHUJIYUNWEI = %chujiyunwei

User_Alias GAOJIYUNWEI = %gaojiyunwei

User_Alias YUNWEIJINGLI = %yunweijingli

User_Alias CHUJIKAIFA = %chujikaifa

User_Alias GAOJIKAIFA = %gaojikaifa

User_Alias KAIFAJINGLI = %kaifajingli

User_Alias CESHI= %ceshi

User_Alias CHUJIDBA = %chujidba

User_Alias GAOJIDBA = %gaojidba

User_Alias CHUJINETWORK = %chujinetwork

User_Alias GAOJINETWORK = %gaojinetwork

#配置命令别名:

Cmnd_Alias CHUJIYUNWEI_CMD =  /bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/ip,/bin/ping,/usr/bin/sar,/usr/bin/free, /usr/bin/vmstat,/usr/bin/mpstat,/usr/bin/iostat,/usr/sbin/iotop,/usr/bin/top,/bin/ps

Cmnd_Alias GAOJIYUNWEI_CMD =  /bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/ip,/usr/bin/sar,/usr/bin/free,/usr/bin/vmstat,/usr/bin/mpstat,/usr/bin/iostat,/usr/sbin/iotop,/usr/bin/top,/bin/ps,/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 YUNWEIJINGLI_CMD =  ALL

Cmnd_Alias CHUJIKAIFA_CMD =  /usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

Cmnd_Alias GAOJIKAIFA_CMD =  /sbin/service,/sbin/chkconfig,/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls, /bin/sh ~/scripts/deploy.sh

Cmnd_Alias KAIFAJINGLI_CMD =  ALL,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vim /etc/sudoers

Cmnd_Alias CESHI_CMD =  /usr/bin/uname

Cmnd_Alias CHUJIDBA_CMD =  /usr/bin/uname

Cmnd_Alias GAOJIDBA_CMD =  ALL,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vim /etc/sudoers

Cmnd_Alias CHUJINETWORK_CMD =  /usr/bin/uname

Cmnd_Alias GAOJINETWORK_CMD =  /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/ip,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat /var/log/*,/usr/bin/vim /etc/sysconfig/network-scripts/*

#用户组能获取到的权限

Runas_Alias CHUJIYUNWEI = root

Runas_Alias GAOJIYUNWEI = root

Runas_Alias YUNWEIJINGLI = root

Runas_Alias CHUJIKAIFA = root

Runas_Alias GAOJIKAIFA = root

Runas_Alias KAIFAJINGLI = root

Runas_Alias CESHI = root

Runas_Alias CHUJIDBA = root

Runas_Alias GAOJIDBA = root

Runas_Alias CHUJINETWORK = root

Runas_Alias GAOJINETWORK = root

#用户组权限对应关系

CHUJIYUNWEI ALL=(CHUJIYUNWEI) CHUJIYUNWEI_CMD

GAOJIYUNWEI ALL=(GAOJIYUNWEI) GAOJIYUNWEI_CMD

YUNWEIJINGLI ALL=(YUNWEIJINGLI) YUNWEIJINGLI_CMD

CHUJIKAIFA ALL=(CHUJIKAIFA) CHUJIKAIFA_CMD

GAOJIKAIFA ALL=(GAOJIKAIFA) GAOJIKAIFA_CMD

KAIFAJINGLI ALL=(KAIFAJINGLI) KAIFAJINGLI_CMD

CESHI ALL=(CESHI) CESHI_CMD

CHUJIDBA ALL=(CHUJIDBA) CHUJIDBA_CMD

GAOJIDBA ALL=(GAOJIDBA) GAOJIDBA_CMD

CHUJINETWORK ALL=(CHUJINETWORK) CHUJINETWORK_CMD

GAOJINETWORK ALL=(GAOJINETWORK) GAOJINETWORK_CMD

EOF

五 权限领用流程

1.   领用流程

① 领用人发起权限领用流程,填写权限配置变更申请表,交由运维人员审核。

② 运维人员审核没有问题告知运维主管,由运维主管开放权限。

2.配置更变申请表

配置变更申请表


*以下申请部门填写 


填表日期: 


年  月  日 


申请部门



联系方式


申请测试日期


年  月  日


申请实施日期


年 月 日


实施部门


实施联系人


联系方式


变更目的

 


变更内容:(如内容较多,请另附页说明)

 


申请部门

  


一般变更    重大变更    紧急变更


签章:                  日期:             


*以下为运维单位填写 


运维单位

  


      一般变更    重大变更    紧急变更


同意申请实施日期     请在以下日期执行:     年  月  日


签章:                  日期:             


*以下为实施人填写 


运维单位

处理结果


签章:                  日期:             

注: 1、该申请需附带需求报告、开发及变更计划、变更方案操作步骤详解、用户测试报告、源代码或脚本等的纸质文件,及操作所涉及到的电子文件用以存档。

2、变更方案需包括变更步骤详解、变更成功标志、回滚方案等。

原文地址:http://blog.51cto.com/ilctc/2095784

时间: 2024-11-07 07:30:45

②权限规划(sudo)的相关文章

企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

Linux运维--企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

Linux学习笔记——使用指定的用户权限执行程序——sudo

      sudo可以用来以其他用户身份执行命令,sudo命令可以针对单个命令授予临时权限.sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性. 1:sudo的帮助信息如下: [email protected]:~/桌面$ sudo --helpsudo - 以其他用户身份执行一条命令 usage: sudo -h | -K | -k | -Vusage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user

WSFC AD权限规划

长久以来老王一直发现一个问题似乎有很多人对于WSFC群集的权限存在一些误解以为只有域administrator才可以装或者要Domain admins才可以装 其实WSFC的安装并不需要那么大的权限在本文中老王将为大家分享WSFC AD权限规划我们将尽可能采用最小化权限的原则来进行设计 主要围绕两种场景 1.最小化权限 2.预先置备CNO 之前博客中也曾经和大家提到过群集的创建过程以WSFC 2012时代之后为例当我们输入群集名称后群集会使用我们当前的执行账号去AD里面创建CNO对象去DNS中创

Linux学习之文件属性chattr权限与sudo权限(十二)

Linux学习之文件属性chattr权限与sudo权限 文件属性chattr Linux文件的隐藏属性在保护系统文件的安全性上非常重要,是防止误操作的,对root用户也同样有效.chattr命令只能在Ext2/Ext3的文件系统生效. 设置文件属性 chattr [+-=][选项] 文件或目录名 常用选项详解 i:如果对文件设置i属性,那么不允许对文件进行删除.改名,也不能添加和修改数据:如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件. a:如果对文件设置a属性,那么

&#8203;权限命令,sudo命令,用户管理命令,特殊权限

权限命令 chmod 777 /文件 或chmod u+x,g-r+,o=w /文件-R递归 权限:删除一个文件必须对该文件所在目录有w权限 ,目录权限优于文件权限   目录必须有x权限,不然无法cd,可以ls一级只有root和文件所有者可以chmod,只有root可以改变文件所有者 chown 用户名 /文件 chgrp 用户名/文件 umask -S [[email protected] home]# umask -S u=rwx,g=rx,o=rx查看权限缺省值,新建的文件都没有x权限,因

XenApp_XenDesktop_7.6实战篇之五:组织单元、用户(组)、权限规划及配置

对于本章节而言,对于组织单元.用户和权限的规划在企业环境当中是非常重要的,也是真正体现项目人员是否真的足够职业,但是此类规划往往会被大家所忽略.希望大家在平时的实验测试中就要抱着项目实战的心态,这样对以后的实战会有很大的帮助,也会养成良好的习惯. 1.  组织单元.用户和用户组规划 1.1 本次实验使用的OU规划如下 1.2 本次实验使用的用户用户组如下 2.  OU.Users和Groups的创建和配置 2.1  打开Active Directory 用户和计算机,按照以上的规划完成OU.Us

linux笔记:权限管理-sudo

sudo可以将只有root可以使用的命令授权给普通用户: 授权的过程实际是修改配置文件: 授权示例: 普通用户使用sudo权限的示例:

因修改/etc/sudoers权限导致sudo和su不能使用的解决方法

因为修改了/etc/sudoers以及相关权限,导致sudo无法使用,恰好Ubuntu的root密码没有设置,每次执行 su - 时.输入密码,提示:认证错误 . 解决方法: 1.重启ubuntu,启动时按Esc或Shift键,可以看到引导选项: 2.在引导选项中选择Recovery模式的那一项来引导: 3.进入Recovery Menu页面,选择root,也就是进入试用root用户进行系统恢复,在这里可以执行超级用户的权限的操作,回车后可以看到熟悉的 [email protected] ~#