SELinux 用户,如何查看u之前的是unconfind_u还是system_u
SELinux 安全上下文结构
user : role : type : level例子1:system_u : system_r : unconfined_t : s0-s0 : c0.c1023例子2:unconfined_u : unconfined_r : unconfined_t : s0第一位:SELinux 用户(user):system_u、unconfined_u、staff_u、SELinux 定义的安全用户(不是 Linux 普通用户)第二位:角色(role):system_r、unconfined_r 定义可以执行的域转换第三位:类型(type):unconfined_t、httpd_t SELinux 中最核心的访问控制单位第四位:级别(level):s0、s0-s0:c0.c1023 MLS/多级安全级别(常用于军用系统)
在 SELinux 安全上下文中:
-
system_u
:表示系统服务进程使用的安全用户,例如 init、systemd、udevd。 -
unconfined_u
:是一个“无限制”的用户,通常给普通用户进程使用(默认 root 登录就是它)。 -
staff_u
:是更严格受控的用户(如 RHEL 中 staff 用户)。
查看上下文方法
# 查看进程上下文ps -eZps -Z -p # 查看文件上下文:ls -Z /path/to/file例子:ps -Z#看到:unconfined_u:unconfined_r:unconfined_t:s0 1234 pts/0 00:00:00 bash# 说明你当前 bash 是在 unconfined_u 下运行的,而系统服务(如 systemd)则是:system_u:system_r:init_t:s0 1 ? 00:00:01 systemd
例子:
u:object_r:rootfs:s0 tmpu:object_r:updater_file:s0 updateru:object_r:vendor_file:s0 vendor
uid=1000(username) gid=1000(username) groups=1000(username) context=u:object_r:rootfs:s0
在这个例子中,u之前的是 unconfined_u
,如果是 system_u
,那么 context
中会显示 system_u
id命令的几个参数
-n 打印名称而不是数字 ID(与 -Ggu 一起使用)
-G 仅显示组 ID
-g 仅显示有效组 ID
-r 显示真实 ID 而非有效 ID
-u 仅显示有效用户 ID