1. 程式人生 > >Linux學習之使用者和使用者組管理-使用者管理命令-useradd

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   使用者名稱  :把使用者從組中刪除