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

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命令。