Linux用戶與組
1、用戶及組說明
Linux系統通過ID實現對用戶及組的管理。使用賬號、密碼登錄系統後,操作系統會將用戶名轉化爲ID號進行判斷該賬號是否存在,並對密碼進行匹配。Linux系統中,用戶ID被稱爲UID,組ID被稱爲GID。UID爲0,代表超級用戶,默認root。1-499爲系統預留,我們創建的普通用戶ID從500開始。
Linux操作系統中組分爲基本組以及附加組。一個用戶同時僅可以加入一個基本組,但可同時加入多個附加組。默認在創建用戶時,系統默認同時會創建一個同名的組(用戶私有組),並設置用戶加入該基本組中。
1.1賬戶分類
(1)超級用戶:UID爲0,默認爲root,對系統有完整控制權限。
(2)普通用戶:UID非0,普通用戶分爲系統用戶及真實用戶。
A、系統用戶:UID1-499,系統預留使用。(部分軟件調用系統用戶後纔可使用)
B、真實用戶:UID500-65535或500-2的32次方減1。(默認500-60000)/etc/login.defs,查看UID默認值。
1.2組分類
(1)超級用戶組:GID爲0,屬於超級用戶組的成員,不具備系統管理員權限;
(2)系統分組:GID1-499,系統本身提供的某些服務;
(3)用戶自定義組:GID500-65535(默認500-60000).
1.3用戶、組相關文件
(1)/etc/passwd存放用戶賬號基本信息的配置文件
每行定義一個用戶賬號,有多少行就表示多少個賬號,每一行各內容之間又通過”:”號劃分了7個字段,這7個字段分別定義賬號的不同屬性。
各字段含義:
Eg:root:x:0:0:root:/root:/bin/bash
字段1:帳號名,用戶登陸時使用的賬戶名稱,唯一不可重複;
字段2:密碼佔位符:是否需要驗證密碼;有x系統會到/etc/shadow,查找密碼進行驗證;無x,不需要密碼,但無法遠程登錄;
字段3:UID;範圍是0-65535;
字段4:GID;範圍是0-65535;當添加用戶時,默認情況下會同時建立一個與用戶同名且UID和GID相同的組。
字段5:用戶說明;信息、名稱、表示、解釋。
字段6:宿主目錄;用戶登陸後首先進入的目錄,一般與"/home/用戶名"這樣的目錄
字段7:登錄Shell;當前用戶登陸後所使用的shell,在centos、rhel系統中,默認的shell是bash;如果不希望用戶登陸系統,可以通過usermod
或者手動修改passwd設置,將該字段設置爲/sbin/nologin 即可。出於安全考慮,大多數內置系統賬戶都是/sbin/nologin,這表示禁止登陸系統。
(2)/etc/shadow用戶影子口令文件
存儲 Linux 系統中用戶的密碼信息。 由於/etc/passwd 文件允許所有用戶讀取,易導致用戶密碼泄露,因此Linux系統將用戶的密碼信息從 /etc/passwd文件中分離出來,並單獨放到了此文件中。該文件只有 root 用戶擁有讀權限,其他用戶沒有任何權限,這樣就保證了用戶密碼的安全性。
shadow文件的每一行內容,也是以冒號(:)作爲分隔符,共9個字段。
各字段含義:
Eg:mail:*:15980:0:99999:7:::
字段1:帳號名稱
字段2:加密的密碼,linux系統使用SHA512 散列加密算法。
注:該串密碼產生的亂碼不能手工修改,如果手工修改,系統將無法識別密碼,導致密碼失效。很多軟件透過這個功能,在密碼串前加上 "!"、"*" 或 "x" 使密碼暫時失效。所有僞用戶的密碼都是 "!!" 或 "*",代表沒有密碼是不能登錄的。
字段3:最近更改密碼的時間;從1970/1/1到上次修改密碼的天數
字段4:禁止修改密碼的天數;從1970/1/1開始,多少天之內不能修改密碼,默認值爲0
字段5:用戶必須更改口令的天數;密碼的最長有效天數,默認值爲99999
字段6:警告更改密碼的期限;密碼過期之前警告天數,默認值爲7;在用戶密碼過期前多少天提醒用戶更改密碼
字段7:不活動時間;密碼過期之後賬戶寬限時間 3+5;在用戶密碼過期之後到禁用賬戶的天數
字段8:帳號失效時間,默認值爲空;從1970/1/1日起,到用戶被禁用的天數
字段9:保留字段(未使用),標誌
(3)/etc/group 用戶組配置文件
/etc/group用戶組配置文件,其文件權限也是644。內容包括用戶與用戶組,能顯示用戶歸屬哪個用戶組,一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特性。如果某個用戶下有對系統管理有最重要的內容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置爲完全私有;root用戶組一般不要輕易將普通用戶加入。
各字段含義:
bin:x:1:bin,daemon
字段1:組賬戶名稱
字段2:密碼佔位符x;通常不需要設置該密碼,由於安全原因,該密碼被記錄在/etc/gshadow中,因此顯示爲'x'。這類似/etc/shadow
字段3:組賬戶GID號,用戶組ID
字段4:本組的成員用戶列表;加入這個組的所有用戶賬號
(4)/etc/gshadow 用戶組的影子文件
/etc/gshaow是/etc/group的加密文件,用戶組的管理密碼就是存放在這個文件。
各字段含義:
bin:::bin,daemon
字段1:組賬號的名稱。
字段2:加密後的密碼字符串,這個字段可以空的或者!;如果是空的或有!,表示沒有密碼。
字段3:本組的管理員列表;這個字段也可爲空;如果有多個用戶組管理員,用,號分隔。
字段4:本組的成員列表;加入這個組的所有用戶賬戶;列表中多個用戶通過","分隔。
(5)/etc/login.defs
/etc/login.defs文件是用來定義創建用戶時需要的用戶的配置文件。如創建用戶時,是否需要家目錄,UID和GID的範圍,用戶及密碼的有效期限等。
默認參數選項:
MAIL_DIR /var/spool/mail #創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件
PASS_MAX_DAYS 99999 #一個密碼最長可以使用的天數
PASS_MIN_DAYS 0 #更改密碼的最小天數
PASS_MIN_LEN 5 #密碼的最小長度
PASS_WARN_AGE 7 #密碼失效提前多少天開始警告
UID_MIN 500 #最小UID爲500,也就是說添加用戶時,UID是從500開始的
UID_MAX 60000 #最大UID爲60000
GID_MIN 500 #GID依然是從500開始;同上面用戶的情況
GID_MAX 60000
CREATE_HOME yes #是否創建用戶家目錄,默認要求創建;可用-m參數來控制
USERGROUPS_ENAB yes #刪除用戶同時刪除用戶組
MD5_CRYPT_ENAB yes #MD5密碼加密
2.1用戶管理
2.1.1用戶創建useradd命令
描述:創建用戶。
用法:useradd [選項] [用戶名稱]
主要參數:
參數 |
功能 |
-c |
設置賬號描述信息,一般爲賬戶全稱 |
-d |
設置賬戶家目錄,默認在/home/用戶名 |
-e |
設置賬戶失效日期,格式YYYY-MM-DD |
-g |
設置賬戶基本組 |
-G |
設置賬戶附加組,多個附加組中間用逗號分隔 |
-M |
不創建家目錄,一般與-s結合使用 |
-s |
設置賬戶登錄shell,默認爲bash |
-u |
指定賬戶UID |
-n |
默認情況下,用戶的用戶組和用戶的名稱會相同,如果命令加了-n參數,就不會生成和用戶同名的用戶組 |
-r |
用來建立系統賬戶。 |
Eg:
(1)創建用戶test,設置賬戶描述,hello world
[root@test ~]# useradd test -c "hello world"
(2)創建用戶admin,全名administrator,家目錄/home/admin/,賬戶失效日期2020.02.28,賬戶基本組root,附加組bin、adm。
[root@test ~]#useradd -c administrator -d /home/admin -e 2020-02-28 -g root -G bin,adm admin
(3)創建用戶test1,無法登陸系統且沒有加目錄
[root@test ~]# useradd -s /sbin/nologin -M test1
2.1.2用戶修改usermod命令
描述:用戶信息修改。
用法:usermod [選項] [用戶名稱]
主要參數:
參數 |
功能 |
-c |
指定註釋信息 |
-d -m |
-d一般跟-m使用,既指定新的家目錄位置,又移動其此前的文件至新的家目錄當中 |
-e |
指定賬號失效時間 |
-g |
指定所屬的基本組(組名或GID) |
-a -G GID |
不使用-a選項,會覆蓋此前的附加組; |
-l |
更改用戶賬號的登陸名稱 |
-L |
鎖定用戶賬號 |
-s |
指定用戶登錄Shell |
-u |
指定UID標誌號 |
-U |
解鎖用戶賬號 |
Eg:
(1)修改test用戶名爲test1
[root@test ~]#usermod -l test1 test
(2)鎖定test1賬戶
[root@test ~]#usermod -L test1
描述:刪除用戶。
用法:usedel [-r] [用戶名稱]
主要參數:
參數 |
功能 |
-r |
刪除賬號及相關文件 |
Eg:
(1)刪除test用戶,但不刪除賬戶相關文件
[root@test ~]#userdel test
(2)刪除test用戶,同時刪除賬戶相關文件
[root@test ~]#userdel -r test
2.2.1創建組賬戶groupadd命令
描述:創建組帳戶。
用法:groupadd [選項] [組賬戶名稱]
主要參數:
參數 |
功能 |
-g gid |
指定組ID號 |
-o |
允許組ID號,不必唯一 |
-r |
添加系統組,低於499系統賬戶 |
Eg:
(1)創建test組
[root@test ~]# groupadd test
(2)創建GID爲50000的test1組
[root@test ~]# groupadd -g 50000 test1
2.2.2組賬戶修改groupmod命令
描述:組帳戶修改。
用法:groupmod [選項] [組賬戶名稱]
主要參數:
參數 |
功能 |
-g gid |
修改組ID號 |
-n 新組名 |
修改組名稱 |
Eg:
(1)修改test組名稱爲test1
[root@test ~]# groupmod -n test1 tset
(2)修改test1組的組ID爲49999
[root@test ~]# groupmod -g 49999 test1
描述:組帳戶刪除。
用法:groupdel [組賬戶名稱]
Eg:
(1)刪除test組
[root@test ~]# groupdel tset
2.3.1 passwd命令
描述:修改賬戶認證信息。
用法:passedl [選項] [賬戶名稱]
主要參數:
參數 |
功能 |
-l |
鎖定賬戶,僅root用戶可用 |
--stdin |
從文件或管道讀取密碼 |
-u |
解鎖賬戶 |
-d |
快速清空賬戶密碼,僅root可使用此選項 |
-e |
終止用戶密碼 |
-n 天數 |
設置該用戶修改密碼後,多長時間不能再次修改, /etc/shadow 文件中各行密碼的第 4 個字段 |
-x 天數 |
設置該用戶的密碼有效期,對應 /etc/shadow 文件中各行密碼的第 5 個字段 |
-w 天數 |
置用戶密碼過期前的警告天數,對於 /etc/shadow 文件中各行密碼的第 6 個字段 |
-i 日期 |
設置用戶密碼失效日期,對應 /etc/shadow 文件中各行密碼的第 7 個字段 |
Eg:
(1)設置test用戶密碼
[root@test ~]#passwd tset
(2)設置test的密碼爲“123456”
[root@test ~]#echo “123456” |passwd --stdin test
(3)鎖定test用戶
[root@test ~]#passwd -l tset
(4)解鎖test用戶
[root@test ~]#passwd -u tset
2.4指定用戶要管理的工作組
2.4.1 gpasswd命令
描述:指定用戶要管理的工作組。
用法:gpassedl [選項] [賬戶名稱]
主要參數:
參數 |
功能 |
-a |
添加用戶到組 |
-d |
從組中刪除用戶 |
-A |
指定組管理員 |
-r |
刪除密碼 |
-R |
限制用戶登入該組 |
Eg:
(1)將test用戶加入到test1組
[root@test ~]#gpasswd -a test test1
(2)將test設置爲tes1組的管理員
[root@test ~]#gpasswd -A test test1
個人公衆號: