[RHCE] User And Group

USER

Linux是一個多工的系統,可以讓多人同時登入系統進行作業。在這樣的情況下,使用者以及群組的管理就變的相當重要。Linux系統中,使用者帳號主要分為:系統管理員帳號、系統帳號、以及可登入帳號。每個帳號會有一個UID,UID主要功能就是辨別帳號是屬於哪種帳號。

系統管理員帳號是系統上權限最大的帳號,可以執行任何命令,UID為0。系統帳號是一些服務為了執行上的方便所產生的帳號,UID為1~499。可登入帳號就是一般使用者登入系統所用的帳號UID為500~65535。

跟使用者最有關的兩個檔案就是/etc/passwd以及/etc/shadow,首先先介紹/etc/passwd。
1326905729-1088798083.jpg-RHCE使用者與群組

/etc/passwd中每一行代表一個帳號,每個帳號以:為區分總共7個欄位設定。
1326905775-30609041.jpg-RHCE使用者與群組

開啟/etc/shadow後,可以看到類似下圖的內容。
1326905820-1336136875.jpg-RHCE使用者與群組

以:為區分,總共9個欄位,括號內為對應 #change 指令的參數,以root帳號為例子。
(因為圖片中root帳號的設定過長,所以1.2行實為一行,皆為root的設定。)
1326905857-1592094957.jpg-RHCE使用者與群組

#change 可以用來修改使用者密碼的屬性。例如 #change -d 0 Peter 可以在使用者Peter下次登入時,強迫更改密碼。-l: 可列出使用者密碼屬性。

GROUP

使用者在建立的時候,系統會自動位使用者建立一個同名的群組,這個群組稱為初始群組(Initial Group)。而在預設的情況下,這個初始群組也是使用者的主要群組(Primary Group)。或者系統管理員也可以在使用者建立時另外指定初始群組給使用者。

群組也會有自己的GID,在預設的情況下,GID會等於UID,除非有特意去修改。主要群組的用意是當使用者執行任何動作時,會照使用者當時的主要群組作為群組權限判斷的依據。例如當使用者要讀取檔案或進入目錄時,系統會判別使用者目前的主要群組是否有權限。當使用者建立檔案或目錄時,檔案或目錄的群組也會是使用者當前的主要群組。使用者若沒有屬於任何群組,則該使用者無法登入系統。

除此之外,使用者還可以擁有多個次要群組(Secondary Group)。
1326905896-4286341206.jpg-RHCE使用者與群組

這張圖的意思就是除了初始群組之外,使用者也可以屬於其他的次要群組。如同學校的社團,你可以加入籃球社,也可以同時加入吉他社,甚至更多的社團。使用者可以自由的在自己所屬的群組之間切換主要群組,以方便使用者執行更多的動作。輸入 #newgroup [群組名稱] 可將主要群組切換到指定的群組, #exit 可切回原本的主要群組。

群組的主要相關檔案分別為/etc/group以及/etc/gshadow。/etc/group與/etc/passwd相似,下圖為/etc/group的範例檔。
1326905946-519430702.jpg-RHCE使用者與群組

一行代表一個群組,以:為區分,一共四個欄位。
1326905981-1897854733.jpg-RHCE使用者與群組

/etc/gshadow中的欄位如下圖所示。
1326906010-2975568922.jpg-RHCE使用者與群組

一行代表一個群組,以:為區分,一共四個欄位。
1326906056-1573895109.jpg-RHCE使用者與群組

USER MANAGE

以下列出使用者管理上常用的指令以及其參數。

新增使用者 #useradd [參數] [使用者名稱]
-u: 指定UID,若不加此參數,系統會依序給予UID。
-g: 指定初始群組,若不指定則為預設新增同名群組為初始群組。
-G: 指定次要群組。
-r: 建立為系統帳號,若不加此參數,系統預設會建立一般使用者帳號。
-m: 強制建立使用者家目錄,此參數為一般使用者帳號的預設值。
-M: 強制不建立使用者家目錄,此參數為系統帳號的預設值。
-s: 指定該帳號預設的shell。
-d: 指定該帳號家目錄所在位置。
在新增使用者時,若不特意去設定,etc/passwd以及/etc/shadow會帶入預設值。這些預設值可以在/etc/login.defs以及/etc/default/useradd中變更設定。

修改使用者 #usermod [參數] [使用者名稱]
-g: 修改主要群組。
-G: 修改次要群組,若單用此參數會刪除其他次要群組,再新增指定群組為次要群組。
-a: 配合-G使用,以附加的方式新增次要群組,不會刪除原有的次要群組。
-L: 鎖定使用者帳號,使其無法登入系統。
-U: 解鎖使用者帳號。
-l: 修改使用者名稱。
鎖定使用者除了使用指令之外,還有其他的方法。修改/etc/passwd,將GID刪除,或將shell欄位改成/sbin/nologin或者/bin/false。也可將/etc/shadow的密碼欄位修改長度,例如加上!。

刪除使用者 #userdel [參數] [使用者名稱]
-r: 刪除使用者時連同家目錄一起刪除。

設定使用者密碼 #passwd [參數] [使用者名稱]
-l: 鎖定使用者密碼,使其無法登入系統。
-u: 解鎖使用者密碼。
若後面沒有指定使用者名稱,則會修改當前使用者的密碼,要注意不要修改到系統管理員的密碼。

GROUP MANAGE

以下列出群組管理上常用的指令以及其參數。

新增群組 #groupadd [參數] [群組名稱, GID]
-g: 指定GID,若不加此參數,系統會依序給予GID。
-r: 建立為系統群組,若不加此參數,系統預設會建立一般群組。

修改群組 #groupmod [參數] [群組名稱, GID]
-g: 修改GID,參數後面須接上新的GID #groupmog -g [新GID]
-n: 修改群組名稱,參數後面須接上新群組名稱 #groupmod -n [新群組名稱]

刪除群組 #groupdel [群組名稱]
要特別注意,要刪除群組時,不能有任何使用者以該群組為主要群組。

另外在群組管理上有個特別的指令 #gpasswd [參數] [使用者名稱] [群組名稱]
這個指令在系統管理員的身分下,不加任何參數表示修改group密碼。
-A: 指定使用者為群組管理員,參數後面接上使用者名稱。
-M: 將使用者加入該群組,參數後面接上使用者名稱。
-r: 取消群組密碼。
若在群組管理員的身分下,則是管理群組中的使用者。
-a: 新增使用者到群組中。
-d: 自群組中刪除使用者。

留言