1. 程式人生 > >用戶相關的文件及命令

用戶相關的文件及命令

oldboy efault 2.3 密碼 設置 用戶登錄 min sys 登錄shell

第1章 用戶管理的基本介紹

Linux system每個文件和進程,都需要對應一個用戶和組,
Linux system是通過UID和GID來識別用戶和組的。用戶名相當於人名,UID相當於×××號,系統只能識別UID。

1.1 用戶和組的關系:

一對一,一對多,多對一,多對多。

1.2 Linux system 用戶分類:

由/etc/login.defs這個文件裏面的內容來控制
超級用戶:UID為0,代表root
普通用戶:UID範圍500-65535,由超級用戶或者具有超級用戶權限的用戶創建的用戶
虛擬用戶:UID範圍1-499,存在滿足文件或者服務啟動的需要,一般都不能登錄。

第2章 用戶相關的文件說明

2.1 /etc/skel/

/etc/skel目錄是用來存放新用戶的環境變量文件的目錄,下面好多隱藏文件,當我們使用useradd指令創建新用戶的時候,這個目錄下的所有文件都會被自動的復制到新用戶的家目錄下。我們可有通過添加刪除修改這個目錄下的內容,來為新用戶提供統一的標準的初始化用戶環境

[root@oldboy_50 skel]# ls -a
.  ..  .bash_completion  .bash_logout  .bash_profile  .bashrc
[root@oldboy_50 skel]# touch 123.txt
[root@oldboy_50 skel]# useradd 122
[root@oldboy_50 skel]# ls /home/122/
123.txt
2.2 /etc/passwd
[root@oldboy_50 tmp]# cat /etc/passwd| head -n 2 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
裏面存放的是用戶的相關信息分別代表
按照冒號分隔來說:
第一段:用戶名稱 usermod -l 可以修改
第二段:密碼位,但是真實的密碼不再這個文件裏面,在/etc/shadow裏面存放著,而且是密文
第三段:用戶的UID  useradd -u 指定
第四段:用戶的GID  useradd -g指定 ,usermod -g 修改
第五段:用戶的說明信息,useradd -c添加,
第六段:指定用戶登錄時的目錄 useradd -m 指定,usermod -d 修改
第七段:登錄時使用的shell  useradd -s 指定,usermod -s 修改

2.3 /etc/shadow

存放的是給用戶密碼,有效期有關的配置

[root@oldboy_50 tmp]# tail -3 /etc/shadow
zsf:$6$4WcGshTr$RTDci2kvT9ODqJyKjLOZOHlDCHoLvOVqz66muWo5WntqVA3o4ipCao3bLEjWQ82W.CoPQSyUby81EpTT/XqRd1:17728:0:99999:7:::
haha:123123:17727:0:99999:7:::
xixi:123:17728:0:99999:7:::
按照“:”來分隔
第一段:用戶名稱
第二段:用戶的密碼。沒有就用!表示,通過passwd設置的是密文的,useradd -p指定的密碼是明文的
第三段:“密碼最後一次修改時間”,在centos裏表示從“1970年1月1日”到修改密碼的那一天經歷的天數
第四段:密碼最小修改的間隔,在最下間隔之內不能修改密碼
第五段:密碼最長多久必須更改一次密碼,在這個天數之內必須改次密碼
第六段:警告時間,密碼過期前多少天提醒
第七段:不活動時間,用戶沒有登錄活動但賬號仍能保持有效的最大天數
第八段:失效時間,密碼的生存周期,超過這個天數該賬號就不能用了。時間也是相對於“1970年1月1日”開始的,通過usermod -e來更改

2.4 /etc/group

存放給用戶組相關的

[root@oldboy_50 tmp]# grep "root" /etc/group
root:x:0:
以“:”分隔
第一段:用戶組名稱
第二段:用戶組密碼
第三段:用戶組GID
第四段:這個群組裏面所有的賬號

2.5 /etc/gshadow

[root@oldboy_50 tmp]# grep "root" /etc/gshadow
root:::
以冒號分隔:
第一段:用戶組名稱
2.6 /etc/login.defs
用來定義創建用戶時需要的一些用戶的配置信息。
PASS_MAX_DAYS   99999    密碼的有效期
PASS_MIN_DAYS   0         兩次修改密碼的最小間隔
PASS_MIN_LEN    5         密碼的最小長度
PASS_WARN_AGE   7       密碼到期前多少天提醒
創建用戶的時候最小UID和最大UID
UID_MIN                   500
UID_MAX                 60000
創建用戶的時候最小GID和最大GID
GID_MIN                   500
GID_MAX                 60000

CREATE_HOME     yes     #是否自動創建家目錄
UMASK           077     #umask值控制用戶家目錄的
# This enables userdel to remove user groups if no members exist.
#刪除用的時候要刪除用戶組 
USERGROUPS_ENAB yes

2.7 /etc/defaulst/useradd

創建用戶默認信息的配置文件

[root@oldboy_50 default]# cat useradd 
#useradd defaults file
GROUP=100    #依賴於/etc/login.defs的USERGROUPS_ENAB參數,如果為no,則此處控制
HOME=/home   用戶家目錄存在的地方
INACTIVE=-1  是否啟用賬號過期停權,-1表示不使用
EXPIRE=      賬號終止日期
SHELL=/bin/bash   創建用戶的時候默認使用的shell
SKEL=/etc/skel    創建用戶從哪個目錄拷貝初始環境到家目錄下
CREATE_MAIL_SPOOL=yes   是否創建maill文件,在/var/mail

useradd 創建用戶(修改的是/etc/passwd這個文件)

3.1 命令說明

useradd - create a new user or update default new user information
創建一個新的用戶,或者更高這個新用戶的默認信息
修改的是/etc/passwd這個文件

3.2 命令格式

useradd [options] user_name

3.3 命令選項

3.3.1.1 -m 創建家目錄,默認選項

[root@oldboy_50 ~]# useradd useradd_user
[root@oldboy_50 ~]# ll -d /home/useradd_user/
drwx------ 2 useradd_user useradd_user 4096 Jul 14 18:41 /home/useradd_user/

3.3.1.2 -g 創建用戶所屬組,如果不指定就創建一個和用戶uid,名字一樣的用戶組

[root@oldboy_50 ~]# id useradd_user 
uid=500(useradd_user) gid=500(useradd_user) groups=500(useradd_user)

3.3.1.3 -G 指定用戶的附屬組

[root@oldboy_50 tmp]# useradd 123 -G zsf   指定附屬組是
[root@oldboy_50 tmp]# grep zsf /etc/group
zsf:x:500:123
[root@oldboy_50 tmp]# id 123 
uid=502(123) gid=502(123) groups=502(123),500(zsf)

3.3.1.4 -s 指定用戶的登錄shell,如果不指定默認是/bin/bash

[root@oldboy_50 ~]# grep "useradd_" /etc/passwd
useradd_user:x:500:500::/home/useradd_user:/bin/bash

3.3.1.5 -M 創建時不創建用戶家目錄

[root@oldboy_50 ~]# useradd test_zsf -M 
[root@oldboy_50 ~]# ll -d /home/test_zsf
ls: cannot access /home/test_zsf: No such file or directory

3.3.1.6 -N 創建是不創建用戶組

3.3.1.7 -p “密碼” 創建時指定用戶密碼,在/etc/shadow文件裏面是明文顯示,不安全

[root@oldboy_50 tmp]# useradd zsf -p "123456"
3.3.1.8 -u 指定UID
[root@oldboy_50 tmp]# useradd -u 888 zsf
[root@oldboy_50 tmp]# id zsf 
uid=888(zsf) gid=888(zsf) groups=888(zsf)

3.3.1.9 -c “說明信息”,添加用戶的說明信息

修改的是/etc/passwd 第五段
[root@oldboy_50 ~]# useradd zsf -c "this is test user"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test user:/home/zsf:/bin/bash 

第4章 usermod 更改用戶屬性

4.1 命令說明

修改用戶的基本屬性,沒辦法改變正在使用的賬號信息

4.2 命令格式

usermod  [options] user_name

4.3 命令選項

4.3.1 -c 修改用戶的說明信息

[root@oldboy_50 ~]# usermod zsf -c "this is test usermod_c"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/home/zsf:/bin/bash

4.3.2 -d 修改用戶登錄時的目錄,一般默認為家目錄,作為登錄時的目錄,首先這個用戶要對這個目錄具有權限

