方便的 WordPress Web 目录权限?

方便的 WordPress Web 目录权限?

我正在为 WordPress 设置一个网络服务器。

WordPress 要求其内容归 www 用户所有,否则在安装插件和主题时会出现问题(要求提供服务器 FTP 凭证,我知道这很愚蠢)。

这不会是个问题,但我想给一个 ssh 用户一个空的 WWW 目录,以便他们可以自己下载/解压/设置 WordPress(放手法)。

在他们下载并解压 WordPress 档案后,所有文件都归该特定用户所有,并且由于前面提到的原因,他们在管理插件/主题安装或更新时遇到了问题。

实现这两个目标最方便、最安全的方法是什么,让用户有宾至如归的感觉,并拥有功能齐全的 WordPress 安装?

似乎 setfacl 可能是一个不错的解决方案,可以使一个目录下的所有新内容继承我设置的权限。

有人能就如何实现我的目标提供提示或建议,甚至指导我其他方向吗?

我正在使用带有 PHP-FPM 的 Nginx。

谢谢!

答案1

另一个选择是,您可以创建一个脚本,更改他们在某个目录中上传的文件的所有权。您可以设置 sudoers 文件,这样他们就只能以 root 身份运行该脚本,而无需密码。

如果操作不当,这可能会造成安全漏洞,但如果你操作正确,那就没什么大不了的。需要确保以下几点

  1. 除了 root 之外,没有人可以写入脚本或包含脚本的目录。我建议将其放在 /root 中,并为chattr +i它设置不可变属性 ( )。
  2. 确保它的编码非常严格,以确保它只能执行您想要的操作并且不会被滥用。
  3. 理想情况下,不要让任何人有读取权限,以减少发现#2 中的错误的机会。

答案2

在您的 wp-config.php 中将常量添加/更新FS_METHOD为“direct”,您可能无需提供任何 FTP 详细信息即可进行更新。

define('FS_METHOD', 'direct');

FS_METHOD 强制文件系统方法。它只能是“direct”、“ssh2”、“ftpext”或“ftpsockets”。通常,只有在遇到更新问题时才应更改它。如果更改它但没有帮助,请将其改回/删除。在大多数情况下,如果自动选择的方法不起作用,则将其设置为“ftpsockets”将起作用。

(主要偏好)“直接”强制它使用 PHP 内部的直接文件 I/O 请求,这可能会导致配置不当的主机出现安全问题,在适当的时候会自动选择此选项。

(第二首选项)“ssh2”表示如果安装了 SSH PHP 扩展,则强制使用它(第三首选项)“ftpext”表示强制使用 FTP PHP 扩展进行 FTP 访问,最后。

(第四偏好)“ftpsockets”利用 PHP 套接字类进行 FTP 访问。

来源:https://codex.wordpress.org/Editing_wp-config.php

答案3

我找到了解决方案。是我太愚蠢了。

我从其他主机复制了 php-fpm 池配置,但忘记定义用户:用户权限,因此 php 进程以该用户身份运行。

更改这一点并将 nginx 用户(www)添加到用户组即可解决问题。

相关内容