将文件夹及其所有内容的权限设置为Chmod 777

718

我有一个网站目录/www,里面有一个名为store的文件夹。

store文件夹中包含几个文件和文件夹。我想要给予store文件夹内以及其中所有文件和文件夹所有权限。

我该怎么做呢?我猜测可以通过.htaccess来实现。


67
你需要认真考虑将/www目录下的所有文件和文件夹的权限设置为777,这意味着全世界的用户都可以读取、写入和执行这些文件和文件夹。 - anubhava
71
为了反驳评论中的危言耸听和错误信息:你的文件很可能不会被整个世界可写甚至可读。你需要设置一个明确允许这些操作的Web服务器,这是非常罕见的。这些文件只能被那些登录到您系统的用户读取、写入和执行。 - Josh Noe
3
@JoshNoe 这并不是危言耸听。请阅读OWASP十大网络应用安全漏洞:A5是“安全配置错误”(例如上传目录的777权限),而A1是“注入攻击”。A1 + A5 = 被入侵。在Linux上,Web服务器在一个用户下运行(例如www-data),因此每次服务器提供文件时,它都是已登录到系统中的一个用户。这是链接https://www.google.com/search?q=nginx+config+php+code+injection+jpg+comment的搜索结果。 - Pocketsand
@Pocketsand 给用户授予777权限通常不会将您的文件开放给“全世界”。默认情况下,大多数Web服务器不会默认服务任何文件,除非您明确设置它们。 - Josh Noe
1
@JoshNoe 我假设你在谈论目录列表是否已配置,但这不是正在讨论的内容。评论涉及基本的防御性安全原则,以帮助预防诸如代码注入和目录遍历攻击之类的事情。你所说的类似于“如果窗帘已经拉上,说人们应该锁门就是危言耸听”。 - Pocketsand
显示剩余4条评论
7个回答

1289

如果您要进行控制台命令,可以使用以下命令:

chmod -R 777 /www/store-R(或--recursive)选项使其递归操作。

或者,如果您想让当前目录中的所有文件都具有所有权限,请输入以下命令:

chmod -R 777 ./

如果需要更多有关chmod命令的信息,请参见:文件权限


3
如果你有一个指向该文件夹的符号链接,要更改符号链接的权限,请执行 chmod -h 777 /some_path/symlink - xxjjnn
4
有时需要添加sudo才能使其正常工作。sudo chmod -R 777 /www/store - Mingtao Sun
2
请注意,如果您的目标文件系统是以下之一:NFTS / exFAT / FAT32,则chmod -R 777 /some/path将会静默失败。 - user3751385
它是否也包括所有隐藏文件? - alper

211
如果您所说的“所有权限”是指777,请转到该文件夹并执行以下操作。
chmod -R 777 .

它也包括所有以 . 开始的隐藏文件,比如 .git/ 吗? - alper
我认为,通过添加-r参数,它会递归地覆盖目录中的所有文件。 - Ali Ganjbakhsh

197

您可以使用选项-R(即递归权限)授予文件夹及其所有内容的权限。

但我建议不要将777权限授予所有文件夹及其所有内容。您应该为www目录中的每个子文件夹指定特定的权限。

出于安全原因,最好为Web文件夹授予755权限。

sudo chmod -R 755 /www/store

每个数字在权限中都有特定的含义。不要给予完全的权限。

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
  • 第一个数字7 - 用户可读、写和执行。
  • 第二个数字5 - 组可读和执行。
  • 第三个数字5 - 其他人可读和执行。

如果您的生产Web文件夹有多个用户,则可以相应地设置权限和用户组。

更多信息:

  1. 了解文件权限:什么是“Chmod 777”?
  2. 我应该在Web根目录上设置什么文件权限?
  3. 为什么不应将/var/www设为chmod 777?

为什么要踩?我的答案有问题吗?请踩的人解释一下,这样我才能提高回答的质量。 - Somnath Muluk
2
我没有给你的回答点踩,但我认为原因是你的回答并没有涵盖到问题的关键点。虽然这仍然是一个好的回答,但不适用于此话题。 - Marijke Luttekes
8
已有其他回答解释如何将文件夹授予777权限,但这不是我的意图。我的建议是不要将777权限授予www文件夹。请参见Anubhava的问题的第一条评论。相反,请授予755或所需的权限。有时从问题中我们可以理解到OP的方向可能错误。然后我们应该给出正确的指引。这不仅适用于OP需要解决问题,还适用于其他人也在寻找同样的答案。这样,其他人就能理解这个答案。 - Somnath Muluk
7
这个应该标记为正确答案。虽然其他答案提供了问题的“解决方案”,但这个答案解释了典型文件夹结构应该如何设置。很少情况下,您会想要将Web文件夹设置为777。请阅读@SomnathMuluk提供的更多信息链接,以便您可以理解为什么。 - Loligans
1
阅读后,我认为754是一个不错的选择。 - FerdousTheWebCoder
3
到目前为止,这是我看过最好的二进制权限解释了!感谢你让它易于理解! - JayRizzo

32

你也可以使用chmod 777 *

这将为当前文件夹中的所有文件和未来添加到此文件夹中的文件授予权限,而不授予目录本身的权限。

注意:这应该在文件所在的文件夹中执行。对于我来说,出现问题的是图像文件,因此我去了我的图像文件夹并执行了此操作。


1
不行,在Ubuntu上无法运行。新文件似乎具有与已经存在于目录中的文件不同的权限。 - DanoPlurana

20

是的,在chmod命令中使用-R选项将使给定目录下的文件/子目录获得777权限。但通常,将777权限授予所有文件和目录并不是一种好的做法,因为这可能会导致数据不安全。尽量具体地给所有文件和目录赋予权限。来回答你的问题:

chmod -R 777 your_directory_name

...会起作用


12
< p >对于Mac电脑,应该使用'superuser do';

< p >所以首先:

sudo -s 
password:

然后

chmod -R 777 directory_path

10

这对我没有起作用。

sudo chmod -R 777 /path/to/your/file/or/directory

我也用了-f

sudo chmod -R -f 777 /path/to/your/file/or/directory

“-f” 不是强制执行,它只是抑制大多数错误消息。 - alper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接