1. 程式人生 > 實用技巧 >Linux使用者管理之usermod、chage、userdel、id命令講解

Linux使用者管理之usermod、chage、userdel、id命令講解

在上一章節中,我們學習瞭如何利用 useradd 新增一個新的使用者,利用 passwd 給使用者設定、修改密碼。但是如果手一抖不小心使用者資訊新增錯了,或者需要修改使用者資訊,該如何操作呢?

前面也講過,我們可以手動修改 /etc/passwd 以及 /etc/shadow檔案來新增一個使用者,那麼手動修改檔案當然也可以修改使用者資訊。不過今天要為大家講解的是使用Linux的 usermod 命令來修改使用者資訊。

一、修改使用者命令 usermod

Linux usermod命令可用來修改使用者帳號的各項設定。

useradd [選項] 使用者名稱

該命令常用的選項及各自的含義如下:

  • -c 修改使用者的說明資訊,對應於修改 /etc/passwd
    檔案中使用者資訊的第5個資訊
  • -d 修改使用者的主目錄,對應於修改 /etc/passwd 檔案中目標使用者資訊的個資訊
  • -e 修改使用者的失效日期,格式為 "YYYY-MM-DD",對應於修改 /etc/shadow 檔案使用者密碼資訊的第8個資訊
  • -g 修改使用者的初始組,對應於修改 /etc/passwd 檔案使用者資訊的第4資訊(GID)
  • -u 修改使用者的UID,對應於修改 /etc/passwd 檔案使用者資訊的第3個資訊(UID)
  • -G 修改使用者的附加組,其實就是把使用者加入其他使用者組,即修改 /etc/group 檔案;
  • -l 修改使用者名稱稱;
  • -L 臨時鎖定使用者(Lock)
  • -U 解鎖使用者(Unlock),和 -L 對應
  • -s 修改使用者的登入 Shell,預設是 /bin/bash

從上面的引數來看,與上一章講解的 useradd 命令的引數對比來看,這兩個命令的引數是差不多的。只不過usermod命令比useradd多了 -L-U 兩個引數。

1、比如我現在要鎖定在上一章建立的使用者testuser:

$ usermod -L testuser

鎖定使用者的本質,就是使使用者的密碼失效,使之不能登入,所以我們去看 /etc/shadow 密碼檔案,發現這個使用者的密碼位前面多了一個 ! 號:

2、解鎖使用者

既然能鎖定使用者,自然也能解鎖使用者:

$ usermod -U testuser

執行命令之後,我們再去檢視 /etc/shadow 檔案,密碼位前面的 ! 就取消了。

3、修改使用者說明

$ usermod -c "modify user descript" testuser

在修改使用者說明之前,我們先來看看現在的使用者說明是什麼:

$ grep "testuser" /etc/passwd

執行命令命令之後,我們再來看下使用者說明:

使用者說明已經被成功修改了。

4、把使用者加入新的組

比如我們要把 testuser 使用者新增到root組:

$ usermod -G root testuser

二、修改使用者的密碼狀態: chage

該命令不僅可以用來修改使用者的密碼狀態,還可以和 passwd -S命令一樣 顯示詳細的使用者密碼資訊。

chage [選項] 使用者名稱

該命令常用的選項及各自的含義如下:

  • -m:密碼可更改的最小天數,為零時代表任何時候都可以更改密碼,對應 /etc/shadow 檔案中的第4個欄位
  • -M:密碼保持有效的最大天數,對應 /etc/shadow 檔案中的第5個欄位
  • -w:使用者密碼到期前,提前收到警告資訊的天數,對應 /etc/shadow 檔案中的第6個欄位
  • -E:帳號到期的日期,過了這天,此帳號將不可用。對應 /etc/shadow 檔案中的第8個欄位
  • -d:上一次更改的日期,對應 /etc/shadow 檔案中的第3個欄位
  • -i:停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用, 對應/etc/shadow檔案中的第7個欄位
  • -l:列出使用者的詳細密碼狀態

我們先來檢視下 testuser 的密碼資訊:

$ chage -l testuser

各資訊意思如下:

  • Last password change: 最近一次密碼修改時間: 6月 18, 2020
  • Password expires:密碼過期時間:從不
  • Password inactive:密碼失效時間:從不
  • Account expires:帳戶過期時間:從不
  • Minimum number of days between password change:兩次改變密碼之間相距的最小天數:0
  • Maximum number of days between password change:兩次改變密碼之間相距的最大天數:99999
  • Number of days of warning before password expires:在密碼過期之前警告的天數:7
1、修改密碼過期時間

我可以通過如下命令修改我的密碼過期時間,設定60天后過期:

$ chage -M 60 testuser

2、設定密碼失效時間

$ chage -i 5 testuser

意思是在密碼過期後5天,密碼自動失效,這個使用者將無法登陸系統了。

3、chage命令還有個硬核功能,可以強制使用者在第一次登入後,必須先修改密碼,並利用新密碼重新登陸系統,此使用者才能正常使用

我們建立一個新的使用者 testuser2,然後設定它的密碼建立日期為1970年1月1日:

# 建立使用者
$ useradd testuser2

#設定密碼123456
$ echo "123456" | passwd --stdin testuser2

#設定密碼建立日期為1970年1月1日
$ chage -d 0 testuser2

執行完成之後,我們用testuser2使用者去登入系統,提示需要去修改密碼:

三、刪除使用者命令:userdel

userdel 命令使用很簡單,用於刪除使用者帳號的相關資料。

userdel [選項-r] 使用者名稱

若不加 -r 引數,則僅刪除使用者帳號,而不刪除使用者宿主目錄,那麼使用者目錄就會變成沒有屬主和屬組的目錄,也就是垃圾檔案。

比如分別刪除 testuser 以及 testuser2使用者:

# 刪除testuser使用者,不加-r引數
$ userdel testuser

# 刪除testuser2使用者,加-r引數
$ userdel -r testuser2

可以看到,刪除 testuser不加 -r 引數,執行命令之後,該使用者的宿主目錄保留了。

四、檢視使用者的UID和GID命令:id

id命令比較簡單,可以查詢使用者的UID、GID 和附加組的資訊:

id 使用者名稱

比如檢視 eddy 使用者的:

$ id eddy
$ uid=1009(eddy)  gid=1009  groups=1009

執行命令之後到uid(使用者ID)、gid(初始組ID), groups是使用者所在組。

現在我把eddy使用者加入root組:

大家發現該使用者的附加組資訊中多了一個root組。

今天為大家講解了如何修改Linux使用者資訊,修改使用者密碼以及如何刪除使用者。下一章繼續為大家講解Linux使用者相關的其他操作命令。