文件夹权限问题

文件夹权限问题

请不要认为这是重复的。我在目录 /tmp/test/ 中以 root 身份创建了一个文件夹以及一些子文件夹。我已将所有用户和组(包括 root)的读写权限更改为 root。

$ sudo chmod -R 666 /tmp/test/

在发布时 $ ls -l /tmp/test/ ls: cannot access '/tmp/test/db': Permission denied ls: cannot access '/tmp/test/sp': Permission denied total 0 d????????? ? ? ? ? ? db d????????? ? ? ? ? ? sp 我得到了这样的信息,这里我无法创建新文件或目录。

$ printf 'test' >/tmp/test/sp/test

bash:/tmp/test/sp/test:权限被拒绝 这听起来让我很困惑。

答案1

目录需要可执行标志,因此请尝试sudo chmod -R 776 /tmp/test

Linux/Unix 需要执行位,以便用户进入目录并访问其内容,包括列出其中的内容。目录执行标志的行为与文件的读取标志不同。

但是其中的文件可以666

答案2

目录权限与标准文件权限略有不同。目录权限位不像文件那样具有读/写/执行权限,而是如下

4 (r--):可以显示目录的内容(ls
2 (-w-):可以修改目录的内容(创建/删除/重命名)
1 (--x):可以访问cd或类似。

注意,对于目录,w权限不会生效,x除非放。

在您的情况下,您的权限被设置为位 6(rw-),这具有以下效果:

  • 您可以看到给定文件夹的内容
  • 您无法查看该文件夹的元数据
  • 您无权cd访问该文件夹或任何子文件夹
  • 您无法编辑元数据(因为x未获授权)
  • 您无权打开目录树此部分内的任何文件

要修复此问题,只需将该位重新添加x到文件中:

chmod a+x /path/to/file

这也是为什么默认文件夹权限为07550775而文件往往为0644或 的原因0664:与文件不同,文件夹如果没有 实际上是无用的x

相关内容