温馨提示×

Ubuntu SELinux用户管理

小樊
34
2025-12-10 13:42:57
栏目: 智能运维

Ubuntu 上的 SELinux 用户管理

一 基础准备与启用

  • Ubuntu 上,SELinux 默认未启用,需先安装启用组件并调整内核启动参数。建议安装:selinux-basics、selinux-policy-default,并在 /etc/default/grubGRUB_CMDLINE_LINUX 中添加 security=selinux,执行 update-grub 后重启。系统启动后,SELinux 有三种模式:Enforcing(强制)、Permissive(宽容)、Disabled(关闭);配置文件为 /etc/selinux/config,常用策略为 targeted。从 Disabled 切换到其他模式或反向切换时,需要重启;EnforcingPermissive 之间可动态切换(使用 setenforce 0/1)。用于排错的常用命令:getenforce、sestatus、setenforce、ausearch -m AVC -ts today、dmesg | grep -i type=1300;若需开机重新标记文件系统,可创建 /.autorelabel 并重启。

二 核心概念与常用命令

  • SELinux 身份由三元组构成:SELinux 用户:角色:类型(如 unconfined_u:unconfined_r:unconfined_t)。其中 system_u 用于系统进程与对象,unconfined_u 为不受限用户,root 在 Ubuntu 常见为 unconfined_u;角色如 system_r、staff_r、user_r;类型(域)如 user_t、staff_t、sysadm_t。常用命令:查看映射 semanage login -l;列出可用 SELinux 用户 seinfo -u;查看用户与角色 semanage user -l;查看当前用户上下文 id -Z;查看进程上下文 ps -eZ;查看文件上下文 ls -Z。注意:system_usystem_r 不应手动关联到 Linux 用户。

三 管理 Linux 用户到 SELinux 用户的映射

  • 映射将 Linux 用户名 绑定到 SELinux 用户(并可指定默认角色与级别),命令格式:semanage login -a -s <SELinux用户> -r <角色> -l <Linux用户名>。示例:将本地 admin 映射为 staff_u 并赋予 sysadm_r 角色,级别 s0semanage login -a -s staff_u -r sysadm_r -l admin。修改后,该用户下次登录将获得对应的 SELinux 身份;可用 semanage login -l 核对。提示:若需将用户置于受限环境,可将 staff_u 换为 user_u(其默认角色 user_r 权限更受限);变更前建议在 Permissive 模式验证,避免锁死。

四 常见场景与排错要点

  • 场景一:为现有用户调整默认角色或级别。先确认当前映射与可用角色:semanage login -l、semanage user -l;再按需调整映射(如将某用户从 staff_u 调整为 user_u),并验证登录后的 id -Z 是否符合预期。场景二:排查访问被拒。优先查看 AVC 拒绝日志:ausearch -m AVC -ts todaydmesg | grep -i type=1300;必要时用 audit2why、audit2allow 辅助分析策略原因。场景三:文件系统标签异常。若大量文件缺失标签,创建 /.autorelabel 并重启以自动重标记;也可用 restorecon -R /path 恢复默认标签。场景四:误配导致无法登录。临时将系统切到 Permissive 模式(setenforce 0)恢复访问,修正映射后再切回 Enforcing

0