Linux群组成员为何没有权限访问目录?

ll /var/www

drwxrwSr-- 4 www-data www-data 4096 /var/www/html

/var/www/html目录被www-data:www-data用户/群组拥有 并拥有764权限掩码 按照我的理解是www-data用户有读写执行权限 www-data群组成员有读写权限 其它用户有读权限

但是我用其它用户访问时却发现列表目录内文件的权限都没有 甚至我把其它用户加入到www-data群组之后依然没有权限

# 把user用户加入到www-data群组
sudo usermod -a -G www-data user

ll /var/www/html

d????????? ? ? ? ? ? ./
d????????? ? ? ? ? ? ../
阅读 2.9k
1 个回答

ls 只需要读权限;
ll 需要列举文件的大小、修改时间等元信息,需要目录的可执行权限;

所以按理 非www-data组 用户是可以执行ls,不可以执行ll
www-data组 用户可以两个命令都可以执行,你添加了用户组后,对应执行的窗口不是同一个,没来得及更新?

参考 《tlpi》15.4.2 目录权限

目录与文件拥有相同的权限方案,只是对 3 种权限的含义另有所指。

  • 读权限:可列出(比如,通过 ls 命令)目录之下的内容(即目录下的文件名)。
  • 写权限:可在目录内创建、删除文件。注意,要删除文件,对文件本身无需有任何权限。
  • 可执行权限:可访问目录中的文件。因此,有时也将对目录的执行权限称为 search(搜
    索)权限。

访问文件时,需要拥有对路径名所列所有目录的执行权限。例如,想读取文件/home/mtk/x,
则需拥有对目录/、/home 以及/home/mtk 的执行权限(还要有对文件 x 自身的读权限)。若当
前的工作目录为 /home/mtk/sub1 ,访问相对路径名 ../sub2/x 时,需握有 /home/mtk 和
/home/mtk/sub2 这两个目录的可执行权限(不必有对/或/home 的执行权限)。

拥有对目录的读权限,用户只是能查看目录中的文件列表。要想访问目录内文件的内容
或是这些文件的 i 节点信息,还需握有对目录的执行权限。

反之,若拥有对目录的可执行权限,而无读权限,只要知道目录内文件的名称,仍可对
其进行访问,但不能列出目录下的内容(即目录所含的其他文件名)。在控制对公共目录内容
的访问时,这是一种常用技术,简单而且实用。

要想在目录中添加或删除文件,需要同时拥有对该目录的执行和写权限。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