为什么我无法使用权​​限 644 访问我自己的文件夹?

为什么我无法使用权​​限 644 访问我自己的文件夹?

我无法访问使用我的用户和权限 644 创建的 WordPress 文件夹。这是正确的吗?当我尝试访问该文件夹时,我得到了以下结果:

mdm-suporte@localhost:~$ cd public_html/
-bash: cd: public_html/: Permission denied

Apache 也导致 403 错误。只有使用权限 755 我才能访问该文件夹并且 Apache 可以正常工作。

哪里不对了?

答案1

文件夹必须是可执行的才能访问。观察:

目录具有 644 个权限:

[Mjolnir:~]mkdir test
[Mjolnir:~]chmod 644 test
[Mjolnir:~]ls -l | grep test
drw-r--r--  2 USER USER       4096 Jun  1 15:03 test/
[Mjolnir:~]ls -l test
ls: cannot access 'test/.': Permission denied
ls: cannot access 'test/..': Permission denied
total 0
d????????? ? ? ? ?            ? ./
d????????? ? ? ? ?            ? ../
[Mjolnir:~]cd test
-bash: cd: test: Permission denied

对同一目录具有 755 权限:

[Mjolnir:~]chmod 755 test
[Mjolnir:~]ls -l | grep test
drwxr-xr-x  2 USER USER       4096 Jun  1 15:03 test/
[Mjolnir:~]ls -l test
total 8
drwxr-xr-x  2 USER USER 4096 Jun  1 15:03 ./
drwxr-xr-x 57 USER USER 4096 Jun  1 15:04 ../
[Mjolnir:~]cd test
[Mjolnir:test]

答案2

目录上的“执行”标志允许访问目录下的文件系统对象。“读取”标志允许访问目录内容。因此从以下开始:

test
├── file1
└── file2

如果删除执行标志,仍然可以列出内容:

>chmod -x test
> echo test/*
test/file1 test/file2

但您无法访问内容:

>cat test/file1
cat: test/file1: Permission denied

您甚至无法获取这些文件的信息,因为这是通过访问它们的 inode 来完成的,而由于缺乏执行权限,您无法执行此操作:

stat test/file1
stat: cannot stat 'test/file1': Permission denied

现在,如果保留执行权限但删除读取权限,情况则相反:

>chmod +x-r test

您无法列出目录内容:

>ls test
ls: cannot open directory 'test': Permission denied

但如果你知道它包含什么,你就可以访问相应的 inode:

>stat test/file1
  File: 'test/file1'
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 24642501    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/      me)   Gid: ( 1000/      me)
Access: 2019-06-01 09:07:30.300676842 +0200
Modify: 2019-06-01 08:53:14.811834525 +0200
Change: 2019-06-01 08:53:14.811834525 +0200

然后访问内容:

>cat test/file1
File1

相关内容