1.4 Linux系统中的用户管理
用户及用户组存在的意义
系统资源是有限的,如何合理分配系统资源?
用户存在的意义
用户是操作者在系统中的身份标识,用户的存在是为了限制权限
身份 account
授权 author
认证 auth
**3A机制组成系统中最底层的安全架构
用户组存在的意义
用户组是一个逻辑容器,是用户的集合,方便对用户进行归类和统一授权
用户及用户组在系统中的存在方式
计算机对数字敏感------------------>id
人类对字符串敏感------------------>名称
id<------------>名称 用户信息必须被记录到文件中用户才能存在
用户就是/etc/passwd文件中的一行字符
用户组就是/etc/group 文件中的一行字符
用户切换
用户查看
whomai ##查看当前用户
*****************************************************************
id ##查看用户id信息
-u ##查看用户的用户id
-g ##查看用户主组id
-G ##查看用户所有的组的id
-n ##显示名称
用户id范围:
0-65535
0: ##Linux超级用户ID
1-999: ##Liunx系统自用ID
1000-65535: ##用户级ID
**以上ID设定规则都被记录在/etc/login.defs
用户切换
su - username
- #切换用户环境
username ##如果root ----> commonuser 不需要后者密码
##commonuser ----> root 需要密码
##commonuser ----> commonuser 需要密码
*注意:在做用户切换时当使用完毕用户身份及时退出
不要在一个shell中反复执行su命令,在一个shell中反复执行su命令会导致环境错乱
用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell
/etc/group ##组身份信息文件
组名称:组密码:组id:组的附加成员
/etc/skel/.* ##用户环境配置文件模板
/etc/shadow ##用户认证信息文件
/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
用户和用户组建立及删除
使用如下命令可监控用户的建立及删除过程
watch -n 1 "tail -n 4 /etc/passwd /etc/group;echo =======;ls -l /home"
添加用户
useradd username ##用户建立
-u id username ##uid 2**16=0-65535
##0 表示超级用户
##1-200 系统预留id
##201-999 系统用户
##1000-60000 用户级用户
##/etc/login.defs 记录用户建立的默认规则
-g id username ##主组id
-G id username ##附加组id
-d dir username ##指定用户家目录
-M username ##建立用户时不建立家目录
-c word username ##指定用户说明
-s shell username ##指定用shell
删除用户
userdel -r username ##用户删除 -r 删除用户的系统配置文件
用户组的建立
groupadd groupname ##组建立
-g id groupname ##指定组名称
用户组的删除
groupdel groupname ##组删除
用户和用户组的信息管理
用户信息管理
usermod
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组身份
-aG #添加用户附加组身份
-c #更改用户说明
-d #更改家目录指向
-md #更改家目录指向同时更改家目录名称
-s #更改默认shell
-L #冻结账号
-U #解锁
用户组管理
groupmod -g ##更改用户组id
用户认证信息管理
用户认证信息保存在/etc/shadow文件里
/etc/shadow 文件内容说明
用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
用户名称
passwd -S song ##查看密码状态
用户密码加密字符
更改密码
passwd song ##只有root可以执行 “echo 123 | passwd --stdin lee”
*******************************
passwd ##普通用户改密码
Changing password for user song.
Current password: #输入原始密码
New password: #输入新密码(8位以上无序数字+无序字母组合)
Retype new password: #重复输入
passwd: all authentication tokens updated successfully.
冻结认证
passwd -l lee ##冻结账号认证
passwd -u lee ##解锁账号认证
密码删除
passwd -d song ##删除用户密码
密码使用天数(从1970-1-1算其到今天的时间)
passwd -e song ##修改默认使用时间为0
chage -d 0 song ##账号必须改密码才能登陆系统
密码最短有效期
passwd -n 1 song ##song在1天内不能改密码
chage -m 1 song ##song在1天内不能改密码
密码最长有效期
passwd -x 40 song ##40天内song用户必须更新密码否则会被冻结
chage -M 30 song ##30天内song用户必须更新密码否则会被冻结
密码过期警告
passwd -w 2 song ##账号过期前2天警告
chage -W 1 song ##账号过期前1天警告
认证非活跃天数
passwd -i 2 song ##账号认证最大时间超过后还能用2天
chage -I 1 song ##账号认证最大时间超过后还能用1天
#账号认证到期时间
chage -E "2021-11-11" ##到2021-11-11这天账号会被冻结
#未启用功能
用户权力下放
系统中普通用户无法执行系统管理命令,如果需要普通用户执行系统管理动作那么需要root用户来进行授权
普通用户获取授权方式”sudo“,可以使普通用户使用指定的用户身份呢运行命令
授权方法:
visudo ##此命令作用是编辑/etc/sudoers并提供语法检测
*************************************
*在文件的100行左右 ##代码规范性
username hostname=(newusername) [NOPASSWD:] /command, /command1
*************************************
song用户在song.org主机=(用超级用户身份) 执行useradd命令
song song.org=(root) /usr/sbin/useradd
*************************************
lee用户 在song.org使用超级用户 免密 执行useradd 和 userdel
lee song.org=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel