用户管理

用户管理

id		# 命令查看当前登录用户
{root@wickt 桌面]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

前面三段uidgidgroup,是用户的身份信息

字段 格式 说明
uid uid=0(root) 用户ID: - 0:用户ID的数字标识 - (root):对应的用户名 (uid=0 表示 root 用户)
gid gid=0(root) 主组ID: - 0:主组ID的数字标识 - (root):对应的组名 (用户登录时的默认组)
组=0(root) 附加组成员: 当前用户所属的所有组(此处只有一个组 root) (多组显示如 组=0(root),10(wheel),100(users)
类型 UID 范围 说明
Root 用户 0 超级用户,拥有系统完全控制权
系统用户 1-999 服务/进程专用账户(如 www-data),通常禁止登录
普通用户 1000-60000 人类用户账户,权限受限
未分配用户 65534 通常映射为 nobody 用户,用于最低权限运行进程

后面字段environment=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023是系统启动了SELinux显示的相关信息

字段 说明
用户标识 unconfined_u SELinux 用户: - unconfined_u:不受限制的用户 - system_u:系统进程用户 - user_u:普通用户
角色标识 unconfined_r SELinux 角色: - unconfined_r:不受限制的角色 - system_r:系统守护进程角色 - object_r:文件/设备角色
类型标识 unconfined_t 关键字段: - unconfined_t:不受限制的进程/文件 - httpd_t:Web 服务器进程 - ssh_home_t:SSH 相关文件
安全级别 s0-s0:c0.c1023 MLS/MCS 级别: - s0:灵敏度级别(最低) - c0.c1023:类别范围(0到1023的所有类别)

查看运行进程

[root@wickt 桌面]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 244708 13792 ? Ss 16:15 0:02 /usr/lib/systemd/systemd --s
root 2 0.0 0.0 0 0 ? S 16:15 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 16:15 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 16:15 0:00 [rcu_par_gp]

字段含义

字段 示例值 说明
USER root 进程所有者:运行该进程的用户账户(如 root 表示系统特权进程)
PID 1 进程ID:操作系统分配给进程的唯一数字标识符
%CPU 0.1 CPU 使用率:进程占用 CPU 时间的百分比(多核系统可能超过 100%)
%MEM 0.3 内存使用率:进程占用物理内存 (RAM) 的百分比
VSZ 244708 虚拟内存大小:进程使用的虚拟内存大小(KB),包含共享库和映射文件
RSS 13792 常驻内存大小:进程实际占用的物理内存(KB),不含交换空间
TTY ? 控制终端: - ?:进程没有关联终端(通常是守护进程) - tty1:物理终端 - pts/0:伪终端(SSH/远程连接)
STAT Ss/I< 进程状态: 主状态: - S:可中断睡眠(等待事件) - I:空闲内核线程 - R:运行中 - Z:僵尸进程 附加标志: - s:会话领导者 - <:高优先级 - 其他:N(低优先级), +(前台进程)
START 16:15 启动时间:进程开始运行的时间(24小时制)
TIME 0:02 CPU 时间:进程累计占用 CPU 的时间(格式:分:秒
COMMAND /usr/lib/systemd/systemd --s 命令名称:启动进程的命令(带参数),[...]表示内核线程

/etc/passwd用户账户信息文件

[root@wickt 桌面]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

/etc/passwd文件中对每个用户存储了7个相关字段

字段序号 字段名 说明 示例值
1 用户名 用户登录名(区分大小写) root
2 密码占位符 历史遗留字段,现代系统用 x 表示密码存储在 /etc/shadow x
3 UID 用户ID(唯一数字标识) 1000
4 GID 主组ID(用户初始组的数字标识) 1000
5 GECOS 用户描述信息(通常包含全名、联系方式等) John Doe, Room 101
6 家目录 用户登录后的默认工作目录 /root/home/user1
7 登录Shell 用户登录后启动的Shell程序(/sbin/nologin 表示禁止登录) /bin/bash

/etc/shadow用户密码及安全策略文件

[root@wickt 桌面]# cat /etc/shadow
root:$6$h9vhAn9YIV3I9byG$Hvh1hK.ljLUqdSFXQBDqQh4IrwZM70ljU2sEounsHXcSK2.P53XvUvdO9StFI8QnOKsvzyI4bDlWshqP40/HO.::0:99999:7:::
bin:*:18078:0:99999:7:::
daemon:*:18078:0:99999:7:::

/etc/shadow中每个用户包含9个字段

字段序号 字段名 说明 示例值
1 用户名 /etc/passwd 对应 root
2 加密密码 $ 开头的加密字符串(如 $6$salt$hash),!* 表示账户锁定。$1MD5加密,$2Blowfish加密,$5SHA-256解密,$6SHA-512加密 $y$j9T$...
3 最后修改日期 上次修改密码的天数(从 1970-01-01 开始计算) 19258
4 最小密码年龄 修改密码后必须等待的天数(0 表示可立即修改) 0
5 最大密码年龄 密码有效期(天后必须修改),99999 表示永不过期 90
6 警告期 密码过期前多少天开始警告用户 7
7 不活动宽限期 密码过期后账户还可登录的天数(超时则锁定) 3
8 账户过期日期 账户绝对过期日期(从 1970-01-01 开始的天数),空表示永不过期 19300
9 保留字段 未使用

/etc/group用户组信息文件

[root@wickt 桌面]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:

每行代表一个用户组,包含 4 个字段

字段序号 字段名 说明 示例值
1 组名 用户组名称 root
2 组密码 通常为 x 表示密码在 /etc/gshadow! 表示无密码 x
3 GID 组ID(唯一数字标识) 1005
4 组成员列表 属于该组的附加用户(主组成员不在此列),多个用户名用逗号分隔 john,sarah,tom

命令实验

1、创建默认用户

useradd user01		# 创建用户user01
passwd user01 # 修改用户密码,密码为123456
id user01 # 查看用户user01的id信息(UID、GID信息等)
tail -n 1 /etc/passwd # 查看在/etc/passwd文件中的用户信息

image-20250731105357907

2、创建指定用户

useradd user02 -u 1145		# 生成指定UID的用户,-u 指定用户的UID
id user02 # 验证UID是否生效
# tips:随用户自动创建的同名组,用户文件默认属组为基本组

image-20250731110351687

useradd user03 -d /home/user03		# 指定用户家目录路径,-d 指定用户家目录
useradd user03 -d /user03 # 指定用户家目录路径
ls -ld /home/user03 # 验证
ls -ld /user03

image-20250731110448814

3、密码管理

[root@wickt 桌面]# passwd user03		# root修改其他用户密码

image-20250731135856135

[root@wickt 桌面]# su - user03
[user03@wickt ~]$ passwd # 用户自己修改密码

image-20250731140006850

4、用户组管理

创建用户组

groupadd minato
groupadd asahi -g 11451 # 创建用户组并指定组ID

image-20250731153738702

添加用户到附加组

usermod -aG minato user01		# 将user01用户加入minato用户组
usermod -aG asahi user02 # 同理
id user01 # 查看是否正确加入用户组

image-20250731154036833

从组中移除用户

gpasswd -d user01 minato		# 将user01从minato用户组中移除
gpasswd -d user02 asahi

image-20250731154322501

5、用户属性管理

登录管理

禁止用户登录

usermod -s /sbin/nologin user02		# 设置登录shell为/sbin/nologin,达到禁止登录效果

image-20250731153350595

5、共享目录权限验证

创建共享目录并设置权限

mkdir /tmp/shared
chgrp asahi /tmp/shared # 修改/tmp/shared文件的属组为asahi
chmod 770 /tmp/shared # 设置权限为770
ls -ld /tmp/shared

image-20250731155918238

验证组成员权限

su - user02
touch /shared/text.txt # user02可以成功创建文件
su - user01
touch /shared/text2.txt # user01不能成功创建文件

image-20250731160147834

删除用户和用户组

userdel -r user01
userdel -r user02
userdel -r user03

image-20250731160337411

groupdel minato
groupdel asahi

image-20250731160441609

注意事项

当删除用户时没有添加 -r 时,需要采取其他措施

1、pkill -9 -u user01            #强制关闭进程
2、sudo rm -rf /home/user01 # 删除家目录
sudo rm -f /var/mail/user01 # 删除邮件池(如果有)
3、# 列出所有属于user01的文件,并删除,需要2>/dev/null用于忽略权限错误
find / -user user01 -exec rm -rf {} \; 2>/dev/null
4、# 删除配置文件信息
vipw # /etc/passwd
vigr # /etc/group
vipw -s # /etc/shadow
visudo # 安全编辑方
Author: wickt42
Link: http://example.com/2025/07/31/linux用户管理/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.