1. 程式人生 > >2017-11-13Linux基礎知識(11)用戶、組和權限管理

2017-11-13Linux基礎知識(11)用戶、組和權限管理

linux 基礎


在之前的章節中講述了bash的基礎特性以及IO重定向以和管道等其它的功能程序,之後介紹了一些其相關的命令,例如:tr和tee命令等,之後我們介紹了Here document,在這一章中,我們開始講述用戶、組及權限管理中的一部分,我們首先來說用戶和組。

一、用戶

Linux操作系統是一款多用戶Multi-Users及多任務Multi-tasks的操作系統,也就是說,可以多個用戶同時登錄該系統執行各自的任務,彼此用戶與用戶之間互不幹擾,這也是當時為了解決主機資源所提供的一種有效手段,那時候主機都在中心當中,價格也比較昂貴,普通人根本就無法做到像現在一樣人手一臺,所以為了解決這個問題,就有多用戶和多任務這個概念,從Unix主機開始一直到現在各個操作系統,服務器都支持該功能。

那麽什麽是用戶?在Linux中沒有什麽用戶的概念,而是對系統來說,用戶是一種隔離資源的手段,比如說張三新建某一個文件讓李四刪除了,這種事情是絕對不能允許的,反之也是依然如此,除了root這個超級用戶。
每個使用者登錄系統時都有用戶標識和密碼,用戶標識就是指定該用戶的唯一性,而密碼就是驗證該用戶是否為這個用戶,驗證成功之後,就開始進行授權,分配其相應的資源和權限,最後系統監督該權限,權限的執行結果到底是否符合該條例,那麽以上我們就稱之為3A認證。

   Authentication  認證
   Authorization   授權  分配相應的資源
   Audition	    審計  監督權限,權限的支持結果到底是否符合條例

二、組

組其實就是用戶組,也是用戶的容器,一個組裏面可以有多個用戶,同時一個用戶也可以屬多個組,其主要作用就是對用戶的資源進行一個整合,對目錄或文件能夠有統一的權限。

三、用戶類別

用戶類別其實通常分為兩個大類,一個是管理員用戶,另一個是普通的用戶,管理毋庸置疑,權限最大,而普通用戶雖然權限沒有那麽大,卻也分成了兩個小類,一個是系統用戶,另一個是登錄用戶,前者不允許登錄,通常是給服務程序設定的用戶,程序啟動時通過該用戶進行啟動,所以不允許登錄,因為登錄的話很有可能該程序就會一系列安全性問題,後者我們可通過手工創建來進行終端登錄。

3.1 用戶標識

對於用戶來說,用戶標識是它們檢測該用戶是否唯一,就像居民身份證一樣,你叫張三,他也叫張三,名字都一樣,模樣也一樣,不過系統不會讓你創建一個相同類型的用戶,那什麽不一樣?就是身份證號碼和指紋不一樣,所以說,用戶標識我們稱之為UserID簡稱為UID,它是由16位二進制數字組成一共65536個,從0開始,到65535結束,0屬於管理員,剩下的1-65535都屬於普通用戶,那麽剛才我們說過,普通用戶也分為兩類,一個是系統用戶,另一個則是登錄用戶,在系統用戶中,CentOS 6分配的ID好從1-499,登錄用戶則從500一直到60000結束,而CentOS 7不一樣,系統用戶從1開始到999,普通用戶從1000開始到60000結束。

每一個用戶都有一個UID與之相對應,當用戶輸入用戶名和密碼之後,就會解析成相對應的用戶ID號,解析完成之後,將其結果反饋出來。也就是登錄成功的結果,它們其實根據名稱解析庫來進行,其路徑在/etc/passwd目錄下。

四、組類別

組類別,也成為組標識。稱之為GroupID,簡稱GID,和用戶類別一樣,也分成兩個大類,只不過組類別有很多種,我們現在來慢慢介紹組類別1:組類別1與用戶類別幾乎相同,分為管理員組和普通用戶組,管理員的ID號還是0,普通用戶組也是從1開始到65535。也分為兩類,一類是系統用戶組,在CentOS 6中,分配的組ID號為1-499,從500-60000分配給了登錄用戶組,而在CentOS 7中,系統用戶組的ID號為1-999,而登錄用戶組的為1000-60000。
每一個組名都會有一個GID與之相對應,將組名(groupname)解析成為組ID(GID),它們這也是根據剛才所說的名稱解析庫解析才行,而組的解析庫的路徑為:/etc/group。
以上就是組類別1,我們接下來說一下組類別2,組類別2分為兩個組,一個是用戶的基本組,另一個是用戶的附加組。用戶的基本組就是在創建用戶的同時把組創建出來,我們也稱為用戶的初始組,一個組可以沒有用戶,但是用戶不能沒有這個組,而用戶的附加組就是,可以事先存在,將多個用戶附加到這個組裏面,同時我們可以用戶的話,可以將基本組指定到這個附加組裏面去。
最後一個就是組類別3,類別3共分為兩類,一類是私有組,一類是公共組,在私有組中,組名同用戶是一樣的,而且只能包含一個用戶,而公共組是組內包含了多個用戶。

五、認證信息

當我們登錄系統時,必然要輸入用戶名和密碼,如果密碼錯誤會給出提示請輸入一遍或者退出,如果輸入正確的話會給你提示成功之後進入系統,而密碼就是你可以理解為輸入用戶的認證信息,它是通過比對事先存儲信息,與登錄時提供的信息要完全一致。而密碼的存儲的路徑為/etc/passwd,不過這是在CentOS 5中這樣存儲,在CentOS 6和7中將/etc/passwd中的密碼映射到了/etc/shadow中。
雖然密碼是認證信息的一種,提供了一種有效安全的手段,不過太陽底下沒有隱私,長時間不換密碼很容易會遭到破解,所以我們要了解密碼的使用策略,策略如下:

   1、使用隨機密碼;
   2、最短長度不要低於8位數字;
   3、應該使用大寫字母、小寫字母、數字標點符號四類字符中至少三類;
   4、定期更換;

5.1 加密算法

在CentOS 7 中我們打開/etc/shadow文件,以:為分隔符,我們可以看到第二個都一段很長的字符,並不規則,那麽這些就是將密碼通過某個算法進行加密形成之後的結果,我們稱之為加密算法,加密算法的主要作用就是隱藏原始的密碼字符,防止被人竊取及篡改。那麽加密算法的方式有以下幾類,分別為:

   對稱加密:加密和解密使用同一個密碼;
   非對稱加密:加密和解密使用的是一對兒密鑰;
	產生兩個密鑰對兒:
		公鑰:public key
		私鑰:private key
   單向加密:只能加密,不能解密;提取數據特征碼;
	定長輸出:
	雪崩效應:原始數據的微笑改變都會引起後期數據結果的巨大變化;
	
	算法:
		md5:message digest, 128bits
		sha:secure hash algoithm, 160bits
		sha224
		sha256
		sha384
		sha512
	
	在計算之時加salt,添加的隨機數;

六、/etc/passwd和/etc/shadow文件

我們首先來說一下/etc/passwd,它是用戶的信息庫,也是用戶名和UID相互解析的一個重要文件,各個功能使用冒號分隔,其格式信息如下:

   name:password:UID:GID:GEDS:directory:shell

以上就是該/etc/passwd文件的格式,具體的釋義如下:

   name:用戶名
   password:可以是加密的密碼,也可以是占位符x;
   UID:用戶所屬的屬主的ID號;
   GID:用戶所屬的主組的ID號;
   GECOS:註釋信息;
   directory:用戶的家目錄;
   shell:用戶的默認shell,登錄時默認shell程序;

還有一個文件為/etc/shadow文件,我們稱之為影子文件,任何普通用戶都沒有權限進行查看該文件,因為它保存這用戶的密碼和規定的日期,各個功能也是使用冒號來進行分隔,其格式信息如下:

   用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告時段:過期時段:保留字段

以上也是見名知義,用戶名和加密的密碼我們都了解,但最近一次的修改密碼的時間是從你1970年到現在所經過的天數,當然這也是最初的密碼沒有更改,
最短使用期限是上次改的密碼最近中間經過的天數。
最長使用期限也是上次改密碼多經過的天數。
警告時間是最長使用期限倒回去之前所經過的天數。
非活動期限為密碼已經過了最大天數之後還能保留幾天,如果還不改的話,就被禁用(過期時段)。
那麽修改的密碼就是最長時間減去最短使用期間的天數,在密碼快到期之前進行警告,如果過了最長時間,會給你寬限期,密碼處於非活動時間,不過可以更改,如果過了寬限期,或者不改密碼的話,就會禁用。
那麽警告和非活動的差別分別是:警告就是提示你,但是能用;而非活動就是必須改密碼,這期間該用戶不能進行登錄。

七、/etc/group文件

/etc/group文件是用戶組的信息庫,用來解析該用戶屬於那個組,也是用冒號分隔,示例如下:

   group_name:password:GID:user_list

以上前三個也是可以見名知義的,但user_list其實也是很簡單,它是以此組為附加組的用戶的用戶列表。
好的,那就是以上介紹的用戶和組的概念以及它的相關文件,在之後的章節中我們來講述用戶的組的相關命令,例如:

   useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su

本文出自 “天蠍座” 博客,轉載請與作者聯系!

2017-11-13Linux基礎知識(11)用戶、組和權限管理