天天看點

Linux使用者和權限——使用者和使用者組管理Linux使用者和權限——使用者和使用者組管理

Linux使用者和權限——使用者和使用者組管理

摘要:本文主要介紹了Linux系統中的使用者和使用者組管理。

使用者和使用者組

含義

在使用Linux系統時,雖然輸入的是自己的使用者名和密碼,但其實Linux并不認識使用者名稱,它隻認識使用者名對應的ID号(也就是一串數字)。Linux系統将所有使用者的名稱與ID的對應關系都存儲在/etc/passwd檔案中。說白了,使用者名并無實際作用,僅是為了友善使用者的記憶而已。

Linux系統中,每個使用者的ID細分為2種,分别是使用者ID(UserID,簡稱UID)群組ID(GroupID,簡稱GID),這與檔案有擁有者和擁有群組兩種屬性相對應。

每個檔案都有自己的擁有者ID和群組ID,當顯示檔案屬性時,系統會根據/etc/passwd和/etc/group檔案中的内容,分别找到UID和GID對應的使用者名和群組名,然後顯示出來。

忘記密碼怎麼辦

對于普通賬戶的密碼遺失,可以通過root賬戶解決,它會重新給你配置好指定賬戶的密碼,而不需知道你原有的密碼(利用root的身份使用passwd指令即可)。

如果root賬号的密碼遺失,則需要重新啟動進入單使用者模式,系統會提供root權限的bash接口,此時可以用passwd指令修改賬戶密碼;也可以通過挂載根目錄,修改/etc/shadow,将賬戶的root密碼清空的方法,此方式可使用root無法密碼即可登陸,建議登陸後使用passwd指令配置root密碼。

儲存使用者資料的/etc/passwd檔案

Linux系統中的/etc/passwd檔案,是系統使用者配置檔案,存儲了系統中所有使用者的基本資訊,并且所有使用者都可以對此檔案執行讀操作。

首先我們來打開這個檔案,看看到底包含哪些内容,執行指令如下:

1 [[email protected] ~]# cat /etc/passwd
2 root:x:0:0:root:/root:/bin/bash
3 bin:x:1:1:bin:/bin:/sbin/nologin
4 ...
5 [[email protected] ~]#      

可以看到,/etc/passwd檔案中的内容非正常律,每行記錄對應一個使用者。

這些使用者中的絕大多數是系統或服務正常運作所必需的使用者,這種使用者通常稱為系統使用者或僞使用者。系統使用者無法用來登入系統,但也不能删除,因為一旦删除,依賴這些使用者運作的服務或程式就不能正常執行,會導緻系統問題。

不僅如此,每行使用者資訊都以“:”作為分隔符,劃分為七個字段:

1 使用者名:密碼:UID(使用者ID):GID(組ID):描述性資訊:主目錄:預設Shell      

使用者名

使用者名,就是一串代表使用者身份的字元串,使用者名僅是為了友善使用者記憶,Linux系統是通過UID來識别使用者身份,配置設定使用者權限的。/etc/passwd檔案中就定義了使用者名和UID之間的對應關系。

密碼

“x”表示此使用者設有密碼,但不是真正的密碼,真正的密碼儲存在/etc/shadow檔案中,此檔案隻有root使用者可以浏覽和操作,這樣就最大限度地保證了密碼的安全。

需要注意的是,雖然“x”并不表示真正的密碼,但也不能删除,如果删除了“x”,那麼系統會認為這個使用者沒有密碼,進而導緻隻輸入使用者名而不用輸入密碼就可以登陸(隻能在使用無密碼登入,遠端是不可以的),除非特殊情況(如破解使用者密碼),這當然是不可行的。

UID

全稱“User ID”,也就是使用者ID。每個使用者都有唯一的一個UID,Linux系統通過UID來識别不同的使用者。

實際上,UID就是一個0~65535之間的數,不同範圍的數字表示不同的使用者身份:

