如何将 www-data 用户授予我的主文件夹中的文件夹?

如何将 www-data 用户授予我的主文件夹中的文件夹?

我有一个文件夹:/home/myuser/folderA

我想授予 www-data 用户对上述内容的写权限,同时“myuser”继续拥有正常访问权限(因为它是 myuser 的主文件夹)。

我需要使用哪些命令?

注意:我不想www-data访问中的任何其他文件夹/home/myuser/

提前致谢。

答案1

首先,将自己添加进群组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身份创建文件,则将具有访问权限。myuserwww-data

注意,这还取决于umask您的用户帐户和 Web 服务器的设置:您需要确保在文件夹 A 中创建的文件具有组rw访问权限(并且需要在组内创建的目录rwx

如果您的网络服务器没有进入您/home/myuser目录的权限(非常合理),那么除非您执行其他操作,否则它将无法进入目录。两个解决方案:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (这是一个丑陋的黑客行为,必须在重启后重复执行。但是这是一个强大的技巧,也可用于使文件夹在 SSH jail 内可访问。)

  2. 只需将共享文件夹移动到其他位置,例如/home/shared-stuff/folderA

第二个选项最好。假设文件夹 A 中的内容确实是公开的,并且您不关心谁可以看到它,您可以像这样进行设置

sudo mkdir -m777 /home/shared-stuff

然后,您可以在其中放入具有上述权限的文件夹 A,以及 www-data 不应以不同权限访问的文件夹 B,例如

$ 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

答案2

另一种方法是直接在 apache 配置中更改用户名,如果是你的本地机器并且您从其他地方保存图像,这会破坏对该文件夹的所有权限。如果您只有 1 个用户并且不关心 www 数据,也请这样做!

$ sudo vi /etc/apache2/apache2.conf

找到用户和组并输入你的
User <Your User>
Group <Your Group>

$ sudo service apache2 restart

答案3

对我来说,解决方案是 artfulrobot 答案的一部分。但它与 apache/var/www/html文件夹有关。事实上,它应该已经属于 www-data 用户。

只需将您的用户添加到 www-data 组即可编辑,然后指定此主文件夹的组。例如

sudo usermod -a -G www-data $(whoami)
sudo chgrp www-data /var/www/html -R

相关内容