1. 安装SELinux基础工具包
在Debian中配置context(SELinux上下文)前,需先安装必要工具。执行以下命令安装SELinux核心组件、策略及管理工具:
sudo apt update && sudo apt install selinux-basics selinux-policy-default policycoreutils-python-utils
安装完成后,需通过sudo selinux-basics install初始化SELinux配置,并重启系统使更改生效。
2. 查看当前SELinux状态与上下文
sestatus命令查看SELinux是否激活(显示“SELinux status: enabled”即为启用),以及当前模式(enforcing/permissive/disabled)。ls -Z命令显示指定路径的SELinux上下文(如unconfined_u:object_r:httpd_sys_content_t:s0),包含用户、角色、类型及敏感度等级。3. 临时修改SELinux上下文(仅当前会话有效)
若需快速调整单个文件/目录的上下文(如测试Web服务器权限),可使用chcon命令。例如,将/var/www/html/index.html设置为HTTP内容类型:
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
注意:此方式在文件系统重标记或重启后会失效,仅适用于临时调试。
4. 永久修改SELinux上下文(推荐)
semanage fcontext命令为文件/目录及其子项添加持久化规则(支持通配符)。例如,将/data/logs目录及其所有子文件/目录设置为var_log_t类型:sudo semanage fcontext -a -t var_log_t "/data/logs(/.*)?"restorecon命令递归应用新规则,覆盖原有上下文:sudo restorecon -Rv /data/logs5. 查看与管理可用上下文类型
semanage fcontext -l命令查看系统预定义的上下文类型(如httpd_sys_content_t、var_log_t、mysqld_db_t等),帮助选择合适的类型。audit2allow从拒绝日志生成自定义模块)扩展类型,但需谨慎操作以避免安全风险。6. 验证上下文修改结果
每次修改上下文后,务必用ls -Z命令确认更改是否生效。例如,验证/var/www/html目录的上下文:
ls -Z /var/www/html
正确输出应显示目标类型(如httpd_sys_content_t),确保权限配置符合预期。
7. 调整SELinux模式(调试与生产环境切换)
setenforce命令临时更改SELinux模式(0=permissive,1=enforcing)。例如,切换到permissive模式(仅记录拒绝日志,不阻止操作):sudo setenforce 0/etc/selinux/config文件,修改SELINUX=参数(如SELINUX=permissive),保存后重启系统使更改生效。enforcing模式以确保安全,仅在调试时切换至permissive。8. 处理常见场景示例
/var/www/html设置httpd_sys_content_t类型,允许Apache/Nginx访问:sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" && sudo restorecon -Rv /var/www/html/var/lib/mysql设置mysqld_db_t类型,允许MySQL进程读写:sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?" && sudo restorecon -Rv /var/lib/mysql/opt/myapp设置myapp_exec_t类型(需先确认类型存在或创建自定义策略):sudo semanage fcontext -a -t myapp_exec_t "/opt/myapp(/.*)?" && sudo restorecon -Rv /opt/myapp