一、Linux中用戶的概述
用戶指能正常登陸Linux或windows系統
與windows 用戶的區別
支持同一個用戶同時登陸多個設備
支持不同用戶多個設備同時登陸
二、用戶的作用
系統上每一個進程(運行中的程序)都需要特定的用戶運行
每一個文件都有特定的用戶擁有,所以訪問文件或目錄會受到用戶權限限制
進程以何種方式訪問一個文件或目錄,與進程所關聯的用戶有關
三、查看系統用戶命令
1、id:默認情況下不加用戶名這是查看當前登陸用戶的信
id 用戶名
例子:
16:22:21 root@yyds,10.0.0.100:~ # id root
0(root) gid=0(root) groups=0(root)
2、查看進程(每個進程的運行用戶)
ps -ef
130 ✗ 16:22:35 root@yyds,10.0.0.100:~ # ps -ef
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 Mar31 ? 00:00:00 [kthreadd]
root 4 2 0 Mar31 ? 00:00:00 [kworker/0:0H]
root 5 2 0 Mar31 ? 00:00:04 [kworker/u256:0]
root 6 2 0 Mar31 ? 00:00:04 [ksoftirqd/0]
root 7 2 0 Mar31 ? 00:00:00 [migration/0]
id
0 ✓ 23:21:10 root@yyds,10.0.0.100:~ # id fog
uid=1016(fog) gid=1022(fog) groups=1022(fog)
0 ✓ 23:21:17 root@yyds,10.0.0.100:~ # id -u fog
1016
0 ✓ 23:21:26 root@yyds,10.0.0.100:~ # id -g fog
1022
0 ✓ 23:21:33 root@yyds,10.0.0.100:~ # id -un fog
fog
0 ✓ 23:21:47 root@yyds,10.0.0.100:~ # id -gn fog
fog
四、系統用戶有關配置文件
#用戶信息配置文件
/etc/passwd
#用戶密碼存儲文件
/etc/shadow
#用戶組信息配置文件
/etc/group
#用戶組密碼配置文件
/etc/gshadow
1、/etc/passwd
130 ✗ 16:29:37 root@yyds,10.0.0.100:~ # cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin
nobody:x:99:99:nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd network management:/:/sbin/nologin
dbus:x:81:81:system message bus:/:/sbin/nologin
bash
#文件內容
root:x:0:0:root:/root:/bin/bash
第一列
第二列
第三列
第四列
第五列
第六列
第七列
內容
root
x
0
0
root
/root
/bin/bash
作用
用戶名
密碼站位符
UID
gid
描述信息
用戶家目錄
用戶登陸的shell
2、/etc/shadow
#存放用戶密碼相關信息文件
130 ✗ 16:49:29 root@yyds,10.0.0.100:~ # cat /etc/shadow
root:$6$1yFJbWuGt3gSkrFW$bgpojVIYov5U4oWxpBL.4C6UZsWtTmWwijmbJj6HICBJoI7R8UQxuYeOdcq10t0HLiAiLjyAseahvxP.TowRL.::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
# daemon:*:18353:0:99999:7:::
第一列
第二列
第三列
第四列
第五列
第六列
第七列
第八列
第九列
內容
root
* !!(沒有密碼)
17834
0
99999
7
2
6627567
空
作用
用戶名
密碼加密
從1970開始上一次密碼修改過了多少天
密碼最少使用多少天,0代表沒有限制
密碼最大使用天數
密碼過期從1979前七天提醒
密碼過期後2天強制修改密碼
用戶過期時間從1970年開始
保留位
3、用戶分類(centos7 約定、規範 )
用戶UID
系統中的含義
0
超級管理員用戶
1-200
系統用戶(系統自己創建)
201-999
系統用戶(可以手動創建)
1000+
普通用戶
4、chang命令修改用戶信息
-d //設置最近一次更改密碼時間, 0下次登陸系統強制修改密碼
-m //設置用戶兩次改變密碼之間使用"最小天數"
-M //設置用戶兩次改變密碼之間使用"最大天數"
-W //設置密碼更改警告時間 將過期警告天數設爲“警告天數”
-I //設置密碼過期天數後, 密碼爲失效狀態
-E //設置用戶過期時間, 賬戶失效後無法登陸
-l //顯示用戶信息
//修改時間爲2014年08月31日,和圖中時間匹配,方便後續驗證
[root@zls <sub>]# date -s '20140831'
Sun Aug 31 00:00:00 CST 2014
[root@zls </sub>]# date
Sun Aug 31 00:00:01 CST 2014
[root@zls <sub>]# useradd zls1
[root@zls </sub>]# echo "123" |passwd --stdin zls1
[root@zls <sub>]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::
//設置最近一次修改密碼時間
[root@zls </sub>]# chage -d "2014-09-01" zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:0:99999:7:::
//設置最短使用密碼時間
[root@zls </sub>]# chage -m 2 zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:99999:7:::
//設置密碼最長使用時間
[root@zls </sub>]# chage -M 15 zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//設置密碼警告時間
[root@zls </sub>]# chage -W 6 zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:::
[root@zls </sub>]# chage -W 7 zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//設置密碼過期時間
[root@zls </sub>]# chage -I 5 zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5::
//設置用戶過期時間
[root@zls </sub>]# chage -E "20115-08-31" zls1
[root@zls <sub>]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5:6627567:
[root@zls </sub>]# chage -l zls1
Last password change : Sep 01, 2014 //最近一次更改密碼時間
Password expires : Sep 16, 2014 //密碼過期時間
Password inactive : Sep 21, 2014 //密碼失效時間
Account expires : Aug 31, 2015 //用戶失效時間
Minimum number of days between password change : 2 //密碼最短使用時間
Maximum number of days between password change : 15 //密碼最長使用時間
Number of days of warning before password expires : 7 //密碼過期前警告天數
//如何驗證,只調整時間爲如下進行驗證:
1.驗證普通用戶是否能修改密碼, 不需要調整時間。
2.普通用戶登陸系統後, 會提示警告密碼還剩多少天過期
[root@zls <sub>]# date -s "2014-09-12"
3.普通用戶登陸系統後, 強制要求修改密碼
[root@zls </sub>]# date -s "2014-09-18"
4.普通用戶登陸系統後, 提示賬戶已過期
[root@zls ~]# date -s "2014-09-23"
五、用戶操作命令
1、用戶創建
useradd [選項] 用戶名,(groups有效用戶組)
#選項
-u: 創建用戶時指定用戶的uid
-g: 創建用戶時指定用戶的gid,指定用戶組名(該組必須存在)
-G:創建用戶時指定用戶附加組(該組必須存在)
-c:創建用戶時指定用戶描述信息
-d:創建用戶時指定用戶家目錄(該用戶不存在,會自動創建)
-M:創建用戶時,不創建用戶的家目錄
-s:創建用戶時指定用戶登陸的shell(默認情況下選擇/bin/bash)
-r:創建用戶時指定用戶爲系統用戶,不再創建家目錄。
例子:
#創建用戶:
130 ✗ 16:49:54 root@yyds,10.0.0.100:<sub> # useradd god
0 ✓ 17:37:10 root@yyds,10.0.0.100:</sub> # id god
uid=1009(god) gid=1009(god) groups=1009(god)
#-u -g
9 ✗ 17:36:25 root@yyds,10.0.0.100:<sub> # useradd god1 -u 888 -g root
0 ✓ 17:37:17 root@yyds,10.0.0.100:</sub> # id god1
uid=888(god1) gid=0(root) groups=0(root)
# -G
6 ✗ 17:46:12 root@yyds,10.0.0.100:<sub> # useradd zhujiao
0 ✓ 17:56:55 root@yyds,10.0.0.100:</sub> # useradd god3 -G god,zhujiao
0 ✓ 18:00:23 root@yyds,10.0.0.100:<sub> # id god3
uid=1011(god3) gid=1011(god3) groups=1011(god3),1009(god),1010(zhujiao)
# -c
130 ✗ 18:02:17 root@yyds,10.0.0.100:</sub> # useradd god5 -c smart
0 ✓ 18:07:41 root@yyds,10.0.0.100:<sub> # cat /etc/passwd
god3:x:1011:1011::/home/god3:/bin/bash
god5:x:1012:1012:smart:/home/god5:/bin/bash
#-d
130 ✗ 18:13:44 root@yyds,10.0.0.100:</sub> # useradd god6 -d /moon
0 ✓ 18:29:50 god6@yyds,10.0.0.100:<sub> $ pwd
/moon
#-M
0 ? 08:54:23 root@yyds,10.0.0.100:</sub> # useradd dog -M
0 ? 08:56:39 root@yyds,10.0.0.100:<sub> # id dog
uid=1017(dog) gid=1017(dog) groups=1017(dog)
# -M
0 ✓ 09:06:14 root@yyds,10.0.0.100:</sub> # useradd cow -s /nologin
130 ✗ 09:12:47 root@yyds,10.0.0.100:<sub> # useradd pig -r
0 ✓ 09:13:55 root@yyds,10.0.0.100:</sub> # id pig
uid=887(pig) gid=887(pig) groups=887(pig)
#報錯-1
創建指定家目錄,該家目錄不能提前存在
0 ✓ 09:16:39 root@yyds,10.0.0.100:<sub> # useradd goat1 -d /pig/
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
#報錯-2
創建用戶時,指定用戶組名,該用戶組必須存在
130 ✗ 09:17:14 root@yyds,10.0.0.100:</sub> # useradd fish -u 211 -g duck
useradd: group 'duck' does not exist
58.
59.
1 ✗ 21:43:07 root@yyds,10.0.0.100:~ # useradd zxc11
0 ✓ 21:43:31 root@yyds,10.0.0.100:~ # id zxc11
uid=1022(zxc11) gid=1030(zxc11) groups=1030(zxc11)
0 ✓ 21:43:36 root@yyds,10.0.0.100:~ # echo 111|passwd --stdin zxc11
Changing password for user zxc11.
passwd: all authentication tokens updated successfully.
2、修改用戶- usermod
#選項
'-u' 修改用戶的UID
'-g' 修改用戶所屬的基本組GID
'-G' 修改用戶附加組, 使用逗號隔開多個附加組, 覆蓋原有的附加組
'-a' 追加更多的附加組, 必須和-G使用: -aG 追加附加組
'-m' 家目錄遷移, 必須和-d一起使用, 移動用戶的家目錄到新的位置
'-d' 指定用戶的家目錄新位置
'-c' 修改用戶的註釋信息
'-s' 更改用戶使用的shell
'-l' 更改用戶登錄名
'-L' 鎖定用戶
'-U' 解鎖用戶
#-G, -aG
0 ✓ 09:43:23 root@yyds,10.0.0.100:<sub> # id pig6
uid=1022(pig6) gid=1022(pig6) groups=1022(pig6),1021(pig5)
0 ✓ 09:43:31 root@yyds,10.0.0.100:</sub> # usermod pig6 -G pig
0 ✓ 09:44:23 root@yyds,10.0.0.100:<sub> # id pig6
uid=1022(pig6) gid=1022(pig6) groups=1022(pig6),887(pig)
0 ✓ 09:44:31 root@yyds,10.0.0.100:</sub> # usermod pig6 -aG goat,cow
0 ✓ 09:45:55 root@yyds,10.0.0.100:<sub> # id pig6
uid=1022(pig6) gid=1022(pig6) groups=1022(pig6),1018(cow),887(pig),1019(goat)
#-md
12 ? 13:41:46 root@yyds,10.0.0.100:</sub> # usermod haha -m -d /home/niao
# -s
0 ✓ 13:45:21 root@yyds,10.0.0.100:<sub> # usermod haha -s /sbin/nologin
#-l
9 ✗ 13:54:16 root@yyds,10.0.0.100:</sub> # usermod fish -l guanyu
2.1 usermod -G與 -aG
0 ✓ 03:35:20 root@yyds,10.0.0.100:~ # useradd cow -G admins
0 ✓ 03:36:21 root@yyds,10.0.0.100:~ # id cow
uid=1006(cow) gid=1009(cow) groups=1009(cow),1008(admins)
0 ✓ 03:39:14 root@yyds,10.0.0.100:~ # usermod cow -G tian1
0 ✓ 03:39:41 root@yyds,10.0.0.100:~ # id cow
uid=1006(cow) gid=1009(cow) groups=1009(cow),1010(tian1)
0 ✓ 03:39:48 root@yyds,10.0.0.100:~ # usermod cow -aG tian2
0 ✓ 03:40:06 root@yyds,10.0.0.100:~ # id cow
uid=1006(cow) gid=1009(cow) groups=1009(cow),1010(tian1),1011(tian2)
3、鎖定解鎖用戶(瞭解)
鎖定用戶
[root@zls <sub>]# echo "123" |passwd --stdin zls_zls
[root@zls </sub>]# usermod -L zls_zls
//無法正常登錄系統
➜ <sub> ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
{1}
解鎖用戶
[root@zls </sub>]# usermod -U zls_zls
//正常登錄系統
➜ ~ ssh [email protected]
[email protected]'s password:
Welcome to Aliyun Esc Linux
-sh-4.1$
4、刪除用戶
userdel delete
# -r
2 ✗ 14:00:33 root@yyds,10.0.0.100:~ # userdel yu -r
5、查看用戶其他命令
# who 查看登陸了那些用戶
130 ✗ 14:01:04 root@yyds,10.0.0.100:<sub> # who
root pts/0 2022-04-02 13:59 (10.0.0.1)
# w 查看當前登陸了那些用戶
130 ✗ 14:04:50 root@yyds,10.0.0.100:</sub> # w
14:05:19 up 45 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 13:59 7.00s 0.05s 0.01s w
# whoami
130 ✗ 14:05:26 root@yyds,10.0.0.100:~ # whoami
root
六、故障處理
1、缺少環境變量