搜尋此網誌
RHCE 使用者與群組
USER
Linux是一個多工的系統,可以讓多人同時登入系統進行作業。
在這樣的情況下,使用者以及群組的管理就變的相當重要。
Linux系統中,使用者帳號主要分為:系統管理員帳號、系統帳號、以及可登入帳號。
每個帳號會有一個UID,UID主要功能就是辨別帳號是屬於哪種帳號。
系統管理員帳號是系統上權限最大的帳號,可以執行任何命令,UID為0。
系統帳號是一些服務為了執行上的方便所產生的帳號,UID為1~499。
可登入帳號就是一般使用者登入系統所用的帳號UID為500~65535。
跟使用者最有關的兩個檔案就是/etc/passwd以及/etc/shadow,首先先介紹/etc/passwd。
/etc/passwd中每一行代表一個帳號,每個帳號以:為區分總共7個欄位設定。
開啟/etc/shadow後,可以看到類似下圖的內容。
以:為區分,總共9個欄位,括號內為對應 #change 指令的參數,以root帳號為例子。
(因為圖片中root帳號的設定過長,所以1.2行實為一行,皆為root的設定。)
#change 可以用來修改使用者密碼的屬性。
例如 #change -d 0 Peter 可以在使用者Peter下次登入時,強迫更改密碼。
-l:可列出使用者密碼屬性。
GROUP
使用者在建立的時候,系統會自動位使用者建立一個同名的群組,這個群組稱為初始群組(Initial Group)。
而在預設的情況下,這個初始群組也是使用者的主要群組(Primary Group)。
或者系統管理員也可以在使用者建立時另外指定初始群組給使用者。
群組也會有自己的GID,在預設的情況下,GID會等於UID,除非有特意去修改。
主要群組的用意是當使用者執行任何動作時,會照使用者當時的主要群組作為群組權限判斷的依據。
例如當使用者要讀取檔案或進入目錄時,系統會判別使用者目前的主要群組是否有權限。
當使用者建立檔案或目錄時,檔案或目錄的群組也會是使用者當前的主要群組。
使用者若沒有屬於任何群組,則該使用者無法登入系統。
除此之外,使用者還可以擁有多個次要群組(Secondary Group)。
這張圖的意思就是除了初始群組之外,使用者也可以屬於其他的次要群組。
如同學校的社團,你可以加入籃球社,也可以同時加入吉他社,甚至更多的社團。
使用者可以自由的在自己所屬的群組之間切換主要群組,以方便使用者執行更多的動作。
輸入 #newgroup [群組名稱] 可將主要群組切換到指定的群組, #exit 可切回原本的主要群組。
群組的主要相關檔案分別為/etc/group以及/etc/gshadow。
/etc/group與/etc/passwd相似,下圖為/etc/group的範例檔。
一行代表一個群組,以:為區分,一共四個欄位。
/etc/gshadow中的欄位如下圖所示。
一行代表一個群組,以:為區分,一共四個欄位。
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:自群組中刪除使用者。