1. 程式人生 > 實用技巧 >Linux—賬號管理及命令使用詳解

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:其他人這個概念比較好理解,相對於本群組而言,跟其無關的都是其他人。

關係

  1. 管家相當於root使用者,所有幢都可以訪問;
  2. 1幢101、1幢201、1幢301都是User,是使用者,都有各自單獨的家(家目錄);
  3. 1幢和2幢都是Group,裡面的1幢101、1幢201、1幢301等相當於使用者,在一幢可以共享電梯的使用;
  4. 對於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顯示對應賬號和群組名稱,從而判斷自己的擁有者和群組。

使用者賬號

賬號登入流程

  1. 在Linux系統中輸入主機ip,賬號和密碼;
  2. 系統從/etc/passwd中尋找輸入的賬號,若沒有找到,則退出;否則,從/etc/passwd以及/etc/group將該賬號對應的UID與GID讀取出來,同時也會讀取使用者家目錄及shell設定;
  3. 系統進入/etc/shadow中找到對應賬號與UID,核對輸入密碼;
  4. 若賬號和密碼都核對無誤,則進入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系統管理員賬戶資訊。

  1. 賬號名稱:登入賬號的名稱,與UID對應。

  2. 密碼:早起Unix系統密碼放置在改欄位中,後因安全問題,放置密碼資料被竊取,改放到/etc/shadow中,所以這邊顯示為x

  3. UID:賬號的使用者識別碼。

id範圍 id對應使用者的特性
0 (系統管理員) UID=0時,表示該賬號為root許可權(系統管理員),普通賬戶的UID改為0即擁有root許可權,但不建議修改。
1~999(系統賬號) UID=1~999時,即為系統保留的系統賬號,用於更小的許可權去作業系統中的服務。
1000~60000(可登陸賬號) UID=1000~60000時,表示一般使用者的賬號。
  1. GID:該資訊與/etc/group相關聯,下面會闡述該目錄內容的結構。

  2. 使用者資訊說明欄:解釋說明作用,一般配合finger使用。

  3. 主資料夾:使用者家目錄,一般useradd userA後,會自動為userA使用者建立/home/userA使用者家目錄,rott的使用者家目錄在/root下。

  4. 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:::
  1. 賬號名稱:與/etc/passwd對應,賬號名稱。

  2. 密碼:存放加密的密碼。

  3. 最近更改密碼的累積天數:該欄位記錄的是變更密碼的那天日期,從1970年1月1日作為1開始累積,這個累積的天數可以通過程式碼進行計算。

echo $(($(date --date="2020/09/03" +%s)/86400+1))

  其中,86400是一天的秒數,+1是為了補齊1970年1月1日那天。

  1. 密碼不可被更改的天數:該欄位限制了密碼從最後一次變更後,需要經過多少天才可以進行變更。若為0,則表示無限制,可以隨時更改密碼。

  2. 密碼需要重新更改的天數:該欄位限制了密碼從最後一次變更後,需要經過多少天就應該再次變更。若為99999,表示273年,也就是無限制。

  3. 密碼需要更改前警告提示的天數:賬號密碼有效期快到的時候,會提前進行提示警告。

  4. 密碼失效時間:密碼更新時間(第3欄位)+重新變更時間(第5欄位)為有效期,過期後,還沒有更新密碼,密碼就會過期。

  5. 賬號失效日期:類似於第三個欄位進行累計失效日期計算,過期後,賬號無法使用。

  6. 保留:保留欄位。

群組

  我們在上述的/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:
  1. 群組名稱:群組的名稱,與GID對應。

  2. 群組密碼:群組的密碼,通常給群組管理員使用,一般不設定,密碼不會再此顯示,會在/etc/gshadow中顯示,在此只會顯示x

  3. GID:群組的ID,也就是/etc/passwd第四個欄位的GID。

  4. 群組支援的其他賬號名稱:一個賬號可以加入多個群組,當其他賬戶加入該群組後,會填入到該欄位中,逗號隔開。

