No.22 用戶賬號管理和組賬號管理
賬戶類型:用戶賬戶,系統賬戶。
識別方式:UID、GID
用戶賬號:
超級用戶:root、系統用戶、普通用戶。
組賬號:用戶區分權限,不用於登錄。基本組(私有組)、附加組(公有組)。
UID:
root:0
系統用戶:1-499
普通用戶:500-60000
賬號數據的存放:
存儲在本機的磁盤上,本地賬戶。
存儲在網絡上的專門的服務器上,網絡賬戶。
本地賬戶的數據文件:
/etc/passwd
保存用戶賬號的基本信息,每個用戶記錄一行,使用冒號分割字段。
字段 1:用戶賬號的名稱
字段 2:密碼字符串或占位符
字段 3:用戶賬戶的 UID
字段 4:所屬基本組的 UID
字段 5:用戶全名
字段 6:宿主目錄
字段 7:登錄 Shell 程序的路徑
/etc/shadow :
保存密碼字符串、有效期等信息,每個用戶記錄,使用冒號分割字段。
字段 1:用戶賬號的名稱
字段 2:加密後的密碼字符串
字段 3:上次修改密碼的時間
字段 4:密碼的最短有效天數,默認是 0
字段 5:密碼的最長有效天數,默認是 99999
字段 6:密碼過期前的警告天數,默認是 7
字段 7:密碼過期後多少天禁用此賬戶
字段 8:賬號失效時間,默認值是空的
字段 9:保留字段(未使用)
本地組賬號的數據文件:
/etc/group :
保存組賬號的基本信息,每一個記錄一行,使用冒號分割。
字段 1:組賬號的名稱
字段 2:密碼占位符
字段 3:組賬號的 GID 號
字段
/etc/gshadow :
保存組賬號的管理信息,每一個記錄一行,使用冒號分割。
字段 1:組賬號的名稱
字段 2:加密後的密碼字符串
字段 3:本地的管理員列表
字段 4:本地的成員用戶列表
添加用戶:useradd
-u:指定UID
-d:指定宿主目錄,缺省為/home/用戶名
-e:指定賬號時間:禁用用戶賬戶的時間,格式:YYYY-MM-DD
-g或-G:指定所屬的基本組或附加組。
-M:不為用戶建立並初始化宿主目錄。
-s:指定用戶登錄shell環境。
(2) 設置密碼:passwd
-d:清空用戶密碼
-l:鎖定用戶賬號
-S:查看用戶賬戶的狀態是否被鎖定
-u:鎖定用戶賬戶
--stdin:從標準輸入獲取
[root@node0 nginx-1.8.0]# useradd tom # 創建用戶
[root@node0 nginx-1.8.0]# echo 123456 | passwd tom --stdin # 設置密碼
Changing password for user tom.
passwd: all authentication tokens updated successfully.
用戶初始配置文件:/etc/defaults/useradd
useradd行為時調用。
默認登錄定義文件:/etc/login.defs
useradd行為時調用。
配置文件來源:
新建用戶時,根據/etc/skel模板目錄進行復制修改。
主要初始配置文件:
~/.bash_profile:每次登錄時執行。
~/.bashrc:每次進入新的bash環境會執行。
~/.bash_logout:每次退出登錄時執行。
全局配置文件:
/etc/profile
/etc/bashrc
用戶初始文件會調用全局配置文件。
(3) 修改用戶usermod
usermod 選項 用戶名
-l:更改用戶賬戶的登錄名稱
-L:鎖定用戶賬戶
-U:解鎖用戶賬戶
-u:指定UID
-d:指定宿主目錄,缺省為/home/用戶名
-e:指定賬號時間:禁用用戶賬戶的時間,格式:YYYY-MM-DD
-g或-G:指定所屬的基本組或附加組。
-s:指定用戶登錄shell環境。
(4) 用戶密碼有效期控制 chage
chage 選項 用戶名
-l:列出密碼的有效期信息
-E:指定賬號過期日期,格式為:YYYY-MM-DD
-m:指定密碼的最小天數
-M:指定密碼最大天數
[root@node0 nginx-1.8.0]# chage -l tom
Last password change : Nov 19, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[root@node0 nginx-1.8.0]# chage -m 12 tom
[root@node0 nginx-1.8.0]# chage -l tom
Last password change : Nov 19, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 12
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[root@node0 nginx-1.8.0]# chage -M 115 tom
[root@node0 nginx-1.8.0]# chage -l tom
Last password change : Nov 19, 2017
Password expires : Mar 14, 2018
Password inactive : never
Account expires : never
Minimum number of days between password change : 12
Maximum number of days between password change : 115
Number of days of warning before password expires : 7
[root@node0 nginx-1.8.0]# chage -E 2019-02-03 tom
[root@node0 nginx-1.8.0]# chage -l tom
Last password change : Nov 19, 2017
Password expires : Mar 14, 2018
Password inactive : never
Account expires : Feb 03, 2019
Minimum number of days between password change : 12
Maximum number of days between password change : 115
Number of days of warning before password expires : 7
(5) 刪除用戶 userdel
userdel 用戶名
-r:刪除宿主目錄和用戶郵件
[root@node0 nginx-1.8.0]# userdel -r tom # 刪除用戶
[root@node0 nginx-1.8.0]# tail -n 2 /etc/passwd # 檢查用戶是否存在
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[root@node0 nginx-1.8.0]# ll /home/ # 查看用戶目錄是否存在
total 0
(6) 查看用戶ID信息
id 選項 用戶名
[root@node0 nginx-1.8.0]# id root
uid=0(root) gid=0(root) groups=0(root)
(7) 添加組賬戶 groupadd
groupadd 組名
-g:指定UID
[root@node0 ~]# groupadd sa
[root@node0 ~]# tail -1 /etc/group # 檢查是否添加
sa:x:500:
(8) 管理組成員
gpasswd 選項 組名
-A:定義組管理員列表
-a:添加組成員,每次只添加一個。
-d:刪除組成員,每次只刪除一個
-M:定義組成員用戶列表,可以設置多個。
[root@node0 ~]# useradd tom # 添加用戶
[root@node0 ~]# echo 123456 | passwd tom --stdin # 設置密碼
Changing password for user tom.
passwd: all authentication tokens updated successfully.
[root@node0 ~]# gpasswd -A tom sa # 將用戶添加到組管理員列表
(9)刪除組 groupdel
groupdel 組名
刪除的目標組不可以是用戶的基本組。
[root@node0 ~]# groupdel sa
************************************************************************************************
用戶登錄時,home目錄異常,提示無法切換home目錄:
[root@test home]# useradd xvge # 添加用戶
[root@test home]# passwd xvge # 設置密碼
Changing password for user xvge.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@test home]# ls # 檢查用戶目錄
xvge
[root@test home]# usermod -d /opt/xvge xvge # 更改用戶目錄
[root@test home]# grep xvge /etc/passwd # 查看更改是否成功
xvge:x:500:500::/opt/xvge:/bin/bash
[root@test home]# su - xvge # 切換到用戶
su: warning: cannot change directory to /opt/xvge: No such file or directory
-bash-4.1$
原因:
通過 usermod 修改了賬號的家目錄後只是修改了/etc /passwd 文件中的記錄,但是用戶的
home 目錄不會移動。
解決辦法:
使用 usermod 修改用戶的 home 目錄後,記得將此用戶的 home 目錄使用 mv 一起移動。
************************************************************************************************
/bin/bash是默認的shell環境。
/sbin/nologin指定不讓用戶登錄的shell環境。
No.22 用戶賬號管理和組賬號管理