Linux中用户的概述
用户指的是能够正常登录Linux或windows系统
与windows用户的区别:
支持同一个用户多个设备同时登录
支持不同的用户多个设备同时登录
用户的作用
1)系统上的每一个进程(运行的程序)都需要特定的用户运行
2)每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
3)进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
查看系统中用户的命令
## 查看指定用户的信息id:默认情况不加用户名则查看当前登录用户的信息## 语法:id +用户名[root@shiying ~]# iduid=0(root) # UserID:用户id号gid=0(root) # GroupID:用户组id号groups=0(root) # 该用户的所有组信息## 查看进程(每个进程的运行用户)[root@shiying ~]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 15:27 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --droot 2 0 0 15:27 ? 00:00:00 [kthreadd]系统用户相关的配置文件
## 用户信息配置文件/etc/passwd## 用户密码存储文件/etc/shadow## 用户组信息配置文件/etc/group## 用户组密码存储文件/etc/gshadow/etc/passwd
[root@shiying ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:999:998:User for polkitd:/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologin## 文件内容root:x:0:0:root:/root:/bin/bashdbus:x:81:81:System message bus:/:/sbin/nologin第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 | |
内容 | root | x | 0 | 0 | root | /root | /bin/bash |
作用 | 用户名 | 密码占位符 | UID | gid | 描述信息 | 用户的家目录 | 用户登录的shell |
/etc/shadow
## 存放用户密码相关信息文件[root@shiying ~]# cat /etc/shadowroot:$6$GUY3i8reYZ6Rkqc2$HXAouiJtMztlG4NWi.GeyWnHsOBnqTTYLFtgxA01JcW5sm.SphZS/BaWph6iKSA3LDQ6osapw0eaR.7VlpBtL/::0:99999:7:::bin:*:18353:0:99999:7:::daemon:*:18353:0:99999:7:::adm:*:18353:0:99999:7:::第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 | 第八列 | 第九列 | |
内容 | bin | * !!(没密码) | 18353 | 0 | 99999 | 7 | 空 | 空 | 空 |
作用 | 用户名 | 密码(加密) | 从1970年开始上一次修改密码过了多少天 | 密码最少使用多少天,0代表没有限制 | 密码最多使用多少天 | 密码快过期前7天提示要修改 | 密码过期后X天强制修改密 | 用户账户过期时间从1970年开 | 保留位 |
用户分类(约定、规范CentOS7)
用户UID | 系统中含义 |
0 | 超级管理员用户 |
1-200 | 系统用户(系统自己创建的) |
201-999 | 系统用户(可以手动创建) |
1000+ | 普通用户 |
chage命令修改用户信息
-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码-m //设置用户两次改变密码之间使用"最小天数"-M //设置用户两次改变密码之间使用"最大天数"-W //设置密码更改警告时间将过期警告天数设为“警告天数”-I //设置密码过期天数后, 密码为失效状态-E //设置用户过期时间, 账户失效后无法登陆-l //显示用户信息//修改时间为2014年08月31日,和图中时间匹配,方便后续验证[root@zls ~]# date -s '20140831'Sun Aug 3100:00:00 CST 2014[root@zls ~]# dateSun Aug 3100:00:01 CST 2014[root@zls ~]# useradd zls1[root@zls ~]# echo "123" |passwd --stdin zls1[root@zls ~]# tail -1/etc/shadowzls1:!!:16312:0:99999:7::://设置最近一次修改密码时间[root@zls ~]# chage -d "2014-09-01" zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:0:99999:7::://设置最短使用密码时间[root@zls ~]# chage -m 2 zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:99999:7::://设置密码最长使用时间[root@zls ~]# chage -M 15 zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:15:7::://设置密码警告时间[root@zls ~]# chage -W 6 zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:15:6:::[root@zls ~]# chage -W 7 zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:15:7::://设置密码过期时间[root@zls ~]# chage -I 5 zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:15:6:5:://设置用户过期时间[root@zls ~]# chage -E "20115-08-31" zls1[root@zls ~]# tail -n1 /etc/shadowzls1:!!:16314:2:15:6:5:6627567:[root@zls ~]# chage -l zls1Last 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 ~]# date -s "2014-09-12"3.普通用户登陆系统后, 强制要求修改密码[root@zls ~]# date -s "2014-09-18"4.普通用户登陆系统后, 提示账户已过期[root@zls ~]# date -s "2014-09-2用户操作命令
用户创建
useradd adduser注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的组,跟uid相同的gid,除非-g指定组,则不会创建同名组## 语法useradd [选项]... 用户名## 选项-u:创建用户时指定用户的uid-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)-G:创建用户时指定用户的附加组(该组必须存在)-c:创建用户时指定用户的描述信息-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)-M:创建用户时不创建用户的家目录-s:创建用户时指定用户登录的shell(默认是/bin/bash)-r:创建用户时指定用户为系统用户## 创建用户举例[root@shiying ~]# useradd ss## -u -g[root@shiying ~]# useradd shiying1 -u 666 -g root[root@shiying ~]# id shiying1uid=666(shiying1) gid=0(root) groups=0(root)## -G[root@shiying ~]# useradd oo -G root,yy[root@shiying ~]# id oouid=1003(oo) gid=1003(oo) groups=1003(oo),0(root),1002(yy)[root@shiying ~]# useradd qq -g oo[root@shiying ~]# id qquid=1005(qq) gid=1003(oo) groups=1003(oo)##-c[root@shiying ~]# useradd pp -c '5555'[root@shiying ~]# cat /etc/passwdpp:x:1004:1004:5555:/home/pp:/bin/bash## -d[root@shiying ~]# useradd rr -d /666[root@shiying ~]# cat /etc/passwdrr:x:1006:1006::/666:/bin/bash##-M[root@shiying ~]# useradd tt -M[root@shiying ~]# cat /etc/passwdtt:x:1008:1008::/home/tt:/bin/bash[root@shiying ~]# ll /home/total 0drwx------. 2 oo oo 62 Apr 2 20:33 oodrwx------. 2 pp pp 62 Apr 3 01:10 ppdrwx------. 2 qq oo 62 Apr 3 01:29 qqdrwx------. 2 shiying1 root 62 Apr 2 01:25 shiying1drwx------. 2 yy yy 62 Apr 2 01:37 yy## -s[root@shiying ~]# useradd tt1 -s /sbin/nologin## -r[root@shiying ~]# useradd tt2 -r[root@shiying ~]# id tt2uid=665(tt2) gid=665(tt2) groups=665(tt2)## 报错1[root@shiying ~]# useradd shiying1 -u 666 -g 666useradd: group '666' does not exist原因:666这个组不存在,前提,-g必须加入到一个已存在的组## 报错2[root@shiying ~]# useradd ss -d /666useradd: warning: the home directory already exists.Not copying any file from skel directory into it.原因:使用-d指定用户的家目录时,家目录不能提前创建修改用户
usermod modify## 语法usermod [选项] 用户名## 选项-u:修改用户时指定用户的uid-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)-a:修改用户附加组的时候,配合-aG追加使用-c:修改用户时指定用户的描述信息-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)-M:修改用户时不创建用户的家目录-s:修改用户时指定用户登录的shell(默认是/bin/bash)-r:修改用户时指定用户为系统用户-m:修改用户时迁移用户的家目录,必须配合-dm使用----------------------------------------l:更改用户登录名-L:锁定用户-U:解锁用户## 举例[root@shiying ~]# id yyuid=1002(yy) gid=1002(yy) groups=1002(yy)## -a -G[root@shiying ~]# usermod shiying1 -aG oo[root@shiying ~]# id shiying1uid=666(shiying1) gid=0(root) groups=0(root),1002(yy),1003(oo)## -G[root@shiying ~]# usermod shiying1 -G root,yy[root@shiying ~]# id shiying1uid=666(shiying1) gid=0(root) groups=0(root),1002(yy)## -m -d[root@shiying ~]# usermod rr -m -d /home/rr[root@shiying ~]# ll /home/drwx------. 2 rr rr 62 Apr 3 01:34 rr##-s[root@shiying ~]# useradd aaa -s /sbin/nologin[root@shiying ~]# cat /etc/passwdaaa:x:1010:1010::/home/aaa:/sbin/nologin[root@shiying ~]# usermod aaa -s/bin/bash[root@shiying ~]# cat /etc/passwdaaa:x:1010:1010::/home/aaa:/bin/bash## -l[root@shiying ~]# id yyuid=1002(yy) gid=1002(yy) groups=1002(yy)[root@shiying ~]# usermod yy -l yy666[root@shiying ~]# usermod yy666 -m -d /home/yy666[root@shiying ~]# cat /etc/passwdyy666:x:1002:1002::/home/yy666:/bin/bash## 报错[root@localhost ~]# usermod hl3 -l hl38usermod: user hl3 is currently used by process 70107原因:hl3用户当前正在被PID为70107进程占用,所以无法修改删除用户
userdel delete注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除## 语法userdel [选项]... 用户名## 选项-r:递归删除,用户所有相关文件## 举例[root@shiying ~]# userdel -r tt1# 警告[root@localhost ~]# useradd testuseradd: warning: the home directory already exists.Not copying any file from skel directory into it.Creating mailbox file: File exists原因:创建用户时,该用户以前创建过,但是在删除时没有加-r选项,没有删干净(用户同样可以创建出来)记录:useradd mysql -s /sbin/nologin -M查看用户其他命令
## 查看当前系统登录了哪些用户[root@shiying ~]# who#用户 #终端 #登录时间 #从哪里连接过来root pts/0 2022-04-01 15:27 (10.0.0.1)## 查看当前系统登录了哪些用户[root@shiying ~]# w02:10:10 up 10:43, 1 user, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 10.0.0.1 15:27 2.00s 0.09s 0.00s w## 查看当前登录的用户[root@shiying ~]# whoamiroot