/etc/gshadow

  /etc/gshadow是存放群組的密碼等資訊;

[root@linux01 ~]#  head -n 5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
  1. 群組名稱:對應賬戶的群組名稱;

  2. 群組密碼:群去的密碼;若開頭為!則表示無合法密碼,無群組管理員;

  3. 群組管理員賬號:群組管理員的賬號名稱

  4. 有加入該群組支援的所屬賬號:群組下所支援的賬號,與/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是指定有效群組。

  1. 我們可以在/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
  1. 我們也可以登入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。

  1. 我們可以通過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
  1. GROUP=100:新建賬號的初始群組使用GID為100(群組為users);但是CentOS是私有群組機制,所以系統會建立一個與賬號一樣的群組給使用者作為初始群組,該系統不會參考100數值。只有遵守公有群組機制的系統才會參考該數值。
  2. HOME=/home:使用者主資料夾的基準目錄(basedir,使用者家目錄),使用者的主資料夾通常就是與賬號同名的目錄,目錄將會拼接在該設定值的目錄後,所以一般使用者家目錄為/home/user_name格式。
  3. INACTIVE=-1:密碼過期後是否會失效,-1代表密碼永遠不會失效,若為其他數值n,則表示過期n天后失效。該值對應在/etc/shadow中的第7個欄位。
  4. EXPIRE=:賬號失效日期,對應/etc/shadow中的第8個欄位,可以設定賬號在某個日期後是失效,而不管密碼是否失效。預設不設定。
  5. SHELL=/bin/bash:預設使用的shell程式檔名
  6. 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
  1. 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:!::

說明:

  1. /etc/passwd中建立一行與賬號相關的資料,包含了UID、GID、使用者家目錄等資訊;
  2. /etc/shadow中建立一行與賬號密碼相關的資料,如果沒有指定密碼,則無密碼填入;若需要指定密碼,則需要使用passwd user_name命令來指定密碼;
  3. /etc/group中建立一行與賬號群組相關的資料,加入一個與賬號名稱一樣的群組名稱;
  4. /etc/gshadow中建立一行與賬號群組密碼相關的資料,包含群組名稱、群組管理密碼等資訊;
  5. /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:::

說明:

  1. -u是指定了賬號的UID,我們可以看到/etc/passwd中的第3欄的UID是我們指定的1009;
  2. -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:!::

說明:

  1. -r引數代表建立一個系統賬號;
  2. /etc/passwd中的第3欄看到數字為996,符合規定,1000及以後的號為一般賬號,1000之前的號為系統賬號;
  3. 由於系統賬號主要用於進行執行系統所需服務的許可權設定,所以系統賬號預設沒有建立使用者家目錄。

useradd命令總結

  useradd命令執行後,會涉及到以下檔案或目錄的變動:

  1. 使用者賬號和密碼相關檔案:/etc/passwd,/etc/shadow
  2. 使用者群組和密碼相關檔案:/etc/group,/etc/gshadow
  3. 使用者的主資料夾(使用者家目錄):/home/賬號名稱

passwd命令

概述

  passwd命令是修改賬號密碼的命令。

語法格式

  1. root或者賬號自己使用:passwd [--stdin] [賬號名稱]
  2. 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

密碼一般要求

  1. 密碼不能和賬號同名;
  2. 密碼儘量不堯選字典中的字元;
  3. 密碼需要超過8個字元;
  4. 密碼不堯使用個人資訊(身份證、手機號、生日等);
  5. 密碼不堯使用簡單的關係式,如1+2=3;
  6. 密碼計量使用大小寫字元數字、特殊字元($,_,-等)組合。

示例

示例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命令用於刪除使用者賬號相關資料。主要涉及如下方面:

  1. 使用者賬號/密碼相關資料:/etc/passwd, /etc/shadow
  2. 使用者群組相關資料:/etc/group, /etc/gshadow
  3. 使用者個人檔案資料:/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私房菜》