Linux WebServer,权限为 755 的文件夹不可写

Linux WebServer,权限为 755 的文件夹不可写

我运行一个新的 Linux 网络服务器 (Debian、Plesk),我想安装一些需要可写文件夹的 php 应用程序,如果我将文件夹权限设置为 755,网络应用程序仍然无法在文件夹上写入,它只接受 777 模式,我该如何配置服务器以接受 755 作为可写文件夹?谢谢

编辑:这个线程帮助我找到一个 Plesk 附加组件forum.parallels.com/showthread.php?t=106297

答案1

您需要将要写入的目录的权限更改为运行 Web 服务器的用户。在命令行中输入“top”,查看 Web 服务器进程以哪个用户身份运行。然后,在命令行中输入 sudo chown 。这应该使目录对您的 Web 服务器具有 755 权限。

答案2

Web 服务器将在与您自己的用户/组组合不同的用户/组组合下运行。由于 755 表示用户的 rwx 和组和其他人的 rx(在大多数情况下,服务器将属于“其他”),因此它无法写入文件夹是有道理的。如果您需要它在那里写入,您必须允许写入它。

还有一个选项是使用 ACL(如果底层文件系统支持的话)。如下所示:

[dado@liliput tmp]$ mkdir test
[dado@liliput tmp]$ getfacl test
# file: test
# owner: dado
# group: dado
user::rwx
group::rwx
other::r-x

[dado@liliput tmp]$ setfacl -m g:apache:rwx test
[dado@liliput tmp]$ getfacl test
# file: test
# owner: dado
# group: dado
user::rwx
group::rwx
group:apache:rwx
mask::rwx
other::r-x
[dado@liliput tmp]$ ll -d test
drwxrwxr-x+ 2 dado dado 4096 Pro 10 17:48 test

这将授予 apache 组写入权限,即使它通过“其他”权限获得该权限。请注意权限后面的 + 号,它表示已设置 ACL。

另外,如果你的主机启用了 SELinux(我不知道这在 Debian 中是否常见,但对于 RHEL 克隆版来说很常见),你可以获得权限问题尽管应该允许(这被称为文件上下文

答案3

似乎 Web 服务器在默认用户 www-data 下工作,而您的文件所有者是另一个用户。因此 Web 服务器无法写入。如果您的 Web 服务器是 apache,则有几种方法可以解决此问题:1. 使用 apache2-mpm-itk,它允许为每个虚拟主机设置不同的用户。2. 在 /etc/apache2/env 文件中将默认 www-data 更改为您的用户并重新启动 apache。3. 使用 acl 并让 www-data 写入您的文件。

请记住,777 对于 Web 服务器来说不是一个好主意。

相关内容