在上一章中,我們了解到了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
文件,就發現里面已經存在一條剛添加的用戶信息:
如果想使用這個用戶登錄,我們再給這個用戶設置一個秘密就可以了:
$ passwd testuser
一般情況下,我們創建新用戶可以不手工指定任何參數內容,因為使用Linux的默認值就可以滿足我們的要求。useradd
命令在添加用戶時參考的默認值文件主要有兩個,分別是 /etc/default/useradd
和 /etc/login.defs
。這兩個文件上一章我們已經介紹了,這里我們只簡單回顧一下/etc/default/useradd
:
$ useradd -D
-
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
是大寫
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
鎖定該用戶之后,我們查看用戶的密碼信息,發現信息最后的提示是 Password locked.
,很清楚的顯示密碼已經被鎖定。系統鎖定用戶的的處理方式是什么呢?我們查看下/etc/shadow
文件看下:
$ grep "testuser" /etc/shadow
大家仔細看下,在密碼位前面加入了!!
讓密碼失效而已。
4、解鎖用戶
既然能夠鎖定用戶,自然也能解鎖用戶:
$ passwd -u testuser
執行命令解鎖用戶之后,用戶狀態就恢復正常了。
今天為大家講解了Linux用戶管理最基礎的兩個命令,一個是添加用戶、一個是修改用戶密碼。下一章繼續為大家講解Linux用戶管理的其他命令。