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