『學了就忘』Linux使用者管理 — 51、使用者管理相關命令

繁華似錦Fighting發表於2021-11-26

1、新增使用者(useradd命令)

(1)useradd命令

[root@localhost ~]# useradd [選項] 使用者名稱

一般我們不加任何選項,都使用預設值建立使用者即可。(推薦不使用任何選項)

下邊可以瞭解一下常用選項。

選項:

  • -u:550。指定使用者的UID。
    普通使用者預設從500開始往後排,依次遞增,這個選項是給使用者指定一個UID。但從這之後再建立新的使用者的UID,預設從551開始,依次遞增。之前會產生一些沒有用到的UID。(一般不會用此選項)。
  • -g:組名。指定初始組,不推薦手工指定。預設就好。
    命令:useradd -g 組名 使用者名稱
  • -G:組名。指定附加組,把使用者加入組,使用附加組。
    命令:useradd -G 組名 使用者名稱
  • -c:說明。新增說明。(說明中如果有空格,需要把整個說明用雙引號括起來。)
  • -d:加目錄。手工指定家目錄,目錄不需要事先建立。(預設建立的位置就很好)
  • -sshell/bin/bash。(這個就是/etc/passwd 檔案中每一行最後的一列)

注意

  • 執行完使用者新增命令useradd 選項 使用者名稱之後,一定要設定這個使用者設定密碼。
  • 新增完使用者不設定密碼,在/etc/passwd 檔案中,資訊是正常的,但是在/etc/shadow檔案中,密碼的位置是!!,表示無法登陸。
  • 設定密碼命令為passwd 使用者名稱,然後輸入兩次密碼即可。

(2)useradd預設值

使用useradd命令新增使用者時,參考的預設值檔案主要有兩個,分別是/etc/default/useradd檔案和
/etc/login.defs檔案。

1)/etc/default/useradd檔案

[root@localhost ~]# vi /etc/default/useradd

命令結果如下圖所示:

image

下面挨個解釋下:

  • GROUP=100
    這個選項是建立使用者的預設組,也就是說新增每個使用者時,使用者的初始組就是GID為100的這個使用者組。但是這個機制沒有采用,目前我們採用的機制私有使用者組機制,也就是初始組預設和使用者名稱同名。(這選項等於沒起作用)
  • HOME=/home
    這個選項是使用者的家目錄的預設位置,所以所有的新建使用者的家目錄預設都在/home/下。
  • INACTIVE=-1
    這個選項就是密碼過期後的寬限天數,也就是/etc/shadow檔案的第七個欄位。
    單位是天數,比如10代表密碼過期後10天后失效;如果是0,代表密碼過期後立即失效;如果是-1,則代表密碼永遠不會失效。這裡預設值是-1,所以所有新建立的使用者密碼都不會失效。
    (對修改完之後,建立的新使用者生效。)
  • EXPIRE=
    這個選項是密碼失效時間,也就是/etc/shadow檔案的第八個欄位。
    也就說使用者到達這個日期後就會直接失效。當然這裡也是使用時間戳來表示日期的。預設值是空,所以所有新建使用者沒有失效時間,永久有效。
  • SHELL=/bin/bash
    這個選項是使用者的預設shell的。/bin/bash是Linux的標誌shell,所以所有新建立的使用者預設都具備shell賦予的許可權。
  • SKEL=/etc/skel
    這個選項就是定義使用者的模板目錄的位置,/etc/skel/目錄中的檔案都會複製到新建使用者的家目錄當中。
  • CREATE_MAIL_SPOOL=yes
    這個選項定義是否給新建使用者建立郵箱,預設是建立,也就是說所有的新建使用者系統都會新建一個郵箱,放在/var/spoo1/mail/下和使用者名稱相同。

2)/etc/login.defs檔案

下面是檔案內容:

# 這個檔案有些註釋,把註釋刪除掉,檔案內容就變成下面這個樣子了
[root@localhost ~]# vi /etc/login. defs
MAIL_DIR   /var/spool/mail 

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN     5
PASS_WARN_AGE   7

