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