1)0:超級使用者。UID為0就代表這個賬号是管理者賬号。在Linux中,隻需把其他使用者的UID修改為0就可以了,這一點和Windows是不同的,不過不建議建立多個管理者賬号。

2)1~499:系統使用者(僞使用者)。也就是說,此範圍的UID保留給系統使用。其中,1~99用于系統自行建立的賬号,100~499配置設定給有系統賬号需求的使用者。其實,除了0之外,其他的UID并無不同,這裡隻是預設500以下的數字給系統作為保留賬戶,隻是一個公認的習慣而已。

3)500~65535:普通使用者。通常這些UID已經足夠使用者使用了。但不夠用也沒關系,2.6.x核心之後的Linux系統已經可以支援232個UID了。

GID

全稱“Group ID”,也就是組ID,表示使用者初始組的組ID号。這裡需要解釋一下初始組和附加組的概念。

初始組,指使用者登陸時就擁有這個使用者組的相關權限。每個使用者的初始組隻能有一個,通常就是将和此使用者的使用者名相同的組名作為該使用者的初始組。比如說,我們手工添加使用者sam,在建立使用者sam的同時,就會建立sam組作為sam使用者的初始組。

附加組,指使用者可以加入多個其他的使用者組,并擁有這些組的權限。每個使用者隻能有一個初始組,除初始組外,使用者再加入其他的使用者組,這些使用者組就是這個使用者的附加組。附加組可以有多個,而且使用者可以有這些附加組的權限。

舉例來說,剛剛的sam使用者除屬于初始組sam外,我又把它加入了users組,那麼sam使用者同時屬于sam組和users組,其中sam是初始組,users是附加組。

當然,初始組和附加組的身份是可以修改的,但是我們在工作中不修改初始組,隻修改附加組,因為修改了初始組有時會讓管理者邏輯混亂。

需要注意的是,在/etc/passwd檔案的第四個字段中看到的ID是這個使用者的初始組。

描述性資訊

這個字段并沒有什麼重要的用途,隻是用來解釋這個使用者的意義而已。

主目錄

也就是使用者登入後有操作權限的通路目錄,通常稱為使用者的主目錄。

例如,root超級管理者賬戶的主目錄為/root,普通使用者将在/home/目錄下建立和使用者名相同的目錄作為主目錄,如sam使用者的主目錄就是/home/sam/目錄。

預設的Shell

Shell就是Linux的指令解釋器,是使用者和Linux核心之間溝通的橋梁。

我們知道,使用者登陸Linux系統後,通過使用Linux指令完成操作任務,但系統隻認識類似0101的機器語言,這裡就需要使用指令解釋器。也就是說,Shell指令解釋器的功能就是将使用者輸入的指令轉換成系統可以識别的機器語言。

通常情況下,Linux系統預設使用的指令解釋器是bash(/bin/bash),當然還有其他指令解釋器,例如sh、csh等。

在/etc/passwd檔案中,大家可以把這個字段了解為使用者登入之後所擁有的權限。如果這裡使用的是bash指令解釋器,就代表這個使用者擁有權限範圍内的所有權限。

sam使用者使用的是bash指令解釋器,那麼這個使用者就可以使用普通使用者的所有權限,例如:

1 [[email protected] ~]# vim /etc/passwd
2 sam:x:502:502::/home/sam:/bin/bash      

如果sam使用者的Shell指令解釋器是/sbin/nologin,那麼,這個使用者就不能登入了,因為/sbin/nologin就是禁止登入的Shell,例如:

1 [[email protected] ~]# vim /etc/passwd
2 sam:x:502:502::/home/sam:/sbin/nologin      

儲存使用者密碼的/etc/shadow檔案

/etc/shadow檔案,用于存儲Linux系統中使用者的密碼資訊,又稱為“影子檔案”。

前面介紹了/etc/passwd檔案,由于該檔案允許所有使用者讀取,易導緻使用者密碼洩露,是以Linux系統将使用者的密碼資訊從/etc/passwd檔案中分離出來,并單獨放到了此檔案中。

