如何使用 semanage 递归地获取持久化特定文件类型

How to use semanage to get persist specific file types recursively

我目前是 运行 Centos 7 并且启用了 SELinux 配置,目前我在 /home/user/public_html 和 files/folders 下配置我的 apache docroot 显示上下文标签:

-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 readme.html
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-activate.php
drwxrwxr-x. user apache system_u:object_r:httpd_user_content_t:s0 wp-admin
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-blog-header.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-comments-post.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-config-sample.php
drwxrwxr-x. user apache system_u:object_r:httpd_user_content_t:s0 wp-content
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-cron.php
drwxrwxr-x. user apache system_u:object_r:httpd_user_content_t:s0 wp-includes
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-links-opml.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-load.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-login.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-mail.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-settings.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-signup.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-trackback.php
-rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 xmlrpc.php

我想递归地将当前上下文标签 httpd_user_content_t 分配和更改为 httpd_user_script_exec_t,并且仅适用于 public_html/ 下的所有 .php 文件类型。我已经尝试了下面的代码,但上下文仍然没有改变:

# sudo semanage fcontext -a -t httpd_user_script_exec_t "/home/user/public_html/.*\.php"
# sudo restorecon -Rv public_html
# ls -Z
    -rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 readme.html
    -rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-activate.php
    drwxrwxr-x. user apache system_u:object_r:httpd_user_content_t:s0 wp-admin
    -rw-r--r--. user apache system_u:object_r:httpd_user_content_t:s0 wp-blog-header.php

我认为您缺少告诉 SELinux 您想要使用正则表达式的括号。试试看:

sudo semanage fcontext -a -t httpd_user_script_exec_t "/home/user/public_html/(.*\.php)"