CentOs 7 和 SELInux:用户无法在 Apache 的 Webroot 中写入

CentOs 7 和 SELInux:用户无法在 Apache 的 Webroot 中写入

我的用户如果没有 sudo 就无法添加、修改或删除 apache/php 文件。

我的环境是:

  • CentOS Linux 版本 7.2.1511
  • SELinux 状态:已启用
  • 当前模式:执行
  • Apache 2.4.23

我的用户已经在apache的组中了:

$ id
uid=1000(lmeza) gid=1000(lmeza) groups=1000(lmeza),10(wheel),48(apache) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Apache 的 Webroot 已经有标签httpd_sys_content_t

$ ls -Z /var/www
drwxr-xr-x. root   root   system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-sr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 html

我有一个标签为 httpd_sys_rw_content_t 的目录,但我无法在其上写入:

$ ls -lahZ /var/www/html
drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 modules

$ touch /var/www/html/modules/abc.txt
touch: cannot touch ‘/var/www/html/modules/abc.txt’: Permission denied

正确的获取文件访问控制列表:

$ getfacl /var/www/html
getfacl: Removing leading '/' from absolute path names
# file: var/www/html
# owner: apache
# group: apache
# flags: -s-
user::rwx
user:apache:rwx
group::r-x
group:apache:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:group:apache:rwx
default:mask::rwx
default:other::r-x

答案1

在 CentOs 7 上建立 SELinux 和 ACL 权限的正确方法是:

# Restablish the SELInux context:
sudo restorecon -Rv /var/www/html
# Change the owner of the webroot:
sudo chown -R apache:apache /var/www/html
# Change basic permissiones:
sudo chmod -R g+w /var/www/html
sudo chmod g+s /var/www/html
# Establish SELinux permissions:
sudo chcon -Rt httpd_sys_content_t /var/www/html
sudo chcon -Rt httpd_sys_rw_content_t /var/www/html/modules
# Establish ACL permissions:
sudo setfacl -R -m u:apache:rwx /var/www/html
sudo setfacl -R -m d:u:apache:rwx /var/www/html
sudo setfacl -R -m g:apache:rwx /var/www/html
sudo setfacl -R -m d:g:apache:rwx /var/www/html

Drupal 8 的完整脚本位于下一个 Gist: https://gist.github.com/merolhack/854c3d371f31b21fb6cb538fe02a0444

相关内容