/etc/shadow檔案隻有root使用者擁有讀權限,其他使用者沒有任何權限,這樣就保證了使用者密碼的安全性。注意,如果這個檔案的權限發生了改變,則需要注意是否是惡意攻擊。

介紹此檔案之前,先打開看看,執行如下指令:

1 [[email protected] ~]# cat /etc/shadow
2 root:$6$yZkTv2VHvJfZft5s$XaKB9Jp6cRNEsdFKsYvQlmwmckbhvEDcFN/dDY1MpHLsx2w99Xn5lYvoQbkh6GU/DTx8ewq0xns1CQRbOXU1j/::0:99999:7:::
3 bin:*:16659:0:99999:7:::
4 ...
5 [[email protected] ~]#       

同/etc/passwd檔案一樣,檔案中每行代表一個使用者,同樣使用“:”作為分隔符,不同之處在于,每行使用者資訊被劃分為九個字段。每個字段的含義如下:

1 使用者名:加密密碼:最後一次修改時間:最小修改時間間隔:密碼有效期:密碼需要變更前的警告天數:密碼過期後的寬限時間:賬号失效時間:保留字段      

使用者名

同/etc/passwd檔案的使用者名有相同的含義。

加密密碼

這裡儲存的是真正加密的密碼。目前Linux的密碼采用的是SHA512散列加密算法,原來采用的是MD5或DES加密算法。SHA512散列加密算法的加密等級更高,也更加安全。

注意,這串密碼産生的亂碼不能手工修改,如果手工修改,系統将無法識别密碼,導緻密碼失效。

所有僞使用者的密碼都是“!!”或“*”,代表沒有密碼是不能登入的。當然,新建立的使用者如果不設定密碼,那麼它的密碼項也是“!!”,代表這個使用者沒有密碼,不能登入。

最後一次修改時間

此字段表示最後一次修改密碼的時間。Linux計算日期的時間是以1970年1月1日作為1不斷累加得到的時間。

最小修改時間間隔

最小修改間隔時間,也就是說,該字段規定了從第三個字段(最後一次修改密碼的日期)起,多長時間之内不能修改密碼。如果是0,則密碼可以随時修改,如果是10,則代表密碼修改後10天之内不能再次修改密碼。

此字段是為了針對某些人頻繁更改賬戶密碼而設計的。

密碼有效期

經常變更密碼是個好習慣,為了強制要求使用者變更密碼,這個字段可以指定距離第三個字段(最後一次更改密碼)多長時間内需要再次變更密碼,否則該賬戶密碼進行過期階段。

該字段的預設值為99999,也就是273年,可認為是永久生效。如果改為90,則表示密碼被修改90天之後必須再次修改,否則該使用者即将過期。管理伺服器時,通過這個字段強制使用者定期修改密碼。

密碼需要變更前的警告天數

與第5字段相比較,當賬戶密碼有效期快到時,系統會發出警告資訊給此賬戶,提醒使用者“再過n天你的密碼就要過期了,請盡快重新設定你的密碼!”。

該字段的預設值是7,也就是說,距離密碼有效期的第7天開始,每次登入系統都會向該賬戶發出“修改密碼”的警告資訊。

密碼過期後的寬限天數

也稱為“密碼失效日”,簡單了解就是,在密碼過期後,使用者如果還是沒有修改密碼,則在此字段規定的寬限天數内,使用者還是可以登入系統的,如果過了寬限天數,系統将不再讓此賬戶登陸,也不會提示賬戶過期,是完全禁用。

比如說,此字段規定的寬限天數是10,則代表密碼過期10天後失效;如果是0,則代表密碼過期後立即失效;如果是-1,則代表密碼永遠不會失效。

賬号失效時間

同第3個字段一樣,使用自1970年1月1日以來的總天數作為賬戶的失效時間。該字段表示,賬号在此字段規定的時間之外,不論你的密碼是否過期,都将無法使用。

該字段通常被使用在具有收費服務的系統中。

