用户管理

满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述用户管理相关的知识,希望能为你提供帮助。
?Linux中用户的概述?
用户指的是能够正常登录Linux或者windows系统
与windows用户的区别:
支持同一个用户多个设备同时登录
支持不同的用户多个设备同时登录

?用户的作用
(1):系统上的每一个进程(运行的程序)都需要一个特定的用户运行
(2):每一个文件都有特定的用户应有,所以访问一个文件或目录是受到用户的限制
(3):进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关
查看系统中用户的命令
系统用户相关的配置文件

##查看指定用户的信息
id:默认情况下不加用户名则查看当前登录用户的信息

##语法
id  用户名

##举例:
0 ? 18:30:57 root@jinnan,10.0.0.101:~ # id
uid=0(root) gid=0(root) groups=0(root)
0 ? 18:43:46 root@jinnan,10.0.0.101:~ # id jinnan
uid=1001(jinnan) gid=1001(jinnan) groups=1001(jinnan)

##查看进程(每个进程的运行用户)
0 ? 18:43:52 root@jinnan,10.0.0.101:~ # ps -ef

##用户信息配置文件
/etc/passwd

## 用户密码存储文件
/etc/shadow

##用户组信息配置文件
/etc/group

##用户组密码存储文件
/etc/gshadow
?/etc/passwd?
#(查看:0 ? 18:45:59 root@jinnan,10.0.0.101:~ # cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
/etc/shadow
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
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
putong:x:1000:1000::/home/putong:/bin/bash
jinnan:x:1001:1001::/home/jinnan:/bin/bash

##文件内容
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin
jinnan:x:1001:1001::/home/jinnan:/bin/bash

?/etc/shadow?
##存放用户密码相关的配置文件

#(查看0 ? 18:51:59 root@jinnan,10.0.0.101:~ # cat /etc/shadow
root:$6$2j4nhCW39kFz8jkP$/RkZlrA0K93D958JCItqrB1flaCcAoP1fFROo1temhSL
KMLNQvj.PdWm1DduHSzBSLrbw3q.Ubz3yubq.4H4X/::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
jinnan:!!:19083:0:99999:7:::

?用户分类(约定、规范centOS 7)?

?chage命令修改用户信息?
-d://设置最近一次更改密码时间,0下次登录系统强制修改密码
-m//设置用户两次改变密码之间使用‘最小天数’
-M//设置用户两次改变密码之间使用‘最大天数’
-W//设置密码更改警告时间,将过期警告天数设为‘警告天数’
-I//设置密码过期天数后,密码为失效状态
-E//设置用户过期时间,账户失效后无法登录
-l//显示用户信息

##修改时间为2014年08月31日,和图中时间匹配,方便后续验证
18:58:48 root@jinnan,10.0.0.101:~ # date -s 20140831
Sun Aug 31 00:00:00 CST 2014
0 ? 00:00:00 root@jinnan,10.0.0.101:~ # date
Sun Aug 31 00:00:08 CST 2014

##设置最近一次修改密码时间
00:04:49 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:0:99999:7:::

##设置最短使用密码时间
0 ? 18:04:26 root@jinnan,10.0.0.101:~ # chage -m 2 jinnan
0 ? 18:08:46 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:2:99999:7:::

##设置密码最长使用时间
0 ? 18:10:29 root@jinnan,10.0.0.101:~ # chage -M 15 jinnan
0 ? 18:11:55 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:2:15:7:::

##设置密码警告时间
18:13:24 root@jinnan,10.0.0.101:~ # chage -W 6 jinnan
0 ? 18:13:54 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:2:15:6:::

##设置密码过期时间
0 ? 18:14:08 root@jinnan,10.0.0.101:~ # chage -I 5 jinnan
0 ? 18:15:06 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:2:15:6:5::

##设置用户过期时间
0 ? 18:15:17 root@jinnan,10.0.0.101:~ # chage -E 20115-8-5 jinnan
18:17:08 root@jinnan,10.0.0.101:~ # tail -1 /etc/shadow
jinnan:!!:16314:2:15:6:5:6627541:

##显示用户信息
0 ? 18:17:20 root@jinnan,10.0.0.101:~ # chage -l jinnan
Last password change : Sep 01, 2014 #最近一次更改密码
时间
Password expires : Sep 16, 2014 #密码过期时间
Password inactive : Sep 21, 2014 #密码失效时间
Account expires : Aug 05, 20115 #用户失效时间
Minimum number of days between password change : 2 #密码最短使用时

Maximum number of days between password change : 15 #密码最长使用
时间
Number of days of warning before password expires : 6 #密码过期前警告
天数

//如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码, 不需要调整时间。
2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
[root@zls ~]# date -s "2014-09-12"
3.普通用户登陆系统后, 强制要求修改密码
[root@zls ~]# date -s "2014-09-18"
4.普通用户登陆系统后, 提示账户已过期
[root@zls ~]# date -s "2014-09-23"
?用户操作命令?
?用户创建?
# useradd :adduser
注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的组,跟uid相同的
gid,除非-g指定组,则
不会创建同名组
#语法
useradd [选项]... 用户名
##选项
-u:创建用户时指定用户的uid
-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)
-G:创建用户时指定用户的附加组(该组必须存在)
-c:创建用户时指定用户的描述信息
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M:创建用户时不创建用户的家目录
-s:创建用户时指定用户登录的shell(默认是/bin/bash)
-r:创建用户时指定用户为系统用户

