一.用户管理
1.什么用户?
用户指的是能够正常登录Linux或windows系统
2.用户的作用?
1)系统中的进程,都是由用户来运行的
2)管理文件的权限
3)进程能否访问到文件,和用户有关
3.和用户相关的文件
/etc/passwd
[root@oldboyedu opt]# cat /etc/passwd
用户名称 密码占位符(密码在/etc/shadow) 用户uid 用户gid 注释信息 用户家目录 用户登录shell(sbin/nologin不能登录,sbin/shutdown登录就关机) root: x: 0: 0: root: /root: /bin/bash
/etc/shadow
[root@zls ~]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::
[root@zls ~]# tail -1 /etc/shadow zls1:!!:16312:0:99999:7::: // /etc/shadow由 ':' 为分割符, 分为9个字段,每个字段的具体含义如下: 字段名称 注释说明 1.用户登陆名 //用户的账号名称 2.加密后的密码 //用户密码,这是加密过的口令(未设密码时为!!, *) 3.最近一次密码更改时间 //从1970年到最近一次更改密码时间之间过了多少天 4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制) 5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期) 6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认过期提前7天警告) 7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定 8.账户到期时间 //从1970年起,账户在这个日期前可使用,到期后失效。 9.标志 //保留
4.用户的分类(约定)
0:一定是超级管理员
1-200:是系统用户,系统自建
201-999:是系统用户,咱们创建 # 创建为useradd -r
1000+:普通用户 # 也可以起系统, 只是约定一般不这样
注意: 在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户
二.用户的相关命令
1)创建用户 useradd # useradd和adduser一样,adduser是useradd的软连接(centos7中才有)
# useradd 用户名 # 创建用户(创建用户就有用户名对应的组,不用groupadd特别创建一个组) -u:指定uid -g:指定组(必须是已存在的组)(组名或者是gid) -s:指定用户登录的shell -c:加注释 -M:不创建家目录 -d:指定家目录 -G:指定附加组 -r:指定系统用户,并且不创建家目录 (该参数没什么用处) # useradd -r mysql -u 203 #创建系统用户, 通过-u指定创建用户id # useradd zls101 -u 366 -g od #通过-g加入od组, -g后面也可以写组id(gid) # useradd php -u 1114 -g od -s /sbin/nologin #创建无法登陆的用户,通过指定shell(既然不能登录,那么家目录也没用) # useradd elk -u 1115 -g od -s /sbin/nologin -c 'elk start service' -M #-c添加注释, -M不添加家目录(不能登录没有意义) # useradd egon -d /opt/egg #指定家目录地址 查看用户的命令
id:查看当前用户
id username # 查看其它用户信息
设置用户密码 passwd
# passwd 用户名 # 设置用户密码
创建组 groupadd
# groupadd 组名称 # 创建组
# 创建zls用户,指定UID5001,基本组students 附加组sa,dba 注释信息:one newB user, 登陆的shell:/bin/bash groupadd student groupadd sa groupadd dba useradd zls -u 5001 -g student -G sa,dba -c 'one newB user' -s /bin/bash 2)修改用户 usermod '-u' 修改用户的UID '-g' 修改用户所属的基本组GID '-G' 修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组 '-a' 追加更多的附加组, 必须和-G使用: -aG 追加附加组 '-m' 家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置 '-d' 指定用户的家目录新位置 '-c' 修改用户的注释信息 '-s' 更改用户使用的shell '-l' 更改用户登录名 '-L' 锁定用户 '-U' 解锁用户 # usermod ldc -s /sbin/nologin #修改ldc用户为不可登录 # usermod zls -G od #把zls用户的附加组改为od # usermod zls -aG od,dba #把zls用户的附加组添加od, dba # usermod zls1 -d /opt/zls1 -m #家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置 # usermod ldc -L(使用后,ldc登陆着还能用,断开再连接无论输如任何密码都无法登录) 3)删除用户 userdel -r:删除用户并删除家目录 # userdel -r egon #删除egon用户同时删除其家目录
三.用户创建配置文件
useradd创建用户时,系统会以/etc/login.defs、/etc/defaults/useradd两个配置文件作为参照物 1./etc/login.defs (grep -vE '^#|^$' /etc/login.defs) #用户的邮件目录 MAIL_DIR /var/spool/mail #密码的最大天数 PASS_MAX_DAYS 99999 #密码最小使用天数 PASS_MIN_DAYS 0 #密码最小长度 PASS_MIN_LEN 5 #剩多少天警告 PASS_WARN_AGE 7 #普通用户最小uid UID_MIN 1000 #普通用户最大uid UID_MAX 60000 #系统用户最小uid SYS_UID_MIN 201 #系统用户最大uid SYS_UID_MAX 999 #普通用户最小gid GID_MIN 1000 #普通用户最大gid GID_MAX 60000 #系统用户最小gid SYS_GID_MIN 201 #系统用户最大gid SYS_GID_MAX 999 #是否创建家目录(如果改为false,即使创建用户-d指定家目录地址也没用) CREATE_HOME yes #创建家目录的权限(目录权限为777-077=700) UMASK 077 #创建用户的同时 创建组,删除用户的同时,删除组 USERGROUPS_ENAB yes #密码的 加密算法 ENCRYPT_METHOD SHA512 2./etc/default/useradd #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为no,则在此处控制(从100开始创建组) GROUP=100 #普通用户家目录 HOME=/home #是否启用账号过期停权 -1表示不启用 INACTIVE=-1 #账号的终止日期 不设置表示不启用 EXPIRE= #默认登录shell SHELL=/bin/bash #用户的家目录 环境变量(如果用户家目录环境变量没了, 命令提示符错误, 可以从这里拷) SKEL=/etc/skel #创建邮件 CREATE_MAIL_SPOOL=yes
企业级故障案例:
# 在当前用户的家目录下,想要删除所有文件,执行了如下命令 [root@db04 ~]# rm -fr .* # 结果再次登录时,命令提示符不对了 -bash-4.1# # 解决方法 -bash-4.1# cp /etc/skel/.bash* . # 再次登录 即可恢复 [root@db04 ~]#
四.查看用户登录
whoami:查看当前登录的用户 who [root@oldboyedu ~]# who 登录的用户 终端设备 登录时间 登录的IP oldboy1 pts/0 2019-06-27 18:01 (192.168.15.132) root pts/1 2019-06-27 18:01 (10.0.0.1) w [root@oldboyedu ~]# w 系统时间 服务器运行时间(重启重算) 当前登录的用户数 CPU的负载: 1分钟 5分钟 15分钟(按核数计算) 18:14:51 up 0 min, 1 user, load average: 0.75, 0.19, 0.06 10:13:35 up 249 days, 2:09, 1 user, load average: 5.61, 2.03, 0.76 用户 终端设备 连接的IP 登录时间 空闲 CPU使用率 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 18:14 3.00s 0.02s 0.00s w # 查看当前用户终端设备 tty (通过ps杀死对应的终端设备,该终端就关了)
五.设置用户密码(用户没密码无法登录)
passwd --stdin : 非交互设置密码 [root@oldboyedu ~]# passwd 修改当前用户的密码(普通用户只能改自己) [root@oldboyedu ~]# passwd qiudao01 修改指定用户的密码(root) #普通用户(无法修改指定用户密码) [oldboy1@oldboyedu ~]$ passwd oldboy1 passwd: Only root can specify a user name. 修改自己的 还得是输入旧密码 密码要符合 密码的复杂性 [oldboy1@oldboyedu ~]$ passwd 需要注意: 1.普通用户只能更改自己的密码(密码必须满足8位字符) 2.管理员用户能更改任何人的密码(密码长度无限制) 非交互设置密码 [root@oldboyedu ~]# echo 123 |passwd --stdin(标准输入) 用户名 [root@oldboyedu ~]# echo 123 |passwd --stdin ldc 设置随机密码 echo $RANDOM :生成随机数 md5sum:给随机数再加密 cut -c 1-10 : 取前10个字符 tee:将原本输出的内容保存到文件中 # -a参数 写入不会覆盖 # 生成随机数加密剪切,存入文件并设置密码给ldc1用户 [root@localhost ~]echo $RANDOM|md5sum|cut -c 1-10|tee pass.txt|passwd --stdin ldc1
设置随机复杂密码(扩展)
# 安装
yum install -y expect mkpasswd -l:密码长度 -d:数字 -c:小写字母 -C:大写字母 -s:特殊字符 [root@localhost ~]# mkpasswd -l 20 -d 2 -c 2 -C 2 -s 14 [root@localhost ~]# mkpasswd -l 20 -d 2 -c 2 -C 2 -s 14|tee pass.txt|passwd --stdin ldc1