为啥linux下web目录文件权限为777 但是php无法写入

2024-12-03 23:11:07
推荐回答(5个)
回答1:

虚拟机安装linux系统,所有权限都是777的情况下任然无法访问,这个问题卡了我两天,最后尝试了以下这个方法,终于解决了。
解决:关闭SELinux
关闭SELinux的方法:
1. 临时关闭: 使用命令setenforce 0
2. 永久关闭: 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

相关信息:
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
对访问的控制彻底化MAC(Mandatory Access Control)
对于所有的文件,目录,端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、一般用户是没有权限更改的。
TE (Type Enforcement)– 对于进程只赋予最小的权限
Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里定好的。
domain迁移 –防止权限升级
对于用户只赋予最小的权限

回答2:

有可能linux查看的 和 php使用的 不是同一个用户。所以你表面上看起来是777了,实际上php操作的那个用户根本不是

回答3:

chmod -R www 目录
chgrp -R www 目录
试试这两个命令,将目录所有者及所有组改为www用户的

回答4:

建议你用 ll -Z 查看安全上下文。
如果要写入,请确保文件有 http_sys_rw_content_t 标签在目录。

回答5:

那你得看提示什么?不要设置为777,755就行