Linux學習之使用者和使用者組管理-使用者管理命令-useradd
三、使用者管理命令
1、使用者新增命令 useradd
1)
useradd 命令格式:
useradd 【選項】使用者名稱
選項:
-u UID : 手工指定使用者的UID號
-d 家目錄: 手工指定使用者的家目錄 directory 預設會在/home下,通過-d可以修改指定的家目錄的位置等資訊
-c 使用者說明:手工指定使用者的說明
-g 組名: 手工指定使用者的初始值 每個使用者只有一個初始組
-G 組名: 指定使用者的附加組 每個使用者可以通過分號,指定新增到多個組中
-s shell : 手工指定使用者的登入shell。預設是 /bin/bash
但是如果使用手工更改某些資訊,需要為其手工指定相應的許可權等,否則部分功能受限。
2)、新增一個使用者,併為其設定密碼,之後查詢該使用者預設新增的其他資訊
新增一個使用者,但需要root許可權才能新增新使用者
[[email protected] ~]# useradd sc
為新使用者設定密碼
[[email protected] ~]# passwd sc
更改使用者 sc 的密碼 。
新的 密碼:
無效的密碼: 過於簡單化/系統化
無效的密碼: 過於簡單
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
[[email protected] ~]#
[[email protected] ~]#
鑑於已經添加了使用者,通過grep命令搜尋下,一個普通使用者建立完成時,預設會擁有的一些屬性特徵
比如檢視密碼 shell指令碼啟動位置 影子檔案 所屬組 所屬組的shadow檔案 家目錄 郵箱等
[[email protected] ~]# grep sc /etc/passwd
sc:x:501:501::/home/sc:/bin/bash
[[email protected] ~]# grep sc /etc/sh
shadow shadow- shells
[[email protected] ~]# grep sc /etc/shadow
sc:$6$zq5gkudC$QAdnnhSfvbFnjIfwvlvsOjEvngBva3AOhissNXM.36Ccw.vwcUTERDuMyintbciClI14vPq/1v6Ey1S9fQ.9J0:17867:0:99999:7:::
[[email protected] ~]# grep sc /etc/group
sc:x:501:
[[email protected] ~]# grep sc /etc/gshadow
sc:!::
[[email protected] ~]# ll -d /home/sc/
drwx------. 4 sc sc 4096 12月 2 22:13 /home/sc/
[[email protected] ~]# ll /var/spool/mail/sc
-rw-rw----. 1 sc mail 0 12月 2 22:13 /var/spool/mail/sc
[[email protected] ~]#
3)指定選項新增使用者
》useradd -u 550 -G root,bin -d /home/lampl \
-c "test user" -s /bin/bash sc
注意上方命令中,第一行末尾有個 \ ,該符號用於換行
所以也可直接寫成一行:
》useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
[[email protected] ~]# useradd -u 550 -G root,bin -d /home/lampl -c "test user" -s /bin/bash sc
用法:useradd [選項] 登入
useradd -D
useradd -D [選項]
選項:
-b, --base-dir BASE_DIR 新賬戶的主目錄的基目錄
-c, --comment COMMENT 新賬戶的 GECOS 欄位
-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
4、使用者預設值配置檔案
[[email protected] ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 #預設使用者組
HOME=/home #使用者家目錄
INACTIVE=-1 #密碼過期寬限天數(shadow檔案7欄位)
EXPIRE= # 密碼失效
SHELL=/bin/bash #預設shell
SKEL=/etc/skel #模板目錄
CREATE_MAIL_SPOOL=yes #是否建立郵箱
~
~
以上資訊只是標記了shadow檔案中兩項,還有幾項是在使用者預設資訊另一個檔案,
[[email protected] home]# vim /etc/lo
localtime login.defs logrotate.conf logrotate.d/
[[email protected] home]# vim /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
如上中:
》PASS_MAX_DAYS 9999 #密碼有效期(5)
》PASS_MIN_DAYS 0 #密碼修改間隔(4)
》PASS_MIN_LEN 5 #密碼最小5位(PAM)
》PASS_WARN_AGE 7 #密碼到期警告(6)
》UID_MIN 500 #最小和最大UID範圍
》GID_MAX 60000
》ENCRYPT_METHOD SHA512 #加密模式
以上檔案更改後,shadow檔案的預設建立的資訊值為如上值
2、修改使用者密碼 passwd
passwd命令格式
passwd 【選項】使用者名稱
選項:
-S 查詢使用者密碼的密碼狀態。僅root使用者可用
-l 暫時鎖定使用者。僅root使用者可用。鎖定使用者後,使用者無法登入。通過檢視/etc/shadow檔案會發現被鎖定的使用者密碼標誌值開頭以! 開始。
如果通過手工更改shadow檔案的方式解除鎖定感覺麻煩,可以通過解鎖選項解鎖某個使用者。
-u 解鎖使用者。 僅root使用者可用
--stdin 可以通過管道符輸出的資料作為使用者的密碼
注意:普通使用者的密碼必須符合一定的密碼規則,即密碼複雜一點,以上命令用於特殊情況,常見使用不多。
2)使用字串作為使用者的密碼
echo "123" | passwd --stdin sc 即該命令可以把sc使用者的密碼設定為接收到的輸入字串123
該方法主要用於shell進行程式設計,用於使用者批量新增等。
3、修改使用者資訊 usermod
修改使用者密碼狀態 chage 特別注意該拼寫
注意:useradd 命令等使用的選項usermod也支援,因為useradd和usermod的區別主要是
使用的時間不同,useradd用於使用者剛新增時,usermod用於使用者已存在時,配置的修改。
useradd 【選項】使用者名稱
選項:
-u UID: 修改使用者的UID號
-c 使用者說明:修改使用者的說明資訊
-G 組名 : 臨時使用者的附加資訊
-L : 臨時鎖定使用者(lock)
-U : 解除使用者鎖定(Unlock)
鎖定和解鎖使用者的命令隨便哪個都可。
2)修改使用者密碼狀態chage
chage 【選項】使用者名稱
選項:
-l :列出使用者的詳細密碼狀態
-d 日期: 修改密碼最後一次更改日期(shadow 3欄位)
-m 天數: 兩次密碼修改間隔(shadow 4欄位)
-M天數: 密碼有效期(shadow 5欄位)
-W天數:密碼過期前警告天數(shadow 6欄位)
-I 天數 : 密碼過後寬限天數(shadow 7欄位)
-E 日期 : 賬號失效時間 (shadow 8欄位)
示例:
chage -d 0 sc
#以上命令其實是把密碼修改日期歸0了(shadow第三欄位),這樣使用者一登入就要修改密碼。
注意:伺服器上給普通使用者登入密碼設定-d選項為0時,要求普通使用者一登入就必須更改密碼。
該命令也是chage最常用的命令。
4、刪除使用者 userdel
1)userdel 【-r】使用者名稱
選項:
-r 刪除使用者的同時刪除使用者家目錄
注意:如果刪除使用者時不刪除其家目錄,則其家目錄將會成為無任何內容指向的垃圾檔案
擴充套件:手工刪除使用者
vi /etc/passwd 先根據密碼,通過加密演算法,找到該值,然後刪除,但基本很難
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/使用者名稱
rm -rf /home/使用者名稱
如何驗證某個使用者是否已經完全刪除?
答:只要再次新增該使用者,如果能夠新增成功無提示,說明已經完全刪除(當然該工作只是練習用)
以上手工刪除的方式只是用於熟悉使用者資訊位置,更好的理解相應內容
常用刪除,就是使用userdel -r 使用者名稱
2)檢視使用者ID
id命令:
id 使用者名稱
5、使用者切換命令 su
切換使用者身份su
命令:
su 【選項】使用者名稱
選項:
- :選項只使用“ - ”代表連帶使用者的環境變數一起切換
-c :僅執行一次命令,而不切換使用者身份
[[email protected] /]$ su - root
密碼:root對應密碼
[[email protected] /]$
表示完全將該使用者的環境為root,如果從普通使用者切換為超級使用者,或者
切換為其他使用者,則必須輸入相應密碼
如果從超級使用者切換為普通使用者,則不需要輸入普通使用者的密碼
su 使用者名稱
該命令常用於臨時使用root身份,呼叫某個只有root使用者才有許可權呼叫的命令。
6、新增使用者組命令
1)groupadd 【選項】 組名
選項:
-g GID: 指定組ID
[[email protected] /]$ groupadd tg
-bash: /usr/sbin/groupadd: 許可權不夠
[[email protected] /]$ su groupadd tg
su: 使用者groupadd 不存在
[[email protected] /]$ su root
密碼:
[[email protected] /]# groupadd tg
[[email protected] /]# vim /etc/group #檢視使用者組資訊
2)修改使用者組
groupmod 【選項】組名
選項:
-g GID :修改組ID
-n 新組名: 修改組名
示例:
groupmod -n testgrp group1
檢視修改後的效果
vim /etc/group
注意:建議不更改使用者組,防止對改組不熟悉,造成某些使用者等的系統資訊丟失等
3)刪除使用者組
groupdel 組名
以上命令即可刪除某個使用者組
如 :groupdel tg
萬一這個組中有使用者,刪除時如果該組中有初始組使用者,則該組無法刪除,因為該初始使用者將沒有初始使用者組,所以不能刪除;
如果該組中有附加組使用者時,則該組可以刪除。
即刪除某個使用者組時,無法刪除一個存在初始使用者的使用者組。
4)把使用者新增入組或從組中刪除
gpasswd 【選項】組名
選項:
-a 使用者名稱 :把使用者加入組
-d 使用者名稱 :把使用者從組中刪除