Answers:
首先,将自己加入群组 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
用户身份创建文件,则将具有访问权限。
Nb。这还取决于umask
您的用户帐户和Web服务器的设置:您需要确保在folderA中创建的文件具有组rw
访问权限(以及在need组中创建的目录rwx
)
如果您的Web服务器没有对/home/myuser
目录的输入权限(非常明智),那么除非您执行其他操作,否则它不会进入目录。两个解决方案:
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(这是一个丑陋的hack,重新启动后必须重复进行。但是,也可以使用一个强大的技巧来使文件夹可在SSH监狱中访问。)
只需将共享文件夹移动到其他位置,例如/home/shared-stuff/folderA
。
第二个选项是最好的。假设folderA中的内容确实是公开的,并且您不在乎谁看到它,可以将其设置为
sudo mkdir -m777 /home/shared-stuff
然后,您可以在其中放入具有上述权限的folderA和www-data不应具有不同权限访问的folderB,例如
$ 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
另一种方法是直接在apache config中更改用户名,这是如果它是您的本地计算机,并且您从其他位置保存了图像,这将破坏对文件夹所做的任何权限。如果您只有1个用户并且不关心www-data,也可以这样做!
$ sudo vi /etc/apache2/apache2.conf
查找用户和组并放入您的
User <Your User>
Group <Your Group>
$ sudo service apache2 restart
s
在g+rwxs
?