UID_MIN    500
UID_MAX    60000


GID_MIN    500
GID_MAX    60000


CREATE_HOME    yes

UMASK    077

USERGROUPS_ENAB  yes
ENCRYPT_METHOD  SHA512

我們一行一行解釋下檔案內容:

  • MAIL_DIR=/var/spool/mail
    這行指定了新建使用者的預設郵箱位置。比如user1使用者的郵箱是就是/var/spool/ma il/user1
  • PASS_MAX_DAYS=99999
    這行指定的是密碼的有效期,也就是/etc/shadow檔案的第五欄位。代表多少天之後必須修改密碼,預設值是99999。
  • PASS_MIN_DAYS=0
    這行指定的是兩次密碼的修改間隔時間,也就是/etc/shadow檔案的第四欄位。代表第一次修改密碼之後,幾天後才能再次修改密碼。預設值是0。
  • PASS_MIN_LEN=5
    這行代表密碼的最小長度,預設不小於5位。但是我們現在使用者登入時驗證已經被PAM模組取代(更先進一些),所以這個選項並不生效。
  • PASS_WARN_AGE=7
    這行代表密碼修改到期前的警告天數,也就是/etc/shadow檔案的第六欄位。代表密碼到底有效期前多少天開始進行警告提醒,預設值是7天。
  • UID_MIN=500UID_MAX=60000
    這兩行代表建立使用者時,最小UID和最大的UID的範圍。我們2.6.x核心開始,Linux使用者的UID最大可以支援2^32這麼多,但是真正使用時最大範圍是60000就足夠使用了,不夠了在開。
    還要注意,如果我手工指定了一個使用者的UID是550,那麼下一個建立的使用者的UID就會從551開始,哪怕500-549之間的UID沒有使用(小於500的UID是給偽使用者預留的)。
  • GID_MIN=500GID_MAX 60000
    這兩行指定了GID的最小值和最大值之間的範圍。
  • CREATE_HOME=yes
    這行指定建立使用者時是否自動建立使用者的家目錄,預設是建立。
  • UMASK=077
    077這行指定的是建立的使用者家目錄的預設許可權,因為umask值是077,所以新建的使用者家目錄的許可權是700(算完之後就是700,注意這個家目錄的umask值是本檔案中單獨定義的,和普通檔案的umask值互相獨立,該選項無需改動,這樣就很好)。
  • USERGROUPS_ENAB=yes
    這行指定的是使用命令userdel刪除使用者時,是否刪除使用者的初始組,預設是刪除。
  • ENCRYPT_METHOD=SHA512
    這行指定Linux使用者的密碼使用SHA512雜湊模式加密,這是新的密碼加密模式,原先的Linux只能用DES或MD5方式加密。

3)總結

以上命令基本上不用改動,記住檔案的作用,瞭解就好。

2、設定密碼(passwd命令)

(1)命令格式

[root@localhost ~]# passwd [選項] 使用者名稱

選項:

  • -l:暫時鎖定使用者。該選項僅root使用者可用。
    其實就是在/etc/shadow檔案中的密碼位置,最前邊加入了兩個!。(手工修改也行,同樣的效果)
  • -u:解鎖使用者。該選項僅root使用者可用。
    /etc/shadow檔案中的密碼位置,取消最前邊的兩個!
  • --stdin:可以將通過管道符輸出的資料作為使用者的密碼。
    也就是說,可以用輸出的字串作為密碼。
    主要在批量新增使用者時使用。

示例:

# passwd直接回車代表修改當前使用者的密碼
[root@localhost ~]# passwd

# 注意:普通使用者修改自己的密碼,密碼要符合規範,如果不符合規範修改不了。

(2)可以使用字串作為密碼

# 更改使用者user1的密碼。
[root@localhost ~]# echo "123" | passwd --stdin user1

