安全管理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)的一致性,它驗證文件中的每一個數據項中每個域的格式以及數據的正確性。如果發現錯誤,該命令將會提示用戶對出現錯誤的數據項進行刪除。
該命令主要驗證每個數據項是否具有: 正確的域數目、惟一的用戶名<
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解