我正在 Ubuntu 3.13 中工作。
驱动器上的权限使得所有者可以查看具有以下权限的目录和文件:
drwxrwxr-x 2 michael atlas 4096 Feb 15 12:34 temp2
drwxrwxr-x 2 michael atlas 12288 Mar 18 16:14 temp3
而“atlas”组的另一名成员(ubuntu)看到了这一点:
d????????? ? ? ? ? ? temp2
d????????? ? ? ? ? ? temp3
除非 ubuntu 使用sudo ls -l
,否则所有者、组和权限看起来与 michael 执行ls -l
.
这里可以看到两个用户在同一个组中:
ubuntu@lincloud:~$ grep '^atlas' /etc/group
atlas:x:1001:ubuntu,michael
问题的原因是什么?我如何解决它?
答案1
temp2 和 temp3 的父目录是问题所在。
您的 atlas 组对父目录具有读取权限,您需要读取并执行才能查看文件及其权限。
如果您位于包含 temp2 和 temp3 的目录中,则可以使用以下命令修复该问题:
sudo chmod g+x .
答案2
文件的属性存储在与 inode 号相关的 inode 数据结构中,如权限、大小、uid、gid(byls -l
和lsattr
)。文件名不存储在 inode 数据结构中。它存储在目录文件中,与一个inode号相关。
[luchaoqun@centos-7 ~]$ ls -i www 1704095 overflow_1 8722125 overflow_2
如果目录上同时设置了r
和权限,则可以看到文件名和 inode 信息(通过命令)。如果有权限,没有权限,只能看到文件名,看不到目录中的inode信息。x
ls -i
r
x
[lu@centos-7 www]$ ls -l total 8 -rw-r--r--. 1 luchaoqun luchaoqun 0 Jun 3 13:19 overflow_1 -rw-r--r--. 1 luchaoqun luchaoqun 0 Jun 3 13:19 overflow_2
[lu@centos-7 ~]$chmod u-x [lu@centos-7 ~]$ ls -ld www drw-r-xr-x. 2 luchaoqun luchaoqun 40 Jun 3 13:19 www [lu@centos-7 ~]$ ls -l www ls: cannot access www/overflow_1: Permission denied ls: cannot access www/overflow_2: Permission denied total 0 ?????????? ? ? ? ? ? overflow_1 ?????????? ? ? ? ? ? overflow_2