Linux運維--企業sudo權限規劃詳解 (實測一個堆命令搞定)

 簡述問題:

        隨着公司的服務器愈來愈多,人員流動性也開始與日俱增,以往管理服務器的陳舊思想應當摒棄,公司須要有
更好更完善的權限體系,通過多輪溝通和協商,公司一致決定從新整理規劃權限體系,主管明確指出權限存在的問
題,並須要解決以往的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

 

正常模板參考連接:html

https://www.cnblogs.com/superlinux/p/1324d19f9d54eaac83247081c8362ee6.htmllinux

相關文章
相關標籤/搜索