我无法访问使用我的用户和权限 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