已加入授权的www-data组,仍提示Permission Denied无法列出目录求助
为何组成员无权列出目录?
问题背景
我通过命令sudo usermod -a -G www-data B将用户B加入www-data组,但尝试列出/var/www/html目录时仍提示权限拒绝,执行ll /var/www/html输出:
d????????? ? ? ? ? ? ./ d????????? ? ? ? ? ? ../
此前查看/var/www目录信息,执行ll /var/www得到:
drwxrwSr-- 4 www-data www-data 4096 /var/www/html
该目录属主、属组均为www-data,系统umask为764。
原因分析
目录缺少组执行权限
从权限字符串drwxrwSr--拆解来看:- 属主权限:
rwx(读、写、执行) - 属组权限:
rwS(读、写,但无执行权限,大写S表示SUID位已设置但组未拥有执行权限) - 其他用户:
r--(读)
要列出目录内容,必须拥有该目录的执行(x)权限——没有x权限的话,即便有读权限也无法访问目录内的文件元数据,这就是你看到全问号输出的核心原因。
- 属主权限:
组变更未即时生效(次要因素)
执行usermod添加组后,当前登录会话不会自动加载新组权限,需重新登录用户B才能让组变更生效。但即便生效,由于属组缺少x权限,依然无法正常列出目录。
解决办法
- 给目录添加组执行权限:
sudo chmod g+x /var/www/html - 重新登录用户B,或执行
newgrp www-data在当前会话临时切换到新组,再尝试列出目录。
内容的提问来源于stack exchange,提问作者thousands_sun
相关产品推荐
相关产品推荐

