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