# 說明:
# echo "123" 輸出123字串,通過管道符交給passwd,
# 由--stdin選項來支援把passwd收到的密碼,設定給user1使用者。

注意:--stdin選項來設定密碼,不用再輸入現有密碼和兩次新密碼的互動了,非常適合批量新增使用者時使用。

(3)實練

當我批量建立完使用者之後,密碼一般都是統一的一個預設值,我需要使用者登陸時,第一時間就要修改密碼,需要怎麼做?

可以通過命令,把密碼修改日期歸零(/etc/shadow檔案第3欄位),這樣使用者一登陸就要修改密碼。

提示:因為修改密碼的時候為0,證明該使用者從1970年到現在一次密碼都沒有修改過,Linux系統會認為這是不對的,需要你馬上進行修改密碼。

例如:

[root@localhost ~]# chage -d 0 user1

再次登陸,一上來就會要求你修改密碼。

如下圖所示:

image

先輸入舊密碼,在輸入新密碼,新密碼要求符合規範。然後會登出,需要你重新登陸。

linux設定密碼規則

  • 1.使用數字,小寫字母,大寫字母,特殊符號中的三種。
  • 2.密碼長度足夠長,大於7位。

3、使用者資訊修改(usermod命令)

usermod命令是修改已經新增的使用者的資訊的。

(1)命令格式

命令如下:

[root@localhost ~]# usermod [選項] 使用者名稱

選項:

  • -u:UID。修改使用者的UID。
  • -d:家目錄。修改使用者的家目錄。家目錄必須寫絕對路徑。
  • -c:使用者說明。修改使用者的說明資訊,就是/etc/passwd檔案的第五個欄位。
  • -g:組名。修改使用者的初始組,就是/etc/passwd檔案的第四個欄位。
  • -G:組名。修改使用者的附加組,其實就是把使用者加入其他使用者組。
  • -s :shell。修改使用者的登入Shell,預設是/bin/bash
  • -e:日期。修改使用者的失效日期,格式為YYY-MM-DD,也就是/etc/shadow檔案的第八個欄位。
  • -L:臨時鎖定使用者(Lock)。
  • -U:解鎖使用者(Unlock)。

說明:

你仔細對比一下,usermod命令和useradd命令的選項基本一樣。

  • useradd命令是在建立新使用者的同時,指定屬性。
  • usermod命令是修改系統中已存在使用者的屬性。

這些選項一般也不建議修改,常用的也就-G選項。

如下示例:

[root@localhost ~]# usermod -G user1(組) user2(使用者)

(2)使用者可以修改使用者名稱嗎?

當然可以,但是不建議修改使用者名稱。

因為是修改了使用者名稱,而初始組等與使用者名稱對應的資訊都沒有修改,以後用起來及其痛苦。

建議刪除舊使用者,再建立新使用者!

# 修改使用者名稱
[root@localhost ~]# usermod -l 新名 舊名

4、刪除使用者(userdel命令)

[root@localhost ~]# userdel [-r] 使用者名稱

選項:

  • -r:在刪除使用者的同時刪除使用者的家目錄。(該選項一般為必選項)

5、切換使用者身份(su命令)

su命令可以切換成不同的使用者身份(包括切換成root使用者)。

注意:超級使用者切換成任何其他普通使用者都不用密碼。

命令格式如下:

[root@localhost ~]# su [選項] 使用者名稱

選項:

  • -:選項只使用-代表連帶使用者的環境變數一起切換。
  • -c命令:僅執行一次命令,而不切換使用者身份。

注意:-絕不能省略,它代表切換使用者身份時,使用者的環境變數也要切換成新使用者的環境變數(使用者身份完整切換)。

示例:

# su切換使用者身份
[user1@localhost ~]$ su - user2
密碼:
[user2@localhost user1]$ whoami
user2

# 退出身份切換
[user2@localhost user1]$ exit
exit
[user1@localhost ~]$ whoami
user1

提示:檢視系統生效的變數用env命令。

相關文章