Linux使用者管理之useradd、passwd命令講解

九派Linux發表於2020-08-11

在上一章中,我們瞭解到了Linux使用者的每個配置檔案的內容及作用,以及透過手動修改使用者配置檔案來手動新增一個使用者。但是在實際工作過程中,我們並不是透過手動修改配置來新增使用者,而是透過使用者管理的各種命令來管理使用者。

一、新增使用者命令:useradd

Linux 系統中,可以使用 useradd 命令新建使用者,此命令的基本格式如下:

useradd [選項] 使用者名稱 -D檢視預設引數

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

  • u:UID,指定使用者的 UID,在上一章我們瞭解到普通使用者UID的範圍是500-60000之間
  • d:宿主目錄
  • c:使用者說明,對應在/etc/passwd檔案中第5部分,輸入便於理解的使用者說明即可
  • g:組名,指定使用者所屬的群組
  • G:組名,指定使用者所屬的附加群組
  • s:手工指定使用者的登入 Shell,在上一章我們瞭解到預設是/bin/bash
  • e:指定使用者的失效曰期,格式為 “YYYY-MM-DD”

比如現在要建立一個使用者,所屬root組,然後給這個使用者新增一個使用者說明:

$ useradd -g root -c "this is my test user" testuser

執行完這條命令之後,我們就在系統中建立了一個名叫testuser的使用者,我們檢視一下/etc/passwd檔案,就發現裡面已經存在一條剛新增的使用者資訊:

image

如果想使用這個使用者登入,我們再給這個使用者設定一個秘密就可以了:

$ passwd testuser

image

一般情況下,我們建立新使用者可以不手工指定任何引數內容,因為使用Linux的預設值就可以滿足我們的要求。useradd 命令在新增使用者時參考的預設值檔案主要有兩個,分別是 /etc/default/useradd/etc/login.defs。這兩個檔案上一章我們已經介紹了,這裡我們只簡單回顧一下/etc/default/useradd

$ useradd -D

image

  • GR0UP=100: 這個選項用於建立使用者的預設組,也就是說,在新增每個使用者時,使用者的初始組就是 GID 為 100 的這個使用者組。但 CentOS 並不是這樣的,而是在新增使用者時會自動建立和使用者名稱相同的組作為此使用者的初始組。也就是說這個選項並不會生效。Linux中預設使用者組有兩種機制:一種是私有使用者組機制,系統會建立一個和使用者名稱相同的使用者組作為使用者的初始組;另一種是公共使用者組機制,系統用 GID 是 100 的使用者組作為所有新建使用者的初始組。目前我們採用的是私有使用者組機制。

  • HOME=/home: 指的是使用者宿主目錄的預設位置,剛剛新建的 testuser 使用者的主目錄就為 /home/testuser/

  • INACTIVE=-1: 帳號是否過期,也就是 /etc/shadow 檔案的第七個欄位。這裡預設值是 -1,永不過期。

  • EXPIRE=: 表示密碼失效時間,也就是 /etc/shadow 檔案的第八個欄位。預設值是空,代表所有新建使用者沒有失效時間,永久有效。

  • SHELL=/bin/bash: 表示所有新建立的使用者預設 Shell 都是 /bin/bash

  • SKEL=/etc/skel: 在建立一個新使用者後,該使用者主目錄並不是空目錄,而是有 .bash_profile、.bashrc 等檔案,這些檔案都是從 /etc/skel 目錄中自動複製過來的。

  • CREATE_MAIL_SPOOL=yes: 指的是給新建使用者建立郵箱,預設是建立。也就是說,對於所有的新建使用者,系統都會新建一個郵箱,放在 /var/spool/mail/ 目錄下,和使用者名稱相同。testuser的郵箱位於 /var/spool/mail/testuser。

因此我們可以理解useradd命令建立使用者的系統內部流程應該是這樣的:

1、系統首先讀取 /etc/login.defs 和 /etc/default/useradd,根據這兩個配置檔案中定義的規則新增使用者,也就是向 /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow 檔案中新增使用者資料

2、接著系統會自動在 /etc/default/useradd 檔案設定的目錄下建立宿主目錄,最後複製 /etc/skel 目錄中的所有檔案到此目錄中。至此,一個新的使用者就建立完成了。

二、修改使用者密碼命令:passwd

在上面講解新增使用者命令的時候,其實我們已經用到了 passwd 命令,接下來我們詳細詳解一下這個命令。

此命令的基本格式如下:

passwd [選項] 使用者名稱

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

  • d:刪除密碼資訊
  • w:密碼要到期提前警告的天數,對應於 /etc/shadow 檔案中各行的第6個欄位
  • S:顯示密碼資訊,也就是 /etc/shadow 檔案中此使用者密碼的內容,僅 root 使用者可用
  • l:停止賬號使用,也就是使密碼失效,僅root使用者可用
  • u:解鎖使用者,與上面的 l 引數對應,僅root使用者可用
  • x: 設定使用者的密碼有效期,對應 /etc/shadow 檔案中各行密碼的第 5 個欄位
  • n:設定該使用者修改密碼後,多長時間不能再次修改密碼,對應於 /etc/shadow 檔案中各行密碼的第4個欄位
1、比如設定剛新增的使用者 testuser 的密碼:
$ passwd testuser
$ New password:  #輸入密碼,這裡不會明文顯示
$ Retype new password:  #再次輸入密碼
$ passwd:all authentication tokens updated successfully. #提示密碼修改成功
2、顯示使用者的密碼資訊:

$ passwd -S testuser #注意這裡的引數 S 是大寫

image

testuser PS 2020-06-17 0 99999 7 -1 (Password set, SHA512 crypt.)

# 使用者名稱:密碼:設定時間:密碼修改間隔時間(0)密碼有效期(99999)警告時間(7)密碼不失效(-1)

這裡的密碼修改間隔時間、密碼有效期、警告時間、密碼寬限時間其實來源於配置檔案 /etc/shadow 的設定。這裡顯示密碼加密方式為SHA512,從CentOS 6.3 加密方式已經從 MD5 加密更新到 SHA512

3、鎖定使用者

$ passwd -l testuser

image

鎖定該使用者之後,我們檢視使用者的密碼資訊,發現資訊最後的提示是 Password locked.,很清楚的顯示密碼已經被鎖定。系統鎖定使用者的的處理方式是什麼呢?我們檢視下/etc/shadow檔案看下:

$ grep "testuser" /etc/shadow

image

大家仔細看下,在密碼位前面加入了!!讓密碼失效而已。

4、解鎖使用者

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

$ passwd -u testuser

image

執行命令解鎖使用者之後,使用者狀態就恢復正常了。

今天為大家講解了Linux使用者管理最基礎的兩個命令,一個是新增使用者、一個是修改使用者密碼。下一章繼續為大家講解Linux使用者管理的其他命令。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章