歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

安全管理Linux系統中的用戶和組

  Linux系統中,用戶是活動的主體,直接享有對系統文件和資源進行操作和控制的權利,所以如何對系統中的用戶進行好的管理,是系統管理員保證系統安全必須認真完成的第一步工作。    在Linux操作系統中,每一個文件和程序都歸屬於一個特定的“用戶”。每一個用戶都由一個惟一的身份來標識,這個標識叫做用戶ID(UserID,UID)。並且,系統中的每一個用戶也至少需要屬於一個“用戶分組”,也就是由系統管理員所建立的用戶小組,這個小組中包含著許多系統用戶。與用戶一樣,用戶分組也是由一個惟一的身份來標識的,該標識叫做用戶分組ID(GroupID,GID)。用戶可以歸屬於多個用戶分組。對某個文件或程序的訪問是以它的UID和GID為基礎的。一個執行中的程序繼承了調用它的用戶的權利和訪問權限。    用戶文件和組文件    1. 用戶賬戶文件——/etc/passwd    /etc/passwd文件是Unix安全的關鍵文件之一。這個文件的每一行保存一個用戶的資料,而用戶資料的每一個數據項采用冒號“: ”分隔。如下所示:    LOGNAME: PASSWord: UID: GID: USERINFO: HOME: SHELL    每行的頭兩項是登錄名和加密後的口令,後面的兩個數是UID和GID,接著的一項是系統管理員想寫入的有關該用戶的任何信息。最後兩項是兩個路徑名: 一個是分配給用戶的HOME目錄; 第二個是用戶登錄後將執行的shell(若為空格則缺省為/bin/sh)。所有用戶口令的存放都是加密的,通常采用的是不可逆的加密算法,比如DES。任何擁有0值UID的用戶都具有根用戶(系統管理員)訪問權限,通常,UID是這個特殊值的用戶的登錄名是“root”。允許任何其他用戶或者用戶名擁有0值的UID都可能危及系統安全。    2. 用戶影子文件——shadow    由於/etc/passwd文件是全局可讀的,而且口令加密的算法是公開的,如果有惡意用戶取得了/etc/passwd文件,便可以窮舉所有可能的明文通過相同的算法計算出密文進行比較,直到相同,從而破解口令。因此,針對這種安全問題,Linux/Unix廣泛采用了“shadow(影子)文件”機制,將加密的口令轉移到/etc/shadow文件裡,該文件只為root超級用戶可讀,而同時/etc/passwd文件的密文域顯示為一個x,從而最大限度地減少了密文洩露的機會。/etc/shadow文件的每行是8個冒號分割的9個域,格式如下。    username: passwd: lastchg: min: max: warn: inactive: eXPire: flag    其中,各個域表示如下含義: 用戶登錄名、加密的用戶口令、從1970年1月1日起到上次修改口令所經過的天數、兩次修改口令之間至少經過的天數、口令還會有效的最大天數(如果是99999則表示永不過期)、口令失效前多少天內系統向用戶發出警告、禁止登陸前用戶名還有效的天數、用戶被禁止登陸的時間、保留字段(暫未使用)。    3. 用戶組賬號文件——/etc/group    /etc/passwd文件中包含著每個用戶缺省的分組ID(GID)。在/etc/group文件中,這個GID被映射到該用戶分組的名稱以及同一分組中的其他成員。    /etc/group文件含有關於小組的信息,/etc/passwd中的每個GID在文件中應當有相應的入口項,入口項中列出了小組名和小組中的用戶,這樣可方便地了解每個小組的用戶,否則必須根據GID在/etc/passwd文件中從頭至尾地尋找同組用戶,這提供了一個比較快捷的尋找途徑。/etc/group文件對小組的許可權限的控制並不是必要的,因為系統用來自於/etc/passwd文件的UID、GID來決定文件存取權限,即使/etc/group文件不存在於系統中,具有相同的GID用戶也可以小組的存取許可權限共享文件。小組就像登錄用戶一樣可以有口令。如果/etc/group文件入口項的第二個域為非空(通常用x表示),則將被認為是加密口令。    /etc/group文件中每一行的內容如下所示: 用戶分組名、加過密的用戶分組口令、用戶分組ID號(GID)、以逗號分隔的成員用戶清單。    4. 組賬號文件——/etc/gshadow    如同用戶賬號文件的作用一樣,組賬號文件也是為了加強組口令的安全性,防止黑客對其實行的暴力攻擊,而采用的一種將組口令與組的其他信息相分離的安全機制。其格式如下所示: 用戶組名、加密的組口令、組成員列表。    驗證用戶和組文件    1. 使用pwck和grpck命令驗證用戶和組文件    上面所介紹的用戶以及組賬號文件都非常重要,對於系統驗證用戶和組具有重要意義。一旦上述文件發生錯誤,則會對系統造成影響。正是基於這個原因,Linux提供了pwck和grpck這兩個命令分別驗證用戶以及組文件,以保證這兩個文件的一致性和正確性。下面將分別加以介紹。    pwck用來驗證用戶賬號文件(/etc/passwd)和影子文件(/etc/shadow)的一致性,它驗證文件中的每一個數據項中每個域的格式以及數據的正確性。如果發現錯誤,該命令將會提示用戶對出現錯誤的數據項進行刪除。    該命令主要驗證每個數據項是否具有: 正確的域數目、惟一的用戶名、合法的用戶和組標識、合法的主要組群、合法的主目錄、合法的登錄shell。如果檢查發現域數目與用戶名錯誤,則該錯誤是致命的,則需要用戶刪除整個數據項。其他的錯誤均為非致命的,將會需要用戶進行修改,而不一定要刪除整個數據項。下面的例子說明如何使用該命令:    //cat /etc/passwd    //顯示系統中原來的用戶賬號文件    root:x:0:0:root:/root:/bin/bash    bin:x:1:1:bin:/bin:/sbin/nologin    daemon:x:2:2:daemon:/sbin:/sbin/nologin    adm:x:3:4:adm:/var/adm:/sbin/nologin    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin    sync:x:5:0:sync:/sbin:/bin/sync    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown    halt:x:7:0:halt:/sbin:/sbin/halt    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin    ……    #vi /etc/passwd    //編輯該賬號文件,並加入一項不存在的數據項    //“super:x:200:200:superman:/home/super:/bin/bash”    #pwck /etc/passwd //執行驗證工作    //驗證出系統並不存在該super用戶    user adm: Directory /var/adm does not exist    user news: directory /etc/news does not exist    user uUCp: directory /var/spool/uucp does not exist    user gopher: directory /var/gopher does not exist    user pcap: directory /var/arpwatch does not exist    user super: no group 200    user super: directory /home/super does not exist    pwck: no changes    //再次編輯該賬號文件,加入不正確的數據項“super:x:200:200:superman:/home/super:”    //執行驗證工作    #pwck /etc/passwd    user adm: directory /var/adm does not exist    user news: directory /etc/news does not exist    user uucp: directory /var/spool/uucp does not exist    user gopher: directory /var/gopher does not exist    user pcap: directory /var/arpwatch does not exist    user super: no group 200    user super: directory /home/super does not exist    invalid password file entry    delete line `'? y    pwck: the files have been updated    上述執行的兩次驗證操作結果不一樣,第一次並沒有要求用戶刪除該不正確的數據項,原因是數據項中域的數目沒有發生錯誤,而第二次域的數目少了一個(本來應該有七項,只有六項),所以是致命錯誤,系統提示用戶進行刪除,用戶確定刪除後該文件驗證才通過。同樣地,也可以用該命令來驗證/etc/shadow文件的一致性。    與pwck命令相類似,grpck命令是用來驗證組賬號文件(/etc/group)和影子文件(/etc/gshadow)的一致性和正確性的。該命令驗證文件中的每一個數據項中每個域的格式以及數據的正確性。如果發現錯誤,該命令將會提示用戶對出現錯誤的數據項進行刪除。    該命令主要驗證每個數據項是否具有: 正確的域數目、惟一的組群標識、合法的成員和管理員列表。    如果檢查發現域數目與組名錯誤,則該錯誤是致命的,則需要用戶刪除整個數據項。其他的錯誤均為非致命的,將會需要用戶進行修改,而不一定要刪除整個數據項。    下面的例子說明如何使用該命令:    //cat /etc/group //顯示系統中原來的用戶賬號文件    root:x:0:root,patterson    bin:x:1:root,bin,daemon    daemon:x:2:root,bin,daemon    sys:x:3:root,bin,adm    adm:x:4:root,adm,daemon    tty:x:5:    disk:x:6:root    lp:x:7:daemon,lp    kmem:x:9:    supersun:x:501:liyangsuper    liyangsuper:x:502:    patterson1:x:504:    programmer:x:2500:    jerry:x:503:    manager:x:2500:    #vi /etc/group    //編輯該賬號文件,加入不正確的數據項“test:x”    //執行驗證工作    #grpck /etc/group    invalid group file entry    delete line `tes




Copyright © Linux教程網 All Rights Reserved