[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/zsf:/bin/bash

4.3.3 -g 修改用戶的屬組

[root@oldboy_50 ~]# usermod -g fsz zsf 
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:503:this is test usermod_c:/zsf:/bin/bash

4.3.4 -G 修改用戶的附屬組

[root@oldboy_50 ~]# usermod -G zsf zsf
[root@oldboy_50 ~]# grep "^zsf" /etc/gshadow
zsf:!::zsf

4.3.5 -s 修改用戶登錄的shell

[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/bin/bash
[root@oldboy_50 tmp]# usermod test -s /sbin/nologin
[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/sbin/nologin

4.3.6 -L 鎖定用戶

4.3.7 -U 解鎖用戶

4.3.8 -s 修改用的登錄的shell

[root@oldboy_50 ~]# usermod zmy -s /sbin/nologin
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/sbin/nologin
4.3.9 -l 修改賬號的名稱
要更改成的名稱放在前面,賬戶的UID沒有變,只是名稱變了而已
[root@oldboy_50 ~]# usermod -l  zmy zsf
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/bin/bash
4.3.10 -e "時間" 指定用戶到那一天到期,到期後就不能登錄使用了
直接在配置文件裏面改也行,但是比較麻煩
[root@oldboy_50 tmp]# usermod -e "2018-01-01" test 
[root@oldboy_50 tmp]# grep test /etc/shadow
test:!!:17877:0:99999:7::17532:

第5章 userdel 刪除用戶

5.1 命令說明

刪除指定的用戶,以及用戶相關的文件。若不加選項只是刪除用戶的賬號,而不刪除相關的文件

5.2 命令格式

userdel [options] user_name

5.3 命令選項

5.4 -f 強制刪除,和rm的參數選項類似

5.5 -r 刪除用戶的同時,刪除與用戶相關的所有文件,刪除用戶家目錄

[root@oldboy_50 tmp]# userdel 123
[root@oldboy_50 tmp]# ll -d /home/123/
drwx------ 2 502 502 4096 Dec 12 01:18 /home/123/
[root@oldboy_50 tmp]# userdel -r test 
[root@oldboy_50 tmp]# ll -d /home/test
ls: cannot access /home/test: No such file or directory

第9章 chage 修改賬號和密碼的有效期

9.1 命令說明

用來修改賬號和密碼的有效日期,主要修改/etc/shadow

9.2 命令格式

chage [options] userName

9.3 命令選項

9.3.1 後面直接跟用戶名,交互式修改

[root@oldboy_50 tmp]# chage zsf
Changing the aging information for zsf
Enter the new value, or press ENTER for the default

-m  Minimum Password Age [0]: 7         兩次更改密碼的間隔
-M  Maximum Password Age [99999]: 20    密碼多少天之內必須更改
-d  Last Password Change (YYYY-MM-DD) [2018-07-16]: 2018-07-17   最後一次修改密碼的時間
-w  Password Expiration Warning [7]: 9     密碼過期多少天前提醒
-i  Password Inactive [-1]:               密碼到期多少天以後還不改密碼,就禁止使用
-E  Account Expiration Date (YYYY-MM-DD) [-1]: 2018-08-08   用戶賬號到期時間
9.3.2 -m 修改賬號更改密碼的間隔,相當於/ect/shadow第4段
9.3.3 -M 修改久不修改密碼的時間,相當於/ect/shadow第5段
9.3.4 -d 最後一次修改密碼的時間,相當於/etc/shadow第3段
9.3.5 -w 密碼過期前多少天提醒,相當於/ect/shadow第6段
9.3.6 -i 密碼過期多少天以後還不更改密碼,此賬號不能用,相當於/etc/shadow第7段
9.3.7 -E 賬號到期的時間,相當於/etc/shadow第8段
9.3.8 -l 列出以上這些信息
[root@oldboy_50 tmp]# chage -l zsf
1)Last password change                  : Jul 17, 2018
2)Password expires                  : Aug 06, 2018
3)Password inactive                 : never
4)Account expires                       : Aug 08, 2018
5)Minimum number of days between password change        : 7
6)Maximum number of days between password change        : 20
7)Number of days of warning before password expires : 9
說明:
1)最近一次修改密碼的時間         /ect/shadow中的第3段
2)密碼的到期時間                 
3)密碼到期後多少天不改密碼就禁用     /ect/shadow中的第7段
4)賬戶的到期時間                    /ect/shadow中的第8段
5)兩次改密碼的時間最小間隔,在這個間隔內不能再更改密碼    /ect/shadow中的第4段
6)密碼的最大改密碼間隔,在這個時間內必須改密碼           /ect/shadow中的第5段
7)密碼到期多少天之前提醒。                               /ect/shadow中的第6段

用戶相關的文件及命令