1、新增使用者(useradd命令)
(1)useradd命令
[root@localhost ~]# useradd [選項] 使用者名稱
一般我們不加任何選項,都使用預設值建立使用者即可。(推薦不使用任何選項)
下邊可以瞭解一下常用選項。
選項:
-u
:550。指定使用者的UID。
普通使用者預設從500開始往後排,依次遞增,這個選項是給使用者指定一個UID。但從這之後再建立新的使用者的UID,預設從551開始,依次遞增。之前會產生一些沒有用到的UID。(一般不會用此選項)。-g
:組名。指定初始組,不推薦手工指定。預設就好。
命令:useradd -g 組名 使用者名稱
-G
:組名。指定附加組,把使用者加入組,使用附加組。
命令:useradd -G 組名 使用者名稱
-c
:說明。新增說明。(說明中如果有空格,需要把整個說明用雙引號括起來。)-d
:加目錄。手工指定家目錄,目錄不需要事先建立。(預設建立的位置就很好)-s
:shell/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
命令結果如下圖所示:
下面挨個解釋下:
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=500
和UID_MAX=60000
:
這兩行代表建立使用者時,最小UID和最大的UID的範圍。我們2.6.x
核心開始,Linux使用者的UID最大可以支援2^32
這麼多,但是真正使用時最大範圍是60000就足夠使用了,不夠了在開。
還要注意,如果我手工指定了一個使用者的UID是550,那麼下一個建立的使用者的UID就會從551開始,哪怕500-549
之間的UID沒有使用(小於500的UID是給偽使用者預留的)。GID_MIN=500
和GID_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
再次登陸,一上來就會要求你修改密碼。
如下圖所示:
先輸入舊密碼,在輸入新密碼,新密碼要求符合規範。然後會登出,需要你重新登陸。
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
命令。