一.用户及用户组存在的意义
1. 用户存在的意义
系统中的资源是有限的,如何合理分配资源,这需要3A机制来完成
1)3A机制
Linux中的3A机制包括身份认证(Authentication)、授权(Authorization)和审计(Accounting),这些机制共同构成了系统中最底层的安全架构
2)身份认证(Authentication)
身份认证是验证用户身份的过程,确保只有合法用户才能访问系统。常见的认证方式包括用户名/密码、数字证书、生物识别等。
3)授权(Authorization)
授权是在用户通过认证后,根据其身份和角色分配相应的权限,决定用户可以访问哪些资源或执行哪些操作。
4)审计(Accounting)
审计记录并监控用户访问和操作系统的活动,以便在发生安全事件时进行追溯和分析。审计日志是安全审计的重要依据。
2. 用户组存在的意义
用户组是一个逻辑容器,并不能单独使用,其错在意义在于对用户进行归类和统一授权在系统中有两种组的类型
初始组:用户建立后自动生成的组,是用户的主组
附加组:用户需要某些权限所加到的组,为了取得改组拥有的权力
3. 用户及用户组在系统中存在的方式
在系统中用户和组都是用数字来表示,我们对这个数字成为ID
用户的ID范围:0-65535
0: root用户的ID
1-999: 系统用户ID
999-65545: 操作用户ID
/etc/passwd,/etc/group文件系统中的用户都是以ID的形式存在,但是作为操作者对于数字是不敏感的,所以我们为用户设定了文字别名并把这个别名填写到了/etc/passwd文件中,所以/etc/passwd就是用户信息文件,/etc/group就是组信息文件如果用户ID在/etc/passwd文件中有记录,那么系统就认为这个用户是存在的,相反系统认为这个用户不存在
二.用户涉及到的系统配置文件
1. /etc/passwd
用户存放用户信息,用:分割每一列,每行有7列
2. /etc/group
用户组信息文件,用:分割,每行4列
3. /etc/shadow
用户存认证信息
4. /etc/skel/.*
用户的环境配置文件
.bash_profile #环境变量配置文件
.bashrc #shell配置文件
.bash_history #历史记录
.bash_logout #用户退出shell执行命令
5. /home/username
用户的家目录集合
6. /var/spool/mail/username
用户邮件存放文件
三. 用户管理
1. 用户信息查看
1)查看当前用户
whoami ##查看当前用户
2)查看指定用户ID
id ##查看用户id信息
-u ##查看用户的用户id
-g ##查看用户主组id
-G ##查看用户所有的组的id
-n ##显示名称
2. 切换用户
1)切换用户
su 用户名称
2)切换用户及用户环境变量
su - 用户
- ##切换用户环境
username ##如果root ----> commonuser 不需要后者密码
##commonuser ----> root 需要密码
##commonuser ----> commonuser 需要密码
3. 用户和用户组的建立及删除
1)用户建立
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
2)用户删除
userdel -r username ##用户删除 -r 删除用户的系统配置文件
##如果在删除用户时没加-r参数,那么可以用rm手动删除残留资源
3)组建立及删除
groupadd groupname ##组建立
-g id groupname ##指定组名称
groupdel groupname ##组删除
4)用户和组的信息管理
更改组信息
groupmod -g 组名称
更改用户信息
usermod
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组身份
-aG #添加用户附加组身份
-c #更改用户说明
-d #更改家目录指向
-md #更改家目录指向同时更改家目录名称
-s #更改默认shell
-L #冻结账号
-U #解锁
五.用户认证信息管理
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 lee ##冻结账号认证
passwd -u lee ##解锁账号认证
passwd -d lee #密码删除)
#密码使用天数
*从1970-1-1算其到今天的时间
passwd -e lee ##修改默认使用时间为0
chage -d 0 lee ##账号必须改密码才能登陆系统
#密码最短有效期
passwd -n 1 lee ##lee在1天内不能改密码
chage -m 1 lee
#密码最长有效期
passwd -x 40 lee ##40天内lee用户必须更新密码否则会被冻结
chage -M 30 lee
#密码过期警告
passwd -w 2 lee ##账号过期前警告时间
chage -W 1 lee
#认证非活跃天数
passwd -i 2 lee ##账号认证最大时间超过后还能用多久
chage -I 1 lee
#账号认证到期时间
chage -E "2025-05-11" ##到2025-5-11这天账号会被冻结
六.权力下放
在系统中普通用户时无法执行系统管理命令的如果需要普通用户执行系统管理动作那么需要root用户来进行授权
#普通用户授权方式 “sudo”
#作用:
#可以使普通用户使用指定的用户身份呢运行命令
授权方法:
Visudo ##此命令作用是编辑/etc/sudoers并提供语法检测
在文件的100行左右 ##代码规范性
Username hostname=(newusername) [NOPASSWD:] /command, /command1
#lee用户在Timinglee主机=(用超级用户身份) 执行useradd命令
lee Timinglee=(root) /usr/sbin/useradd
#timinglee用户 在Timinglee主机中以超户免密执行useradd和userdel
timinglee Timinglee= (root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
测试效果:
su - lee
sudo useradd test1 ##在lee第一次使用sudo命令时需要输入lee密码
exit #退出lee
su - timinglee
sudo userdel -r test1 ##test可以免密执行userdel 命令