我无法访问具有r
我当前用户所属组的两个权限的目录,在others
列中,它具有rw-
[ec2-user@host]$ ls -la
drwxrw-rw- 8 apache apache 4096 Nov 4 14:16 .git
[ec2-user@host]$ cd .git
-bash: cd: .git: Permission denied
[ec2-user@host]$ cat /etc/group |grep ec2-user
wheel:x:10:ec2-user
ec2-user:x:500:
apache:x:48:ec2-user
为什么我不能进入该目录?
答案1
在 Unix 权限模型中,为了进入(进入)一个目录,你需要(有点不直观)执行目录的权限。
为了列出目录中的文件,您需要读目录的权限。(这可以通过将目录视为包含其他文件及其位置列表的文件来概念化。事实上,这几乎就是目录是在概念层面上。
对目录具有读取权限但没有执行权限实际上没有任何意义,但是具有执行权限而没有读取权限却有一个有效的用例(您希望能够知道文件名称并访问文件,但不能枚举文件)。
您的目录归用户apache
、组所有apache
;根据您的提示判断,您是ec2-user
;这两个权限并不相同。因此,适用组或其他权限。根据您的 /etc/group 代码片段,ec2-user
属于apache
组,因此适用组权限。组权限是读写,但不是执行,因此您无法进入目录。
首先,添加一些组执行权限。其次,您可能需要删除一些写权限. 世界可写几乎绝不你想要什么。
请注意,为了更改目录的权限,您需要对其父目录具有写入权限。(因此,要更改 的权限./.git
,您需要对 具有写入权限.
。这对于文件和目录都是一样的。)