我的 Wordpress / nginx / ubuntu 使用 SSH 时,FTP 用户没有写入权限

我的 Wordpress / nginx / ubuntu 使用 SSH 时,FTP 用户没有写入权限

我使用 Nginx 在 Ubuntu 20.04 上部署了一个 wordpress 网站。

首先我做的是:

sudo chown -R www-data:www-data .

这解决了我在上传插件时遇到的问题。

但是现在,当我使用 SSH 密钥连接 FTP 时,使用 ubuntu 用户,我可以看到文件,但不能修改它们。

我检查了权限:

ubuntu@ip-172-20-36-190:~/site$ ls -al
total 220
drwxr-xr-x  5 www-data www-data  4096 Mar 18 12:31 .
drwxr-xr-x  7 ubuntu   ubuntu    4096 Mar  5 09:04 ..
-rw-r--r--  1 www-data www-data   405 Feb  6  2020 index.php
-rw-r--r--  1 www-data www-data 19915 Mar 10 00:26 license.txt
-rw-r--r--  1 www-data www-data  7345 Mar 10 00:26 readme.html
-rw-r--r--  1 www-data www-data  7165 Mar 10 00:26 wp-activate.php
drwxr-xr-x  9 www-data www-data  4096 Feb 22 15:10 wp-admin
-rw-r--r--  1 www-data www-data   351 Feb  6  2020 wp-blog-header.php
-rw-r--r--  1 www-data www-data  2328 Oct  8 21:15 wp-comments-post.php
-rw-r--r--  1 www-data www-data  2913 Feb  6  2020 wp-config-sample.php
-rw-r--r--  1 www-data www-data  3216 Mar  4 17:06 wp-config.php
drwxr-xr-x  8 www-data www-data  4096 Mar  3 13:23 wp-content
-rw-r--r--  1 www-data www-data  3939 Jul 30  2020 wp-cron.php
drwxr-xr-x 25 www-data www-data 12288 Mar 10 00:26 wp-includes
-rw-r--r--  1 www-data www-data  2496 Feb  6  2020 wp-links-opml.php
-rw-r--r--  1 www-data www-data  3313 Mar 10 00:26 wp-load.php
-rw-r--r--  1 www-data www-data 44993 Mar 10 00:26 wp-login.php
-rw-r--r--  1 www-data www-data  8509 Apr 14  2020 wp-mail.php
-rw-r--r--  1 www-data www-data 21125 Mar 10 00:26 wp-settings.php
-rw-r--r--  1 www-data www-data 31328 Mar 10 00:26 wp-signup.php
-rw-r--r--  1 www-data www-data  4747 Oct  8 21:15 wp-trackback.php
-rw-r--r--  1 www-data www-data  3236 Jun  8  2020 xmlrpc.php

我尝试执行 chmod -R +w ,但我无法对我的文件具有写访问权限。

我还尝试将 ubuntu 用户添加到 www-data 组,使用

sudo usermod -aG www-data $USER

但我仍然无法对我的文件拥有写权限

chmod -R 777 .在所有文件中都做了这个操作,并且成功了,这样做可以吗,我听说这可能是一个安全问题?

有什么好的方法吗?

答案1

如果您已成功将您的“ubuntu”帐户添加到组 www-data,您现在可以授予您的文件和目录组写入权限。它仍然失败的原因是组 www-data 没有写入权限。

chmod -R g+w 。

应该对你有用。

答案2

您需要的是替代权限才能使其工作。只要您在功能齐全的文件系统(如 ext4)上,您就可以使用 Linux 访问控制列表(ACL)。

以下链接将帮助您入门..

https://www.redhat.com/sysadmin/linux-access-control-lists

实际上,您可以控制您配置的文件树下的任何位置新创建文件的默认 UID 和 GID 设置,这非常适合您描述的内容。

答案3

您还可以使用绑定安装来允许 Web 服务器以用户/组 www-data 和只读身份访问该树,但允许用户根据需要以任何权限进行读写访问。我已在 apache 和 nginx 中成功使用了此方法。

假设您在 /home/share 中有一个共享的读写目录,并且该目录配置了组权限,以便您的用户可以读取和写入其中的文件。假设 www-data 的 pid 和 gid 都是 33。

首先确保您已经安装了 bindfs.. (http://manpages.ubuntu.com/manpages/trusty/man1/bindfs.1.html

sudo apt-get install bindfs

然后执行只读绑定挂载,强制用户/组为 www-data :-

bindfs -r --force-user=www-data --force-group=www-data /home/share /var/www/html

因此,这会屏蔽在 /home/share 中创建的所有文件,这些文件位于可通过 www-data user/groups 读取的备用只读挂载点中。

相关内容