Linux基础模块--day7(用户管理1)
Linux运维(基础模块)--day7
Linux系统用户管理
用户存在的意义:
- 系统上的每一个进程都需要特定的用户运行
- 每一个文件都有特定的用户拥有
- 访问文件或目录受到用户的限制
- 进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
查看当前用户信息
[root@AliceServer ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
UID的分类:
UID | 用户 |
---|---|
0 | 超级管理员 |
1-200 | 系统用户,由系统分配给系统进程使用 |
201-999 | 系统用户,用来运行服务的账户,不需要登陆,动态分配 |
1000+ | 常规用户 |
*在Linux7之前的惯例是, UID1-499用于系统用户. 而UID500+则用于普通用户
组类别
基本组: 优先使用基本组, 用户只能属于一个基本组, 用户默认基本组
附加组: 基本组不能满足授权要求, 创建附加组, 用户可以属于多个附加组
私有组: 创建用户时如果没有指定基本组, 系统会创建和用户名相同的组名
用户管理
账户信息存放在/etc/passwd, 账户密码密码信息保存在/etc/shadow, 这两个文件是linux系统中最重要的文件之一, 如果没有这两个文件或者文件出现问题, 会导致无法正常登录linux系统
/etc/passwd
>head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
由':'分隔成7段
- 用户名称
- 密码占位符
- 用户的UID
- 用户的基本组GID
- 用户注释
- 用户家目录
- 用户登陆shell
/etc/shadow
>cat /etc/shadow | grep root
root:$6$Eof4RgKtYZksm5nN$uwfZfTBzsxmloBms4Xc5LJ4tTbVBkJ/s40k.Ke40gcXLVU/iO0sEtgb6lbJ7ThSjcOlHndck5jHJkB/edrMRa0::0:99999:7:::
由':'分隔成9段
- 用户登录名
- 加密后的密码
- 最近一次修改密码的时间
- 密码最少使用几天
- 密码最多使用几天
- 密码到期前警告期限
- 密码到期后保持活动的天数
- 账户到期时间
- 标志
密码格式
$a$b$c
- a 加密算法
- b salt随机加密值
- c 加密后的值
使用chage更改用户密码的使用情况
-d 设置最近一次更改密码的时间,设置0为下次登录强制修改密码
-m 设置用户2次密码使用的最小天数
-M 设置用户2次密码使用的最大天数
-W 设置用户密码的警告过期天数
-I 设置密码过期天数后,密码为失效状态
-E 设置用户过期时间,账号失效后无法登录
-l 显示线上
eg:
# 添加用户
useradd user1
tail -1 /etc/passwd
>>>user1:x:1000:1000::/home/user1:/bin/bash
# 更改密码
echo 123 | passwd --stdin user1
tail -1 /etc/shadow
>>>user1:$6$BQfGfOJg$DePPzuE96zlUZo9T0zHLfRQpDMFM7x9bX3tOnHfY.QXU2ksTzzJZC6xqnhZQFaTQ9kBdZUn8wchXH5Yh22NKb.:18882:0:99999:7:::
# 查看密码详情
chage -l user1
最近一次密码修改时间 :9月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
## 设置最近一次修改密码的时间
chage -d '2020-02-20' user1
## 设置最短密码使用的时间
chage -m 2 user1
#查看密码表
tail -1 /etc/shadow
>>>user1:$6$BQfGfOJg$DePPzuE96zlUZo9T0zHLfRQpDMFM7x9bX3tOnHfY.QXU2ksTzzJZC6xqnhZQFaTQ9kBdZUn8wchXH5Yh22NKb.:18312:2:99999:7:::
## 设置最长密码使用时间
chagre -M 15 user1
## 设置密码过期警告
chage -W 6 user1
## 设置密码过期时间
chage -I 5 user1
## 设置用户过期时间
chage -E '2099-12-31' user1
用户命令
添加用户前需要确认
- 用户的默认组是否有特殊要求
- 用户是否允许登陆
- 用户的密码策略
- 用户的有效期
- 用户的UID是否有特殊要求
- 使用useradd命令新增用户
- adduser软链接是指向useradd
创建用户
# 创建用户参数
-u 指定用户的UID(不能和现有的冲突)
-g 指定用户默认基本组
-G 指定用户附加组,用逗号隔开添加多个附加组
-d 指定用户家目录
-c 指定用户的注释信息
-M 不建立家目录
-s 指定用户默认shell
-r 创建系统账户,没有家目录
eg:创建user用户,指定UID5001,基本组student,附加组sa,dba,注释信息:'new student',shell:bash
# 创建用户组
groupadd sa
groupadd dba
groupadd student
# 创建用户
useradd -u 5001 -g student -G sa,dba -c "new student" -d /home/user -s /bin/bash user
# 查看用户信息
tail -1 /etc/passwd
>>>user:x:5001:1003:new student:/home/user:/bin/bash
# 创建系统用户
useradd -M -s /sbin/nologin mysql
useradd -r -s/sbin/nologin dba
更改用户组
使用usermod修改
# usermod参数
-u 修改用户的UID
-g 修改用户所属的基本组GID
-G 修改用户的附加组,使用逗号隔开,覆盖原有附加组
-a 追加更多的附加组和-G一起使用 -aG:追加附加组
-md 家目录迁移, 和-d一起使用
-d 指定用户家目录的位置
-c 修改用户注释信息
-s 更改用户使用的shell
-l 更改用户的登录名
-L 锁定用户
-U 解锁用户
使用finger命令查看用户
yum install -y finger
finger root
用户创建
用户创建原理: ==Linux用户创建会默认读取/etc/default/useradd的配置文件, 如果指定参数,使用指定的参数, 如果不指定参数会默认使用/etc/default/useradd的参数, 当使用useradd时, 用户的家目录会产生.bash_*的文件, 这些文件默认都是从/etc/skel目录复制, 如需变更环境拷贝目录站点可修改/etc/default/useradd的文件
如果执行useradd,指向了参数, 就会覆盖/etc/defaults/useradd的默认配置
# 和chage -l user1看到的一样,只不过是不一样的形式
egrep -v "^#|^$" /etc/login.defs
/etc/default/useradd文件解释
cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home # 用户的家目录建在/home
INACTIVE=-1 # 是否启用账号过期, -1表示不启用
EXPIRE= # 账号终止日期, 不设置表示不启用
SHELL=/bin/bash # 新用户默认使用的shell类型
SKEL=/etc/skel # 配置用户家目录的默认文件存放路径
CREATE_MAIL_SPOOL=yes # 创建mail文件
密码管理
创建完账户后, 默认的没有密码的, 所以该账户无法登录操作系统, 只有在passwd中设置号密码才可以登录
密码策略
- 长度大于10
- 密码中应该包含大写,小写以及特殊符号(!, @, #)等
- 不规则性
Be Carefu
- 普通用户只能更改自己的密码
- 管理员root可以修改任何人的密码
- 在使用passwd修改密码时, 不指定用户名, 则修改当前用户的密码
随机密码生成工具
- 系统内置
- mkpasswd密码生成工具
# 系统内置
echo $RANDOM | md5sum | cut -c 1-10
# mkpasswd工具
# 安装扩展包
yum install -y expect
# 生成密码
mkpasswd -l 15 -d 3 -C 5 # -l: 密码位数(默认7位), -d: 数字, -c: 小写字母, -C: 大写字母
本文来自博客园,作者:关于段主任的一切,转载请注明原文链接:https://www.cnblogs.com/fairylandfuture/p/15260255.html