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