保留

這個字段目前沒有使用,等待新功能的加入。

儲存使用者組資料的/ect/group檔案

/ect/group檔案是使用者組配置檔案,即使用者組的所有資訊都存放在此檔案中。此檔案是記錄組ID(GID)群組名相對應的檔案。

/etc/group檔案的内容可以通過Vim看到:

1 [[email protected] ~]# cat /etc/group
2 root:x:0:
3 bin:x:1:
4 ...
5 [[email protected] ~]#       

可以看到,此檔案中每一行各代表一個使用者組。

各使用者組中,還是以“:”作為字段之間的分隔符,分為四個字段,每個字段對應的含義為:

1 組名:密碼:GID(組ID):該使用者組中的使用者清單      

組名

也就是是使用者組的名稱,有字母或數字構成。同/etc/passwd中的使用者名一樣,組名也不能重複。

組密碼

和/etc/passwd檔案一樣,這裡的“x”僅僅是密碼辨別,真正加密後的組密碼預設儲存在/etc/gshadow檔案中。

使用者設定密碼是為了驗證使用者的身份,使用者組密碼主要是用來指定組管理者的,由于系統中的賬号可能會非常多,root使用者可能沒有時間進行使用者的組調整,這時可以給使用者組指定組管理者,如果有使用者需要加入或退出某使用者組,可以由該組的組管理者替代root進行管理。但是這項功能目前很少使用,也很少設定組密碼。如果需要賦予某使用者調整某個使用者組的權限,則可以使用sudo指令代替。

GID

就是群組的ID号,Linux系統就是通過GID來區分使用者組的,同使用者名一樣,組名也隻是為了便于管理者記憶。

這裡的組GID與/etc/passwd檔案中第四個字段的GID相對應,實際上,/etc/passwd檔案中使用GID對應的群組名,就是通過此檔案對應得到的。

組中的使用者

此字段列出每個群組包含的所有使用者。需要注意的是,如果該使用者組是這個使用者的初始組,則該使用者不會寫入這個字段,可以這麼了解,該字段顯示的使用者都是這個使用者組的附加使用者。

一般情況下,使用者的初始組就是在建立使用者的同時建立的和使用者名相同的組。

儲存使用者組密碼的/etc/gshadow檔案

前面講過,/etc/passwd檔案存儲使用者基本資訊,同時考慮到賬戶的安全性,将使用者的密碼資訊存放另一個檔案/etc/shadow中。本節要将的/etc/gshadow檔案也是如此,組使用者資訊存儲在/etc/group檔案中,而将組使用者的密碼資訊存儲在/etc/gshadow檔案中。

首先,我們借助Vim指令檢視一下此檔案中的内容:

1 [[email protected] ~]# cat /etc/gshadow
2 root:::
3 bin:::
4 ...
5 [[email protected] ~]#      

檔案中,每行代表一個組使用者的密碼資訊,各行資訊用“:”作為分隔符分為四個字段,每個字段的含義如下:

1 組名:加密密碼:組管理者:組附加使用者清單      

組名

同/etc/group檔案中的組名相對應。

組密碼

對于大多數使用者來說,通常不設定組密碼,是以該字段常為空,但有時為“!”,指的是該群組沒有組密碼,也沒有群組管理者。

組管理者

從系統管理者的角度來說,該檔案最大的功能就是建立群組管理者。

考慮到Linux系統中賬号太多,而超級管理者root可能比較忙碌,是以當有使用者想要加入某群組時,root或許不能及時作出回應。這種情況下,如果有群組管理者,那麼他就能将使用者加入自己管理的群組中,也就免去麻煩root了。

不過,由于目前有sudo之類的工具,是以群組管理者的這個功能已經很少使用了。

組中的附加使用者

該字段顯示這個使用者組中有哪些附加使用者,和/etc/group檔案中附加組顯示内容相同。

轉載于:https://www.cnblogs.com/shamao/p/11172732.html

繼續閱讀