首先,将自己添加到组
www-data
中。
usermod -a -G www-data (your username)
然后:
chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA
应该可以解决问题,除非您的/home/myuser
上的权限不允许其他用户访问。
第一个命令将文件夹的组所有权更改为web服务器的组。第二个命令给予www-data
组成员读取、写入、进入目录的权限,并且组s
标志将确保在该目录内创建的任何文件都以www-data
作为组 - 因此,如果您以myuser
身份创建文件,则www-data
用户将具有访问权限。
注意:这还取决于您的用户帐户和Web服务器的umask
设置:您需要确保在folderA中创建的文件具有组rw
访问权限(并且在其中创建的目录需要组rwx
)
如果您的Web服务器没有进入您的/home/myuser
目录的权限(非常明智),那么它将无法进入,除非您采取其他措施。两种解决方案:
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(这是一个丑陋的技巧,在重启后需要重复操作。但是它是一个强大的技巧,也可以用来使文件夹在SSH监狱中可访问。)
简单地将共享文件夹移动到其他位置,例如/home/shared-stuff/folderA
。
第二个选项最好。假设folderA中的内容是公开的,你不在乎谁看到它,你可以这样设置:
sudo mkdir -m777 /home/shared-stuff
然后你可以在里面放置一个名为folderA的文件夹,具有上述权限,并且还可以放置一个名为folderB的文件夹,www-data用户不应该具有访问权限,而是具有不同的权限,例如。
$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data 4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser 4096 Jan 17 21:46 folderB
g+rwxs
中的s
代表什么? - T.Todua/home/myuser/folderA /var/www/mysite/folderA none bind
- hanshenrik