我使用 Nginx 在 Ubuntu 20.04 上部署了一个 wordpress 站点。
首先我做了:
sudo chown -R www-data:www-data .
哪个解决了我上传插件时遇到的问题。
但是现在,当我使用 ubuntu 用户使用我的 SSH 密钥连接 FTP 时,我可以看到文件,但不能修改它们。
我检查了权限:
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 .
在所有文件中都做了一个,它有效,可以这样做吗,我听说这可能是一个安全问题?
应该是什么好方法呢?
您需要的是替代权限来完成这项工作。只要您在一个功能齐全的文件系统(如 ext4)上,您就可以使用 Linux 访问控制列表(ACL)。
以下链接将让您开始..
https://www.redhat.com/sysadmin/linux-access-control-lists
实际上,您可以在您配置的文件树下的任何位置控制新创建文件的默认 UID 和 GID 设置,这非常适合您的描述。
您还可以使用绑定挂载来允许 Web 服务器以用户/组 www-data 和只读方式访问该树,但允许用户以所需的任何权限进行读写访问。我已经在 apache 和 nginx 上成功地使用了这个方法。
假设您在 /home/share 中有共享的读写目录,并且配置了组权限,以便您的用户可以在那里读取和写入文件。假设 www-data 是 pid 和 gid 33。
首先确保您安装了 bindfs .. ( http://manpages.ubuntu.com/manpages/trusty/man1/bindfs.1.html )
然后你做一个只读绑定挂载,强制用户/组是 www-data : -
因此,这会将 /home/share 中创建的所有文件隐藏在一个备用只读挂载点中,该挂载点可通过 www-data 用户/组读取。
如果您已成功将您的“ubuntu”帐户添加到组 www-data,您现在可以授予您的文件和目录组写入权限。它仍然失败的原因是组 www-data 没有写入。
chmod -R g+w 。
应该为你工作。