【问题标题】:(nginx/selinux) Permission denied error for sessions but files are created(nginx / selinux)会话的权限被拒绝错误,但创建了文件
【发布时间】:2016-01-04 07:57:48
【问题描述】:

我有 centos 7 运行 nginx/php-fpm 并启用了 selinux。

我知道互联网上有很多类似的问题,但我的有点不同。 nginx 设置 selinux 后正在创建文件,但它仍然说无法读取它...

tail /var/log/nginx/error.log

2015/10/07 16:18:25 [错误] 17860#0: *79 FastCGI 在标准错误中发送:“PHP 消息:PHP 警告:session_start(): 打开(/var/lib/php/session/sess_sk456vdemnp391spiv3i622i96,O_RDWR) failed: Permission denied (13) in /home/web/api/functions.php 上线 9

ls -la /var/lib/php/session/

total 12 drwxrwx---+ 2 nginx nginx 82 Oct 7 16:18 。 drwxr-xr-x。 3 根根 20 Oct 5 15:58 .. -rw-------+ 1 nginx nginx 0 10 月 7 日 16:15 sess_52psgccceh91vokbau4pq08946 -rw-------+ 1 nginx nginx 0 Oct 7 16:18 sess_sk456vdemnp391spiv3i622i96

*php-fpm 和 nginx 的用户是“nginx” *selinux 策略已更改为允许访问会话文件夹

你知道我应该查看哪个日志来找出问题所在吗?

谢谢!

【问题讨论】:

  • 来自 selinux 的审计日志通常位于 /var/log/audit.log 或 /var/log/audit/audit.log,如果审计守护进程没有运行检查 /var/log/ avc.log
  • @qwattash 嗨,我发现了以下内容。 type=AVC msg=audit(1444368090.415:896):avc: denied { write } for pid=12615 comm="php-fpm" path="/var/lib/php/session/sess_9r9np7hcsbpfcr2cg4v3b05l86" dev="dm-0" ino=68184251 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=file

标签: php linux session nginx selinux


【解决方案1】:

我发现了问题!

我的 /var/lib/php/session 是 system_u:object_r:httpd_sys_content_t:s0 而不是 system_u:object_r:httpd_sys_rw_content_t:s0。这使得 nginx 无法编辑东西(只能创建)。

解决问题: 1-重置文件夹策略:

restorecon -v "/var/lib/php/session"

2-然后设置好一个

semanage fcontext -a -t httpd_sys_rw_content_t /var/lib/php/session

你甚至不必重新加载/重启 nginx :P

【讨论】:

  • 正确的目标字符串应该是“/var/lib/php/session(/.*)?”包括会话目录下的所有内容。之后运行“restorecon -R /var/lib/php/session”将新策略应用到会话目录。
【解决方案2】:

遇到了同样的问题。 就我而言,解决方案是将目录的所有者更改为 nginx

chown nginx /var/lib/php/session

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2016-04-21
    • 2021-01-05
    • 2018-02-10
    • 2018-05-24
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多