用户和组存在的意义
1.系统上的每个进程都需要特定的用户运行
2.每个文件都有特定的用户拥有
3.访问文件或目录收到用户的限制
4.进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关
id # 查看当前登陆用户
id oldboy # 查看oldboy信息
用户uid的分类
0-65535
0 超级管理员
1-200 系统用户,由系统分配给系统进程
201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)
1000+ 常规用户
注意:linux7之前,uid1-499用户系统用户,uid500+用于普通用户
组类别
基本组 优先使用基本组,用户只能属于一个基本组,用户默认基本组
附加组 基本组不能满足授权要求,创建附加组,用户可以属于多个附加组
私有组 创建用户时,如果没有指定基本组,系统会创建和用户同名的组
一、用户管理
账户信息存放下/etc/passwd,账户密码信息保存在/etc/shadow,这两个文件是Linux系统中最重要的文件之一。
如果没有这两个文件或者文件出问题,会导致系统无法正常登陆
账户文件/etc/passwd
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
由':'分割成7个字段,具体含义如下:
1.用户名称 # 用户的账号名称
2.密码占位符 # 存放账户的口令,暂用x表示,密码保存在/etc/shadow
3.用户的UID # 用户的标识号
4.用户的基本组GID # 组标识号
5.用户注释 # 用户详细信息
6.用户家目录 # root家目录/root,普通用户/home/username
7.用户登陆shell # 用户登陆linux使用的shell # cat /etc/shells
密码文件/etc/shadow
tail -1 /etc/shadow
oldboy:!!:16312:0:99999:7:::
由':'分割成9个字段,具体含义如下:
1.用户登陆名 # 用户账号名称
2.加密后的密码 # 加密过的口令(未设置密码 "!!")
密码格式:$a$b$c :a表示加密算法 b:salt 随机值 c: 加密后的值
3.最近一次密码更改时间 # 从1970年到最近一次更改密码时间之间过了多少天
4.密码最少使用几天 # 密码最少使用几天才可以更改(0无限制)
5.密码最长使用几天 # 密码使用多少天需要修改密码(默认99999)
6.密码到期前警告期限 # 密码过期前多少天提醒用户更爱密码(默认7天)
7.密码到期后保持活跃时间 # 在此期限内,用户依然可以登陆系统并改密码,指定天数后,账户被锁定
8.账户到期时间 # 从1970年起,账户在这个日期前可使用,到期后失效
9.标志 # 保留
使用chage更改用户密码使用情况
-d # 设置最近跟一次更改密码时间。0下次登陆系统强制修改密码
-m # 设置用户两次改变密码之间使用“最小天数”
-M # 设置用户两次改变密码之间使用“最大天数”
-W # 设置密码更改警告时间,将过期警告天数设为“警告天数”
-I # 设置密码过期天数后,密码为失效状态
-E # 设置用户过期时间,账户失效后无法登陆
-l # 显示用户信息
chage l oldboy
二、Linux用户命令
添加用户前需要确定:
默认组是否有特殊要求
是否允许登陆
密码策略
用户有效期
uid是否有特殊要求
使用useradd命令新增用户。adduser软链接指向useradd
-u # 指定uid
-g # 指定默认组
-G # 指定附加组,多个用,号隔开
-d # 指定家目录
-c # 指定注释信息
-M # 不建立家目录
-s # 只用默认shell
-r # 创建系统账户,没有家目录
# 创建用户oldboy,UID5001,基本组students,附加组:sa,dba,注释:2020 student,shell:bash
groupadd sa
groupadd dba
groupadd students
useradd -u 5001 -g students -G sa,dba -c "2020 student" -d /home/oldboy -s /bin/bash oldboy
使用usermod命令修改用户组
-u # 修改UID
-g # 修改基本组
-G # 修改福建组,覆盖原有组
-a # 追加更多的附加组,必须和-G使用:-aG 追加附加组
-md #家目录迁移,必须和-d一起使用
-d # 指定新家目录位置
-c # 修改注释信息
-s # 修改默认shell
-l # 更改登录名
-L # 锁定用户
-U # 解锁用户
使用finger命令查询用户信息以及登陆信息
yum -y install finger
finger oldboy
使用chfn命令修改用户信息
chfn oldboy
使用chsh命令更改用户登陆shell
chsh oldboy
检查用户登陆情况
who
w
使用userdel删除账户
userdel user1
# 连同家目录一起删除
userdel -r oldboy
三、用户创建的原理
Linux创建用户默认会读取/etc/default/useradd的配置文件,优先手动指定。
使用useradd命令新建用户时,会从/etc/skel目录中复制.bash_*文件到家目录,
egrep -v "^#|^$" /etc/login.defs
cat /etc/default/useradd
GROUP=100
HOME=/home # 用户家目录
INACTIVE=-1 # 是否启用账号过期停权,-1,不启用
EXPIRE= # 账号过期时间
SHELL=/bin/bash # 默认shell
SKEL=/etc/skel # 家目录文件的默认文件存放路径
CREATE_MAIL_SPOOL=yes # 创建email
# 用户登陆系统,环境变量被误删,出现-bash-4.2$,解决方法:
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ exit
su - oldboy
四、密码管理
普通用户修改root密码:
passwd root
无交互修改:
echo "123" | passwd --stdin oldboy
随机密码工具
1.内置
echo $RANDOM|md5sum|cut -c 1-10
2.mkpass工具
yum install expect
mkpasswd -l 15 -d 3 -C 5
使用lastpass官方网站管理