##创建用户举例
18:22:08 root@jinnan,10.0.0.101:~ # useradd bowen

#-u -g
18:22:08 root@jinnan,10.0.0.101:~ # useradd -u 666 -g root bowen
0 ? 18:28:53 root@jinnan,10.0.0.101:~ # tail -1 /etc/passwd
bowen:x:666:0::/home/bowen:/bin/bash
drwx------ 2 bowen root 62 Apr 3 18:28 bowen

# -G
0 ? 18:31:20 root@jinnan,10.0.0.101:/home # useradd lili -G
root,jinnan
0 ? 18:32:28 root@jinnan,10.0.0.101:/home # id lili
uid=1002(lili) gid=1002(lili) groups=1002(lili),0(root),1001(jinnan)

# -c
0 ? 18:32:48 root@jinnan,10.0.0.101:/home # useradd tang -c meinu
0 ? 18:34:33 root@jinnan,10.0.0.101:/home # tail -1 /etc/passwd
tang:x:1003:1003:meinu:/home/tang:/bin/bash

# -d
0 ? 18:34:46 root@jinnan,10.0.0.101:/home # useradd wang -d /etc/hong
drwx------ 2 wang wang 62 Apr 3 18:36 hong

# -M
0 ? 18:36:30 root@jinnan,10.0.0.101:/home # useradd -M tangli

# -s
0 ? 18:38:30 root@jinnan,10.0.0.101:/home # useradd tangli -s
/sbin/nologin

# -r
0 ? 18:38:30 root@jinnan,10.0.0.101:/home # useradd tangjin -r
0 ? 18:40:17 root@jinnan,10.0.0.101:/home # tail -1 /etc/passwd
tangjin:x:665:665::/home/tangjin:/bin/bash

## 报错1
[root@localhost ~]# useradd zls1 -u 666 -g 666
useradd: group 666 does not exist
原因:666这个组不存在,前提,-g必须加入到一个已存在的组

## 报错2
[root@localhost ~]# mkdir /dsb
[root@localhost ~]# useradd hl1 -d /dsb/
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
原因:使用-d指定用户的家目录时,家目录不能提前创建
?修改用户?
#命令:usermod
#语法
usermod [选项] 用户名
## 选项
-u:修改用户时指定用户的uid
-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
-a:修改用户附加组的时候,配合-a追加使用
-c:修改用户时指定用户的描述信息
-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
-m:修改用户时迁移用户的家目录,必须配合-d使用
-M:修改用户时不创建用户的家目录
-s:修改用户时指定用户登录的shell(默认是/bin/bash)
-r:修改用户时指定用户为系统用户
---------------------------------------
-l:更改用户登录名
-L:锁定用户
-U:解锁用户

##举例 -a -G
0 ? 18:47:05 root@jinnan,10.0.0.101:/home # id lili
uid=1002(lili) gid=1002(lili) groups=1002(lili),0(root),1001(jinnan)
0 ? 18:47:12 root@jinnan,10.0.0.101:/home # usermod lili -aG wang
0 ? 18:48:05 root@jinnan,10.0.0.101:/home # id lili
uid=1002(lili) gid=1002(lili)
groups=1002(lili),0(root),1001(jinnan),1004(wang)

## -m -d
18:49:48 root@jinnan,10.0.0.101:/home # usermod tangli -m -d
/home/tangli

## -s
0 ? 18:54:59 root@jinnan,10.0.0.101:~ # usermod tangli -s
/sbin/nologin
tangli:x:1005:1005::/home/tangli:/sbin/nologin

## -l
0 ? 18:54:59 root@jinnan,10.0.0.101:~ # usermod tangjin -l jintang
0 ? 18:56:30 root@jinnan,10.0.0.101:~ # tail -1 /etc/passwd
jintang:x:665:665::/home/tangjin:/bin/bash


## 报错
[root@localhost ~]# usermod hl3 -l hl38
usermod: user hl3 is currently used by process 70107
原因:hl3用户当前正在被PID为70107进程占用,所以无法修改
?删除用户?
#命令:userdel
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除

##语法
userdel [选项]... 用户名

##选项
-r:递归删除,用户所有相关文件

##举例
0 ? 19:01:37 root@jinnan,10.0.0.101:~ # userdel -r lili

## 警告
[root@localhost ~]# useradd test
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
原因:创建用户时,该用户以前创建过,但是在删除时没有加-r选项,没有删干净(用户同样
可以创建出来)
?查看用户其他命令?
##查看当前系统登录了哪些用户
0 ? 19:01:42 root@jinnan,10.0.0.101:~ # who

#用户 #终端 #登录时间 #从哪里连接过来
root tty1 2022-04-03 18:04
root pts/0 2022-04-03 18:54 (10.0.0.1)

##查看当前系统登录了哪些用户
0 ? 19:04:09 root@jinnan,10.0.0.101:~ # w
19:05:24 up 1:01, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 18:04 1:01m 0.01s 0.01s -bash
root pts/0 10.0.0.1 18:54 4.00s 0.05s 0.00s w

【用户管理】##查看当前登录的用户
0 ? 19:05:24 root@jinnan,10.0.0.101:~ # whoami
root

    推荐阅读