问题描述
我有一个文件夹:/home/myuser/folderA
我想给www-data用户写上面的权限,而’myuser’继续正常访问(因为它仍然是myuser的主文件夹)。
我需要使用哪些命令?
注意:我不希望www-data
访问/home/myuser/
中的任何其他文件夹。
提前致谢。
最佳解决思路
首先,将自己添加到组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
组的成员提供读,写,enter-directory权限,组s
标志将确保在该目录中创建的任何文件都将www-data
作为组 – 因此,如果您创建文件为myuser
,则www-data
用户将有访问权。
铌。这还取决于您的用户帐户和Web服务器的umask
设置:您需要确保在folderA中创建的文件具有组rw
访问权限(以及在需要组rwx
中创建的目录)
如果您的网络服务器没有对/home/myuser
目录的输入权限(非常明智),那么除非您做其他事情,否则它不会进入那里。两个溶解:
-
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(这是一个丑陋的黑客,在重启后必须重复。但是一个强大的技巧,也可以用来在SSH jails中访问文件夹。) -
只需将共享文件夹移动到其他位置,例如
/home/shared-stuff/folderA
。
第二个选项是最好的。假设folderA中的东西是公开的,你不关心谁看到它,你可以设置它
sudo mkdir -m777 /home/shared-stuff
然后,您可以将具有上述权限的文件夹放入文件夹内,并将文件夹B放入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
次佳解决思路
另一种方法是直接在apache配置中更改用户名,这是因为它是您的本地计算机,并且您从其他地方保存图像会破坏对该文件夹所做的任何权限。如果您只有1个用户而且不关心www-data也要做!
$ sudo vi /etc/apache2/apache2.conf
查找用户和组并将您的用户放入User <Your User>
Group <Your Group>
$ sudo service apache2 restart