我使用 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 读取的备用只读挂载点中。