Linux 安全基础:用户账户体系
用户核心标识
1.UID(用户 ID):数字唯一标识用户
root 管理员固定 UID=0
系统服务账号 UID<500
普通新建用户 UID 从 500/1000 开始
2.GID(组 ID):用户所属主组数字编号
3.两大核心用户配置文件
(1)/etc/passwd(所有用户公开基础信息,所有人可读)
一行 7 个字段,格式:用户名:x:UID:GID:备注:家目录:默认shell
示例:zhangzy:x:1165:1165:,,,:/home/zhangzy:/bin/bash
x:密码占位符,真实加密密码存放在 /etc/shadow
(2)/etc/shadow(仅 root 可读,存储加密密码)
一行 9 个字段:用户名、加密密码、密码修改天数、最小改密间隔、最大有效期、过期提醒天数、过期禁用天数、账户过期日期、预留字段
用户管理全套命令(root 权限执行)
1.创建用户 useradd
useradd -m 用户名:自动创建家目录,复制 /etc/skel 环境配置文件(.bashrc/.profile 等)
useradd -D:查看新建用户系统默认配置(家目录、默认组、shell、skel 路径)
常用参数:
| 参数 | 功能 |
| ---- | ---- |
| -c 备注 | 添加用户说明信息 |
| -d 路径 | 指定自定义家目录 |
| -g 组 | 指定用户主组 |
| -G 组列表 | 添加附加附属组 |
| -s /bin/dash | 指定登录 shell |
| -u UID | 手动指定 UID |
| -r | 创建系统账号(无家目录) |
2.删除用户 userdel
userdel 用户名:仅删除 passwd/shadow 账户信息,保留家目录文件
userdel -r 用户名:删除账户 + 同步删除家目录、邮件目录(谨慎使用)
3.修改用户信息 usermod
通用参数和 useradd 大部分通用:
-l 新用户名 旧用户名:修改登录名
-L:锁定账户禁止登录;-U:解锁账户
-g 修改主组;-G 覆盖附加组列表
4.密码管理
passwd:修改自己密码;passwd 用户名(root)修改他人密码
passwd -e 用户名:强制用户下次登录修改密码
chpasswd 批量改密:echo "user:123456" | chpasswd
5.专项修改工具
chsh -s /bin/dash 用户名:修改登录 shell(必须写完整路径)
chfn:修改 /etc/passwd 备注字段(姓名、电话等)
chage:管理账户密码有效期、过期时间
Linux 用户组管理
组配置文件 /etc/group
一行 4 字段:组名:占位符x:GID:组内所有用户
查看用户所属组:grep 用户名 /etc/group
组操作命令
1.创建组 groupadd 组名
2.修改组
groupmod -g 新GID 组名:修改组 ID
groupmod -n 新组名 旧组名:重命名组
3.删除组 groupdel 组名
4.用户加入附属组:usermod -G 组名 用户名
-g:替换用户主组;-G:追加附属组,不改变主组
文件权限核心解读
查看权限命令 ls -l / ll
输出权限位结构示例:-rwxr--r--
1.第 1 位:文件类型
- 普通文件;d 目录;l 软链接;b/c 设备文件
2.后 9 位分 3 组,每组 3 位 r w x
第 1 组:属主(文件所有者) 权限
第 2 组:属组(同组用户) 权限
第 3 组:其他用户(所有人) 权限
3.权限字符含义
r read 读;w write 写;x execute 执行;- 无权限
两种修改权限方式 chmod
方式 1:八进制数字权限(最常用)
r=4,w=2,x=1,每组权限相加得到 0~7 数字:
0 --- 无任何权限
4 r-- 只读
6 rw- 读写
7 rwx 读写执行
示例:
chmod 755 test.sh → 属主 rwx,组 r-x,其他 r-x
chmod -R 666 ./dir 递归修改目录下所有文件权限
方式 2:符号权限(增量修改)
格式:[u/g/o/a][+-=][r/w/x]
u = 属主,g = 组,o = 其他,a = 全部
+ 增加权限,- 移除权限,= 直接设置权限
示例:
chmod u-x test.sh 移除属主执行权限
chmod g+w test.txt 给属组增加写权限
修改文件归属(属主 / 属组)
chown:修改文件所有者(仅 root 可执行)
chgrp:仅修改文件属组
练习
以root:x:0:0:root:/root:/bin/bash为例子分析
用户名:root,登录系统的账户名
密码占位符:x,密码哈希实际存于/etc/shadow,此处 x 表示启用影子密码
UID(用户 ID):0,root 超级用户 UID 固定为 0
GID(初始组 ID):0,所属初始用户组的 ID,对应/etc/group里的 root 组
注释信息:root,用户备注、全名等描述内容
家目录:/root,用户登录后默认进入的主目录
登录 Shell:/bin/bash,用户登录后使用的命令解释器;若为/sbin/nologin则禁止交互式登录
以root:$6$xxxx$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:18900:0:99999:7:::为例子分析
用户名:root,和 passwd 里的账户名一一对应
加密密码串:6开头代表 SHA-512 算法哈希,若为!/*表示账户锁定无可用密码
上次改密日期:18900,从 1970-01-01 到上次修改密码的天数
最短改密间隔:0,密码修改后至少 0 天才能再次修改
最长改密有效期:99999,密码有效期最长 99999 天(约 273 年)
过期提前提醒天数:7,密码到期前 7 天向用户发送提醒
密码过期宽限天数:空值,密码过期后还能保留登录权限的天数,过期彻底锁定
账户失效日期:空值,从 1970-01-01 算起,账户彻底禁用的天数
保留预留字段:暂未使用,预留扩展
文件权限位(10 字符):-rw-r--r--
第 1 位:文件类型,-普通文件、d目录、l软链接、c字符设备、b块设备
第 2-4 位:属主(所有者)权限:rw- → 读 (r)、写 (w)、无执行 (x)
第 5-7 位:属组权限:r-- → 仅可读
第 8-10 位:其他用户权限:r-- → 仅可读
硬链接数:1,该文件的硬链接计数
属主:ysc,文件所有者用户名(第一个ysc)
属组:ysc,文件所属用户组名(第二个ysc)
文件大小:36,单位字节
修改时间:7月 2 10:50,文件最后一次修改的时间
文件名:birthday.txt,文件名称