我正在尝试管理运行nginx的debian网络服务器上的文件权限,以便wordpress可以编辑、上传和升级而无需使用ftp。我还希望能够使用 sftp 使用我的用户帐户登录。
我知道这个问题之前已经被问过,请参阅 here 或here ,但按照这些答案中的步骤进行操作并不令人满意。目前的设置如下:
wordpress 文件夹位于
/var/www/html/
我创建了一个新用户(“用户”)和组(“组”)。服务器用户是 “www-数据”。
wordpress 文件夹中的所有文件均归 user:group 所有。
“user”和“www-data”都被设置为属于“group”。
我更改了文件和文件夹权限,如下所示:
find /var/www/html/ -type d -exec chmod 2775 {} + find /var/www/html/ -type f -exec chmod 664 {} +
我将默认 umask 设置为 0002。
我本以为这应该可行,但目前我可以从 WordPress 中编辑和上传文件,但不能更新 WordPress、功能或主题。
- 它也不适用于将“group”设置为“user”和/或“www-data”的默认组(通过编辑
/etc/passwd
)。
或者,我将 /var/www/html/
中的所有文件都归 user:www-data 所有,但也没有成功。
我似乎让 wordpress 在没有 ftp 的情况下更新的唯一方法是让 wordpress 文件夹及其所有文件归“www-data”所有。不幸的是,这样做的结果是我无法使用 sftp 客户端上传文件(因为目标现在是不属于“用户”的文件夹)。
怎么会这样呢?据我了解,这些步骤应该为 WordPress 提供适当的权限,但仍然有问题。
我们将非常感谢您的帮助。
最佳答案
在 Debian 服务器上,我按照以下步骤操作。正如我读到的那样,这可能不是最安全的解决方案 here ,但它有效(wordpress 可以编辑、上传和升级 - 我可以使用 sftp 上传)。
创建一个新用户“user”
创建一个新组“group”(您也可以选择使用 www-data 作为组)
将用户和 www-data 添加到组
usermod -G group user usermod -G group www-data
检查
/etc/group
中的组数字 ID 例如组:x:1002更改
/etc/passwd
中 www-data 和用户的默认组 例如用户:x:1001:1002:...在
/etc/php5/fpm/pool.d/www.conf
(就我而言)更改group=www-data
至;group=www-data
。现在 nginx 将使用我们刚刚设置为“group”的默认 www-data 组。重新加载服务(php5-fpm)。递归地将 WordPress 文件夹的所有者更改为 user:group
chown -R user:group /var/www/html
更改 WordPress 文件夹中的权限(第二个是将新文件分配给父文件夹的组)
find /var/www/html/ -type d -exec chmod 2775 {} + find /var/www/html/ -type f -exec chmod 664 {} +
将 umask 更改为
UMASK 0002
在/etc/login.defs
在 WordPress 中,通过添加
define('FS_METHOD','direct');
强制直接上传(因此没有 ftp)到 wp-config.php。 就我而言,这是至关重要的一步。为了让一切正常工作,我需要重新启动。
关于wordpress - LEMP + wordpress 文件权限能够编辑、升级和使用 sftp 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879884/