SELinux(Security-Enhanced Linux)的Context是Linux安全机制的核心组件,用于定义文件、进程、端口等对象的安全属性,包括**用户(User)、角色(Role)、类型(Type)、级别(Level)**四部分(其中Type
是访问控制的关键)。维护SELinux Context需遵循以下步骤:
ls -Z
命令,例如ls -Z /var/www/html/index.html
可显示文件的User:Role:Type:Level
信息(如system_u:object_r:httpd_sys_content_t:s0
)。ps -ZC <进程名>
,例如ps -ZC httpd
可查看httpd进程的Context。semanage port -l
,可查看系统端口与SELinux Type的映射关系。chcon
命令,例如将/virtual
目录的Type
改为httpd_sys_content_t
,可执行chcon -t httpd_sys_content_t /virtual
。注意:此操作不会修改SELinux数据库,仅临时生效。semanage fcontext
添加默认规则:semanage fcontext -a -t httpd_sys_content_t "/virtual(/.*)?"
(-a
表示添加,/virtual(/.*)?
是正则表达式,匹配/virtual
及其子目录);restorecon
应用规则:restorecon -Rv /virtual
(-R
递归处理,-v
显示详细过程)。SELinux的默认Context规则存储在/etc/selinux/targeted/contexts/files/file_contexts.local
(本地自定义规则)和/etc/selinux/targeted/contexts/files/file_contexts
(系统默认规则)中。使用semanage fcontext -l
可列出所有默认规则,semanage fcontext -d <规则>
可删除指定规则。
sestatus
命令,确认SELinux是否启用(enabled
)及运行模式(enforcing
/permissive
/disabled
)。/var/log/audit/audit.log
,使用ausearch -m avc -ts recent
(查看最近的AVC拒绝事件)和aureport -m avc
(生成AVC报告)定位问题。audit2allow
工具从日志中提取拒绝规则并生成策略模块,例如ausearch -m avc -ts recent | audit2allow -M mypolicy
(生成mypolicy.te
模块),再用semodule -i mypolicy.te
加载模块。进程上下文切换是Linux多任务调度的核心机制,指内核保存当前进程的运行状态(上下文),并加载下一个进程的上下文,使其继续执行的过程。维护目标是减少不必要的切换开销,提升系统性能。
mm_struct
)、其他状态(打开的文件描述符、信号处理状态、CPU优先级)。task_struct
(进程描述符)中;task_struct
恢复寄存器、内核栈等);sleep()
、wait()
进入休眠,或执行系统调用(如read()
)等待I/O完成,或调用sched_yield()
主动让出CPU。SCHED_FIFO
/SCHED_RR
);nice
/renice
命令调整进程优先级,避免高优先级进程频繁抢占低优先级进程。aio_read
/aio_write
)或缓冲技术,减少进程因等待I/O而阻塞的时间。chrt
命令设置实时优先级(如chrt -f 99 <command>
),但需谨慎使用,避免影响系统稳定性。sestatus
确认SELinux是否按预期运行,避免意外禁用导致安全风险。vmstat 1
查看cs
(context switching per second)指标,若cs
值过高(如超过10000次/秒),需分析是否因进程过多、I/O瓶颈或调度策略不当导致。semanage fcontext
)前,备份相关配置文件(如/etc/selinux/targeted/contexts/files/file_contexts
),便于恢复。