如何授予文件夹及其子文件夹和文件的读写权限?


10

我更改了本地主机文件/var/www/及其子文件夹的所有权,并为其授予了权限777。但是,每当我在其中添加新文件夹时,新文件夹都不会自动获得该权限。如何永久授予文件夹777的权限,以便在我添加新文件夹或文件时获得相同的权限?



777是个好主意。但是使用ACL可能非常合适。您能否在ACL上阅读此解决方案,以查看它是否对您有效?

1
相关地,要使用chmod所有目录,可以find . -type d -exec chmod 777 {} +将所有目录更改为777。请记住,必须以root用户身份登录才能获得更好的结果,并确保您位于该文件夹中。
Redy S 2012年

Answers:


1

新创建的文件的权限由umask设置


您是否可以编写使/ var / www /可写并赋予其权限的命令,以便获得我最近添加的网站的相同权限(777)。
kamal

1
向您的Web服务器授予777权限不是很好。
saji89'8

您能否添加更多详细信息。
saji89'8

@ Vojtech Trefny。该链接目前无法正常工作,显示404 Not Found。
all4naija


10

正如其他人已经提到的那样,授予777权限/var/www确实不是一个好主意,尤其是在生产环境中。

更好的解决方案是仅向需要修改文件的用户授予写权限。做到这一点的方法之一是:

  • 创建一个新组

  • 将需要修改数据的用户添加/var/www到该组中

  • 递归地更改该/var/www组的所有权

  • 设置umask/var/www所有新创建的文件都归我们创建的组所有。

另一个选择是再次使用ACL,仅向需要它们的用户授予写权限。

这是有关serverfault的详细说明

通常,Web服务器或其他网络服务或系统用户帐户不应对Web服务器提供的文件具有写权限,因为这可能会导致任意代码执行。


2

您应该/etc/apache/envvars使用您选择的编辑器作为root用户进行编辑。

示例:ALT+F2
gksudo gedit /etc/apache2/envvars

转到文件末尾并添加一行umask XXX

其中umask是所需的权限值的二进制相反值。
对于774,它将是003。对于777 糟糕的主意,它将是000。

保存。

重新启动Apache。

例: sudo apache2ctl restart

这只会影响apache用户新创建的文件/文件夹。

另外的注释,在用户,组或任何插槽中的读写均为6。


0

另外,一些“开箱即用”的解决方案是将您的http服务器配置为使用其他文件夹。如果您使用Apache,则只需编辑它的配置文件。这样,您不必更改/ var / www巫婆的权限可能是个坏主意(潜在的安全问题)。

umask是您的问题的答案。它可用于限制新创建的文件夹和文件的默认特权。分发开发人员倾向于使用它来限制对某些系统文件夹的访问。


0

我认为您想拥有/var/www修改文件和目录的写权限。我认为最好的解决方案是安装apache2-mpm-itk并在虚拟主机配置文件中添加/etc/apache2/sites-available/default

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

并以chown your-username\: /var/www -Rv这种方式运行,该虚拟主机的apache将与您的UID / GID一起运行,并且您将能够编辑文件。即使由PHP创建的文件也将具有您的UID / GID

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.