我知道还有其他类似的问题,但其中没有任何内容可以解决我的问题。
gitlab-runner@my-machine:~$ groups
gitlab-runner my-user
gitlab-runner@my-machine:~$ sudo ls -l /home
total 16
drwxrwsr-x+ 16 my-user my-user 4096 Feb 13 09:22 my-user
# ... other users' homes omitted ...
gitlab-runner@my-machine:~$ sudo ls -l /home/my-user
total 528
drwsrws---+ 4 my-user my-user 4096 Jun 7 2020 my-dir
# ... irrelevant files omitted ...
gitlab-runner@my-machine:~$ sudo ls -l /home/my-user/my-dir
total 48
drwxrwsr-x+ 7 my-user my-user 4096 Aug 12 2021 my-dir
drwxrwsr-x+ 6 my-user my-user 4096 Jun 7 2020 venv
gitlab-runner@my-machine:~$ cd /home/my-user/my-dir
-bash: cd: /home/my-user/my-dir: Permission denied
用户是组成员,组对目标文件夹及其所在目录有读取和执行权限,但用户却无法cd
进入。我也试了logout
又试sudo - gitlab-runner
,还是不行。为什么?
我不确定为什么x
会显示该位s
,而且我找不到任何解释。也许这很相关,但我不知道这意味着什么,也不知道如何更改它,因为它sudo chmod g+x
不会更改它。
答案1
事实证明我已经为该文件夹设置了 ACL,正如@raj 在评论中正确指出的那样。
我误以为 ACL 权限会与权限位进行“或”运算,但事实并非如此,它们会完全覆盖权限位。我的目录 ACL 有rw-
权限,但x
缺少该位,因此我没有cd
该用户的权限。