用戶管理生產環境實踐案例

關于用戶管理的命令回顧:
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.www58058.com/52798

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

相關推薦

  • 文件系統管理和掛載

    磁盤結構 設備類型:     塊設備:block,存取單位“塊”,例如,磁盤     字符設備:char,存取單位“字符”,鍵盤 設備文件:關聯至一個設備驅動程序,進而能夠跟之對應硬件設備進行通信 設備號碼:     主設備號:major …

    Linux干貨 2016-08-29
  • linux基本命令的使用

      1>    查看當前終端名:tty 或who am i       查看當前所有登錄的終端信息:who       查看當前所有登錄的終端的詳細信息 w 2> 編輯器    …

    2017-07-15
  • JVM性能調優監控工具jps、jstack、jmap、jhat、jstat、hprof使用詳解

    摘要: JDK本身提供了很多方便的JVM性能調優監控工具,除了集成式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起拋磚引玉之用,讓大家能開始對JVM性能調優的常用工具有所了解。     現實企業級Java開發中,有時候我們會碰到下面這些問題: Out…

    2017-08-17
  • linux基礎學習之AWK

    內容: 1、awk輸出(print、printf) 2、awk變量(內建變量和定義變量) 3、awk數組 4、awk重定向輸出 5、awk操作符 6、awk常見模式類型 7、awk控制及循環語句 8、awk內置函數 awk:(其名稱得自于它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母)…

    Linux干貨 2016-09-22
  • IP地址之IPv4

    一、概述   IP地址有IPv4和IPv6兩個版本,目前我們通常所說的IP地址是指IPv4。   IP地址由32位的二進制數組合而成,為了方便人類記憶,將二進制轉換成4個十進制的數值。   在這32位數據中分為網絡號與主機號兩個部分。 二、IP的分級   IP網段分為五個等級,其定義如下:   A類:規定前面…

    Linux干貨 2016-02-14
  • PHP的類自動加載機制

    在PHP開發過程中,如果希望從外部引入一個class,通常會使用include和require方法,去把定義這個class的文件包含進來。這個在小規模開發的時候,沒什么大問題。但在大型的開發項目中,這么做會產生大量的require或者include方法調用,這樣不因降低效率,而且使得代碼難以維護,況且require_once的代價很大。 在PHP5之前,各個…

    Linux干貨 2015-04-10
欧美性久久久久