Linux—賬號管理及命令使用詳解
關注微信公眾號:CodingTechWork,一起學習進步。
引言
在Linux系統中,我們常常會看到目錄或檔案的所屬關係:
[root@linux01 ~]# ll -d test.sh
-rw-r----- 1 root root 144 11月 20 2019 test.sh
其中root root
就是檔案擁有者和群組,root是超管賬號,接下來我們來詳細學習這些賬號相關的概念以及相關命令使用。
歸屬
檔案擁有者
User:Linux是一個多使用者多工的系統,一個物理機或者虛擬機器往往會有很多人同時使用,每個使用者在各自的家目錄進行操作(如部署自己的應用、儲存檔案等),這個時候就需要將這些使用者進行隔離,許可權分開。使用者A無權讀寫使用者B的相關目錄,使用者B無權讀寫使用者A的目錄,保證每個人各自的隱私。
群組
Group:多個使用者需要共享相同的東西,歸屬於同一個群組,舉例來說,一個開發團隊,在程式碼倉庫中會屬於同一個倉庫地址下,這樣一個團隊的成員可以共享這個倉庫地址下的程式碼進行讀寫,而其他開發團隊的成員無權讀寫這個團隊的程式碼倉庫。
其他人
Others:其他人這個概念比較好理解,相對於本群組而言,跟其無關的都是其他人。
關係
- 管家相當於root使用者,所有幢都可以訪問;
- 1幢101、1幢201、1幢301都是User,是使用者,都有各自單獨的家(家目錄);
- 1幢和2幢都是Group,裡面的1幢101、1幢201、1幢301等相當於使用者,在一幢可以共享電梯的使用;
- 對於1幢而言,2幢就是Others,用不了1幢的電梯;
賬號管理
賬號識別碼
對於計算機而言,計算機不會認識賬號暱稱之類的別名,只會識別二進位制(0和1),在Linux中也是同樣的,主機對於賬號只是識別ID。
登入賬號一般有兩個ID,一個是使用者ID
(UDI, User ID),存放在/etc/passwd
中;一個是群組ID
(GID, Group ID) ,存放在/etc/group
中。我們可以通過id user_name
的方式來檢視UID和GID。
檔案或者目錄檢視屬性時,首先會根據/etc/passwd和/etc/group
的內容,利用UID和GID顯示對應賬號和群組名稱,從而判斷自己的擁有者和群組。
使用者賬號
賬號登入流程
- 在Linux系統中輸入主機ip,賬號和密碼;
- 系統從
/etc/passwd
中尋找輸入的賬號,若沒有找到,則退出;否則,從/etc/passwd
以及/etc/group
將該賬號對應的UID與GID讀取出來,同時也會讀取使用者家目錄及shell設定; - 系統進入
/etc/shadow
中找到對應賬號與UID,核對輸入密碼; - 若賬號和密碼都核對無誤,則進入shell。
/etc/passwd詳解
/etc/passwd是系統使用者配置檔案,這個檔案中儲存了系統中所有使用者的基本資訊。
該檔案是對所有使用者都可讀的:
[root@linux01 ~]# ll -d /etc/passwd
-rw-r--r-- 1 root root 1349 9月 3 10:18 /etc/passwd
檔案結構詳解如下:
[root@linux01 ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
一共7個欄位,每一行中的欄位由:
隔開。第一個一般都是root
系統管理員賬戶資訊。
-
賬號名稱:登入賬號的名稱,與UID對應。
-
密碼:早起Unix系統密碼放置在改欄位中,後因安全問題,放置密碼資料被竊取,改放到
/etc/shadow
中,所以這邊顯示為x
。 -
UID:賬號的使用者識別碼。
id範圍 | id對應使用者的特性 |
---|---|
0 (系統管理員) | UID=0時,表示該賬號為root許可權(系統管理員),普通賬戶的UID改為0即擁有root許可權,但不建議修改。 |
1~999(系統賬號) | UID=1~999時,即為系統保留的系統賬號,用於更小的許可權去作業系統中的服務。 |
1000~60000(可登陸賬號) | UID=1000~60000時,表示一般使用者的賬號。 |
-
GID:該資訊與
/etc/group
相關聯,下面會闡述該目錄內容的結構。 -
使用者資訊說明欄:解釋說明作用,一般配合
finger
使用。 -
主資料夾:使用者家目錄,一般
useradd userA
後,會自動為userA
使用者建立/home/userA
使用者家目錄,rott的使用者家目錄在/root下。 -
shell:使用者登入系統後會取得一個shell與系統核心聯絡,從而在系統上進行操作。
/etc/shadow檔案結構
/etc/shadow是用於儲存 Linux 系統中所有使用者對應的密碼資訊,我們也稱為“影子檔案”。
除了root使用者,其他使用者沒有許可權訪問該檔案。
[root@linux01 ~]# ls -al /etc/shadow
-r-------- 1 root root 1101 9月 3 10:25 /etc/shadow
[t1@linux01 ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
檔案結構詳解如下:
[root@linux01 ~]# head -n 5 /etc/shadow
root:$6$T211m/bzdf7/N$AV4IJJWMgmCNuovXSlu6LvkUwQ5W1JKTVgy7fdarewvdsfs.SB7j7oJSuKvV9sg1VXrTw3M03FfRsn8NqY6cQ/:18225:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:!*:17110:0:99999:7:::
lp:!*:17110:0:99999:7:::
-
賬號名稱:與
/etc/passwd
對應,賬號名稱。 -
密碼:存放加密的密碼。
-
最近更改密碼的累積天數:該欄位記錄的是變更密碼的那天日期,從1970年1月1日作為1開始累積,這個累積的天數可以通過程式碼進行計算。
echo $(($(date --date="2020/09/03" +%s)/86400+1))
其中,86400
是一天的秒數,+1
是為了補齊1970年1月1日那天。
-
密碼不可被更改的天數:該欄位限制了密碼從最後一次變更後,需要經過多少天才可以進行變更。若為
0
,則表示無限制,可以隨時更改密碼。 -
密碼需要重新更改的天數:該欄位限制了密碼從最後一次變更後,需要經過多少天就應該再次變更。若為
99999
,表示273年,也就是無限制。 -
密碼需要更改前警告提示的天數:賬號密碼有效期快到的時候,會提前進行提示警告。
-
密碼失效時間:密碼更新時間(第3欄位)+重新變更時間(第5欄位)為有效期,過期後,還沒有更新密碼,密碼就會過期。
-
賬號失效日期:類似於第三個欄位進行累計失效日期計算,過期後,賬號無法使用。
-
保留:保留欄位。
群組
我們在上述的/etc/passwd
賬號配置檔案中發現有GID欄位, 而這個欄位是在/etc/group
相關聯。
/etc/group檔案結構
/etc/group檔案儲存群組相關配置資訊。
[root@linux01 ~]# head -n 5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
-
群組名稱:群組的名稱,與GID對應。
-
群組密碼:群組的密碼,通常給群組管理員使用,一般不設定,密碼不會再此顯示,會在
/etc/gshadow
中顯示,在此只會顯示x
。 -
GID:群組的ID,也就是
/etc/passwd
第四個欄位的GID。 -
群組支援的其他賬號名稱:一個賬號可以加入多個群組,當其他賬戶加入該群組後,會填入到該欄位中,逗號隔開。
/etc/gshadow
/etc/gshadow是存放群組的密碼等資訊;
[root@linux01 ~]# head -n 5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
-
群組名稱:對應賬戶的群組名稱;
-
群組密碼:群去的密碼;若開頭為
!
則表示無合法密碼,無群組管理員; -
群組管理員賬號:群組管理員的賬號名稱
-
有加入該群組支援的所屬賬號:群組下所支援的賬號,與
/etc/group
中的保持一致。
三檔案的關係:
/etc/passwd、/etc/shadow、/etc/group
群組分類
群組分為初始群組
和有效群組
,初始群組就是/etc/passwd
中的第四個欄位中GID對應的群組;有效群組就是某個使用者userA可以加入到其他群組userB中,這個群組userB對於這個使用者userA來說就是有效群組。
舉例:假設通過useadd
命令建立了t1和t2使用者,然後通過usermod
命令將t1使用者加入到t2群組內。
[root@linux01 ~]# usermod -G t2 t1
其中-G
是指定有效群組。
- 我們可以在
/etc/group
中看到t1使用者已加入到t2群組的第四個欄位中。
[root@linux01 ~]# grep t1 /etc/passwd /etc/shadow /etc/group
/etc/passwd:t1:x:1002:1002::/home/t1:/bin/bash
/etc/shadow:t1:$6$9OxP0pfl$0qLlLCi4WNHcK5yuGHDIXPKQ2A/Ilm1zBkf73fS8v1g0EsLa9.0Vavi8oInFfGLyvfU9ulsgWVUzJRbGUJuEq/:18508:0:60:7:::
/etc/group:t1:x:1002:
/etc/group:t2:x:1003:t1
- 我們也可以登入t1賬號後,通過
groups
命令檢視所支援的群組
[root@linux01 ~]# su - t1
上一次登入:四 9月 3 16:22:46 CST 2020pts/0 上
[t1@linux01 ~]$ groups
t1 t2
[t1@linux01 ~]$ touch test0.txt
[t1@linux01 ~]$ ll -d test0.txt
-rw-r----- 1 t1 t1 0 Sep 3 17:53 test0.txt
第一個t1是有效群組,檢視到新建的檔案的使用者是t1,所屬群組也是t1。
- 我們可以通過
newgrp
來切換有效群組
[t1@linux01 ~]$ newgrp t2
[t1@linux01 ~]$ groups
t2 t1
[t1@linux01 ~]$ touch test.txt
[t1@linux01 ~]$ ll -d test.txt
-rw-r----- 1 t1 t2 0 Sep 3 18:01 test.txt
我們可以看到檔案使用者是t1,所屬群組是t2。
賬號命令
useradd
概述
useradd
命令是新建賬號命令。
語法格式
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM] [-c 說明欄] [-d 主目錄的絕對路徑] [-s shell] 使用者賬號名
引數詳解
[root@linux01 ~]# useradd -help
用法:useradd [選項] 登入
useradd -D
useradd -D [選項]
選項:
-b, --base-dir BASE_DIR 新賬戶的主目錄的基目錄
-c, --comment COMMENT 新賬戶的 GECOS 欄位,也就是/etc/passwd的第五欄位
-d, --home-dir HOME_DIR 新賬戶的主目錄
-D, --defaults 顯示或更改預設的 useradd 配置
-e, --expiredate EXPIRE_DATE 新賬戶的過期日期
-f, --inactive INACTIVE 新賬戶的密碼不活動期
-g, --gid GROUP 新賬戶主組的名稱或 ID
-G, --groups GROUPS 新賬戶的附加組列表
-h, --help 顯示此幫助資訊並推出
-k, --skel SKEL_DIR 使用此目錄作為骨架目錄
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的預設值
-l, --no-log-init 不要將此使用者新增到最近登入和登入失敗資料庫
-m, --create-home 建立使用者的主目錄
-M, --no-create-home 不建立使用者的主目錄
-N, --no-user-group 不建立同名的組
-o, --non-unique 允許使用重複的 UID 建立使用者
-p, --password PASSWORD 加密後的新賬戶密碼
-r, --system 建立一個系統賬戶
-R, --root CHROOT_DIR chroot 到的目錄
-s, --shell SHELL 新賬戶的登入 shell
-u, --uid UID 新賬戶的使用者 ID
-U, --user-group 建立與使用者同名的組
-Z, --selinux-user SEUSER 為 SELinux 使用者對映使用指定 SEUSER
預設配置
[root@linux01 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
GROUP=100
:新建賬號的初始群組使用GID為100(群組為users
);但是CentOS是私有群組機制
,所以系統會建立一個與賬號一樣的群組給使用者作為初始群組,該系統不會參考100數值。只有遵守公有群組機制
的系統才會參考該數值。HOME=/home
:使用者主資料夾的基準目錄(basedir,使用者家目錄),使用者的主資料夾通常就是與賬號同名的目錄,目錄將會拼接在該設定值的目錄後,所以一般使用者家目錄為/home/user_name
格式。INACTIVE=-1
:密碼過期後是否會失效,-1
代表密碼永遠不會失效,若為其他數值n
,則表示過期n
天后失效。該值對應在/etc/shadow
中的第7個欄位。EXPIRE=
:賬號失效日期,對應/etc/shadow
中的第8個欄位,可以設定賬號在某個日期後是失效,而不管密碼是否失效。預設不設定。SHELL=/bin/bash
:預設使用的shell程式檔名
。SKEL=/etc/skel
:使用者主資料夾參考基準目錄,一個新建的賬號對應的使用者家目錄,如/home/userA
這個目錄的各個資料都是從/etc/skel
中複製過去,如果在該目錄下建立了/etc/skel/test
,則後續新增使用者時,主資料夾中會包含test檔案。如下示例:
[root@linux01 ~]# touch /etc/skel/test
[root@linux01 ~]# useradd t3
[root@linux01 ~]# cd /home/t3/
[root@linux01 /home/t3]# ll
總用量 0
-rw-r----- 1 t3 t3 0 9月 4 09:44 test
CREATE_MAIL_SPOOL=yes
:建立使用者的mailbox,檢視路徑等資訊,可以通過cat /etc/login.defs
檢視路徑。如下示例檢視:
[root@linux01 ~]# ll /var/spool/mail/t3
-rw-rw---- 1 t3 mail 0 9月 4 09:44 /var/spool/mail/t3
示例
示例1
無參建立:
[root@linux01 ~]# useradd u1
[root@linux01 ~]# ll -d /home/u1/
drwx------ 2 u1 u1 4096 9月 4 09:11 /home/u1/
[root@linux01 ~]# grep u1 /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/passwd:u1:x:1004:1004::/home/u1:/bin/bash
/etc/shadow:u1:!!:18509:0:90:7:::
/etc/group:u1:x:1004:
/etc/gshadow:u1:!::
說明:
- 在
/etc/passwd
中建立一行與賬號相關的資料,包含了UID、GID、使用者家目錄等資訊; - 在
/etc/shadow
中建立一行與賬號密碼相關的資料,如果沒有指定密碼,則無密碼填入;若需要指定密碼,則需要使用passwd user_name
命令來指定密碼; - 在
/etc/group
中建立一行與賬號群組相關的資料,加入一個與賬號名稱一樣的群組名稱; - 在
/etc/gshadow
中建立一行與賬號群組密碼相關的資料,包含群組名稱、群組管理密碼等資訊; - 在
/home
下建立一個與賬號名稱相同的使用者家目錄,用於使用者主資料夾,且許可權為700(drwx------)
,
示例2
加參建立:
[root@linux01 ~]# useradd -u 1009 -g users u2
[root@linux01 ~]# ll -d /home/u2/
drwx------ 2 u2 users 4096 9月 4 09:16 /home/u2/
[root@linux01 ~]# grep u2 /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/passwd:u2:x:1009:100::/home/u2:/bin/bash
/etc/shadow:u2:!!:18509:0:90:7:::
說明:
-u
是指定了賬號的UID,我們可以看到/etc/passwd
中的第3欄的UID是我們指定的1009;-g
是指定了初始群組,我們可以看到/etc/passwd
中的第4欄的GID是群組users
對應的100;因為指定了初始群組,/etc/group
中就不會主動建立與賬號同名的群組,所以在/etc/group
和/etc/gshadow
中沒有檢視到u2相關的資料。
示例3
系統賬號:
[root@linux01 ~]# useradd -r u3
[root@linux01 ~]# ll -d /home/u3
ls: 無法訪問/home/u3: 沒有那個檔案或目錄
[root@linux01 ~]# grep u3 /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/passwd:u3:x:996:992::/home/u3:/bin/bash
/etc/shadow:u3:!!:18509::::::
/etc/group:u3:x:992:
/etc/gshadow:u3:!::
說明:
-r
引數代表建立一個系統賬號;/etc/passwd
中的第3欄看到數字為996,符合規定,1000及以後的號為一般賬號,1000之前的號為系統賬號;- 由於系統賬號主要用於進行執行系統所需服務的許可權設定,所以系統賬號預設沒有建立使用者家目錄。
useradd命令總結
useradd命令執行後,會涉及到以下檔案或目錄的變動:
- 使用者賬號和密碼相關檔案:
/etc/passwd,/etc/shadow
。 - 使用者群組和密碼相關檔案:
/etc/group,/etc/gshadow
。 - 使用者的主資料夾(使用者家目錄):
/home/賬號名稱
。
passwd命令
概述
passwd
命令是修改賬號密碼的命令。
語法格式
- root或者賬號自己使用:
passwd [--stdin] [賬號名稱]
- root賬號使用:
passwd [-l] [-u] [--stdin] [-S] [-n 天數] [-x 天數] [-w 天數] [-i 日期] 賬號
引數詳解
[root@linux01 ~]# passwd --help
用法: passwd [選項...] <帳號名稱>
-k, --keep-tokens 保持身份驗證令牌不過期
-d, --delete 刪除已命名帳號的密碼(只有根使用者才能進行此操作)
-l, --lock 鎖定指名帳戶的密碼(僅限 root 使用者)
-u, --unlock 解鎖指名賬戶的密碼(僅限 root 使用者)
-e, --expire 終止指名帳戶的密碼(僅限 root 使用者)
-f, --force 強制執行操作
-x, --maximum=DAYS 密碼的最長有效時限(只有根使用者才能進行此操作)
-n, --minimum=DAYS 密碼的最短有效時限(只有根使用者才能進行此操作)
-w, --warning=DAYS 在密碼過期前多少天開始提醒使用者(只有根使用者才能進行此操作)
-i, --inactive=DAYS 當密碼過期後經過多少天該帳號會被禁用(只有根使用者才能進行此操作)
-S, --status 報告已命名帳號的密碼狀態(只有根使用者才能進行此操作)
--stdin 從標準輸入讀取令牌(只有根使用者才能進行此操作)
Help options:
-?, --help Show this help message
--usage Display brief usage message
密碼一般要求
- 密碼不能和賬號同名;
- 密碼儘量不堯選字典中的字元;
- 密碼需要超過8個字元;
- 密碼不堯使用個人資訊(身份證、手機號、生日等);
- 密碼不堯使用簡單的關係式,如1+2=3;
- 密碼計量使用
大小寫字元
、數字
、特殊字元($
,_
,-
等)組合。
示例
示例1
無參更改
[root@linux01 ~]# passwd u1
更改使用者 u1 的密碼 。
新的 密碼:
無效的密碼: 過短
無效的密碼: 過於簡單
重新輸入新的 密碼:
抱歉,密碼不匹配。
新的 密碼:
無效的密碼: 過於簡單化/系統化
無效的密碼: 過於簡單
重新輸入新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 過於簡單化/系統化
重新輸入新的 密碼:
抱歉,密碼不匹配。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
我們可以看到,不管是過短、還是過於簡單都會有提示,一直更改到符合密碼規範才會生效。在/etc/login.defs
中我們可以看到對於密碼的一些要求。
示例2
有參更改,通過--stdin
引數,從標準輸入讀取令牌(只有根使用者才能進行此操作)。
[root@linux01 ~]# echo "1234qwer" | passwd --stdin u1
更改使用者 u1 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
示例3
查詢密碼狀態,通過-S
引數,報告已命名帳號的密碼狀態(只有根使用者才能進行此操作)
[root@linux01 ~]# passwd -S u1
u1 PS 2020-09-04 0 90 7 -1 (密碼已設定,使用 SHA512 演算法。)
示例4
加解鎖密碼,通過-l
鎖定,加鎖時,檢視狀態,會出現LK
狀態,檢視/etc/shadow
中的第2個密碼欄會發現多了!!
兩個字元;-u
解鎖,解鎖後恢復PS
狀態,且/etc/shadow
中的第2個密碼欄會去掉!!
。
[root@linux01 ~]# passwd -l u1
鎖定使用者 u1 的密碼 。
passwd: 操作成功
[root@linux01 ~]# passwd -S u1
u1 LK 2020-09-04 0 90 7 -1 (密碼已被鎖定。)
[root@linux01 ~]# grep u1 /etc/shadow
u1:!!$6$bw/GP7Lv$s8fQGoLvGiRK.sgV2KSZ1sUeKUGbgEQH1NzQq9DZ8x1jWbg86wG3aGE25T7f4.77rhRBEIe1eQL55C6ftrmB5/:18509:0:90:7:::
[root@linux01 ~]# passwd -u u1
解鎖使用者 u1 的密碼。
passwd: 操作成功
[root@linux01 ~]# passwd -S u1
u1 PS 2020-09-04 0 90 7 -1 (密碼已設定,使用 SHA512 演算法。)
[root@linux01 ~]# grep u1 /etc/shadow
u1:$6$bw/GP7Lv$s8fQGoLvGiRK.sgV2KSZ1sUeKUGbgEQH1NzQq9DZ8x1jWbg86wG3aGE25T7f4.77rhRBEIe1eQL55C6ftrmB5/:18509:0:90:7:::
chage命令
概念
chage
命令用於展示更詳細的密碼引數資訊。
語法格式
chage [-ldEImMW] 賬號名稱
引數詳解
[root@linux01 ~]# chage -help
用法:chage [選項] 登入
選項:
-d, --lastday 最近日期 將最近一次密碼設定時間設為“最近日期”
-E, --expiredate 過期日期 將帳戶過期時間設為“過期日期”
-h, --help 顯示此幫助資訊並推出
-I, --inactive INACITVE 過期 INACTIVE 天數後,設定密碼為失效狀態
-l, --list 顯示帳戶年齡資訊
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設為“最小天數”
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設為“最大天數”
-R, --root CHROOT_DIR chroot 到的目錄
-W, --warndays 警告天數 將過期警告天數設為“警告天數”
示例
[root@linux01 ~]# chage -l u1
最近一次密碼修改時間 :9月 04, 2020
密碼過期時間 :12月 03, 2020
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :90
在密碼過期之前警告的天數 :7
說明:-l
引數可以展示出賬號密碼相關的時間資訊。
usermod命令
概念
usermod
命令用於修改賬號相關配置。
語法格式
usermod [-cdegGlsuLU] 賬號名稱
引數詳解
[root@linux01 ~]# usermod -help
用法:usermod [選項] 登入
選項:
-c, --comment 註釋 GECOS 欄位的新值
-d, --home HOME_DIR 使用者的新主目錄
-e, --expiredate EXPIRE_DATE 設定帳戶過期的日期為 EXPIRE_DATE
-f, --inactive INACTIVE 過期 INACTIVE 天數後,設定密碼為失效狀態
-g, --gid GROUP 強制使用 GROUP 為新主組
-G, --groups GROUPS 新的附加組列表 GROUPS
-a, --append GROUP 將使用者追加至上邊 -G 中提到的附加組中,
並不從其它組中刪除此使用者
-h, --help 顯示此幫助資訊並推出
-l, --login LOGIN 新的登入名稱
-L, --lock 鎖定使用者帳號
-m, --move-home 將家目錄內容移至新位置 (僅於 -d 一起使用)
-o, --non-unique 允許使用重複的(非唯一的) UID
-p, --password PASSWORD 將加密過的密碼 (PASSWORD) 設為新密碼
-R, --root CHROOT_DIR chroot 到的目錄
-s, --shell SHELL 該使用者帳號的新登入 shell
-u, --uid UID 使用者帳號的新 UID
-U, --unlock 解鎖使用者帳號
-Z, --selinux-user SEUSER 使用者賬戶的新 SELinux 使用者對映
示例
[root@linux01 ~]# grep u1 /etc/passwd
u1:x:1004:1004::/home/u1:/bin/bash
[root@linux01 ~]# usermod -c "u1 test describe info" u1
[root@linux01 ~]# grep u1 /etc/passwd
u1:x:1004:1004:u1 test describe info:/home/u1:/bin/bash
說明:通過-c
引數新增說明資訊後,我們可以看到/etc/passwd
中更新說明生效。
userdel命令
概念
userdel
命令用於刪除使用者賬號相關資料。主要涉及如下方面:
- 使用者賬號/密碼相關資料:
/etc/passwd
,/etc/shadow
; - 使用者群組相關資料:
/etc/group
,/etc/gshadow
; - 使用者個人檔案資料:
/home/user_name
,/var/spool/mail/user_name
等。
該命令要慎用,真的確認要刪除賬號及所有資料的時候才使用該命令,否則可以去/etc/shadow
賬號中的第8個欄位
進行設定為0
,就可以使賬號失效,但資料還在。
語法格式
userdel [-r] 賬號名稱
引數詳解
[root@linux01 ~]# userdel -help
用法:userdel [選項] 登入
選項:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 顯示此幫助資訊並推出
-r, --remove 刪除主目錄和郵件池
-R, --root CHROOT_DIR chroot 到的目錄
-Z, --selinux-user 為使用者刪除所有的 SELinux 使用者對映
示例
示例1
不刪除使用者家目錄
[root@linux01 ~]# userdel u1
[root@linux01 ~]# ll -d /home/u1
drwx------ 2 1004 1004 4096 9月 4 17:17 /home/u1
示例2
刪除使用者家目錄,使用-r
引數
[root@linux01 ~]# userdel -r u2
[root@linux01 ~]# ll -d /home/u2
ls: 無法訪問/home/u2: 沒有那個檔案或目錄
groupadd命令
概念
groupadd
命令用於新增群組。
語法格式
groupadd [-g GID] [-r] 群組名稱
引數詳解
[root@linux01 ~]# groupadd -help
用法:groupadd [選項] 組
選項:
-f, --force 如果組已經存在則成功退出
並且如果 GID 已經存在則取消 -g
-g, --gid GID 為新組使用 GID
-h, --help 顯示此幫助資訊並推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的預設值
-o, --non-unique 允許建立有重複 GID 的組
-p, --password PASSWORD 為新組使用此加密過的密碼
-r, --system 建立一個系統賬戶
-R, --root CHROOT_DIR chroot 到的目錄
示例
[root@linux01 ~]# groupadd g1
[root@linux01 ~]# grep g1 /etc/group /etc/gshadow
/etc/group:g1:x:1011:
/etc/gshadow:g1:!::
[root@linux01 ~]# groupadd -g 1007 g2
[root@linux01 ~]# grep g2 /etc/group /etc/gshadow
/etc/group:g2:x:1007:
/etc/gshadow:g2:!::
說明:要注意的是,不帶-g
時,群組的GID會從1000以上最大的GID+1
來建立。
groupmod命令
概念
groupmod
命令類似於usermod
命令,用於修改群組group的相關配置引數。
語法格式
groupmod [-g 新GID] [-n 新群組名稱] 舊群組名稱
引數詳解
groupmod -help
用法:groupmod [選項] 組
選項:
-g, --gid GID 將組 ID 改為 GID
-h, --help 顯示此幫助資訊並推出
-n, --new-name NEW_GROUP 改名為 NEW_GROUP
-o, --non-unique 允許使用重複的 GID
-p, --password PASSWORD 將密碼更改為(加密過的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目錄
示例
[root@linux01 ~]#
[root@linux01 ~]# groupmod -g 1008 -n g1_new g1
[root@linux01 ~]# grep g1 /etc/group /etc/gshadow
/etc/group:g1_new:x:1008:
/etc/gshadow:g1_new:!::
[root@linux01 ~]# grep g1_new /etc/group /etc/gshadow
/etc/group:g1_new:x:1008:
/etc/gshadow:g1_new:!::
說明:我們可以看到/etc/group
和/etc/group
中已經不存在g1了。
groupdel命令
概念
groupdel
命令用於刪除群組。需要注意的是,在/etc/passwd
中被使用為有效群組
的群組不能被刪除。
如:
[root@linux01 ~]# groupdel t1
groupdel:不能移除使用者“t1”的主組
語法格式
groupdel [groupname]
引數詳解
[root@linux01 ~]# groupdel -help
用法:groupdel [選項] 組
選項:
-h, --help 顯示此幫助資訊並推出
-R, --root CHROOT_DIR chroot 到的目錄
示例
[root@linux01 ~]# groupdel g1_new
[root@linux01 ~]# grep g1_new /etc/group /etc/gshadow
參考
《鳥哥的Linux私房菜》