777 文件夹中的权限被拒绝

777 文件夹中的权限被拒绝
john@ubuntu01:~$ sudo ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
total 25068
drwxr-xr-x  2 git  git      4096 aug 14 19:58 branches
-rw-r--r--  1 git  git        66 aug 14 19:58 config
drwxrwxrwx  2 root root     4096 aug 15 14:56 custom_hooks
-rw-r--r--  1 git  git        73 aug 14 19:58 description
-rw-r--r--  1 git  git        23 aug 14 19:58 HEAD
lrwxrwxrwx  1 git  git        47 aug 14 19:58 hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks
drwxr-xr-x  2 git  git      4096 aug 14 19:58 hooks.old.1471193907
-rw-r--r--  1 git  git      1329 aug 15 14:48 index
drwxr-xr-x  2 git  git      4096 aug 15 13:58 info
drwxr-xr-x 71 git  git      4096 aug 15 14:55 objects
-rw-r--r--  1 git  git        98 aug 15 13:58 packed-refs
-rw-r--r--  1 git  git  25618530 aug 15 14:03 post-receive.log
drwxr-xr-x  5 git  git      4096 aug 14 20:31 refs
john@ubuntu01:~$ ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied

以下是 ACL

john@ubuntu01:~$ sudo lsattr /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
-------------e-- /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks/post-receive

我以前从未见过这种情况。即使有 777 也没有权限访问 LS?我需要共享此文件夹以便更方便地进行开发。我该如何解决?谢谢。

已编辑:(这是您的请求)

john@ubuntu01:~$ sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
drwxrwxrwx 8 git git 4096 aug 15 14:48 /var/opt/gitlab/git-data/repositories/GL/www.git
john@ubuntu01:~$ sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
drwxrwxrwx 2 root root 4096 aug 15 14:56 /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks

编辑更多

sudo ls -ld /var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git
ls: cannot access '/var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git': No such file or directory

嗯...这是什么?

答案1

发生这种情况的原因是,在目录树中有一个目录您没有执行权限。如果某个用户的父目录没有执行权限,那么该用户就无法访问任何子目录,无论这些子目录的权限如何。

例子:

$ ls -l cake
drwxr-xr-x 2 zanna zanna 4096 Jul 12 11:43 brownies
$ chmod 666 cake
$ ls -l cake/brownies
ls: cannot access 'cake/brownies': Permission Denied

尽管我是目录“brownies”的所有者,并且所有用户都有权读取和进入该目录,但如果其父目录没有执行权限,我就无法访问它。

最好使用群组管理权限比授予目录 777 权限要好。您确定需要这么做吗?

如何以更安全的方式解决问题:

我们假设/var/opt/gitlab目录中有如下内容:

drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab

将您自己和所有其他需要权限的用户添加到 git 组,例如:

sudo usermod -a -G john git

用户必须注销并重新登录才能使此操作生效。顺便说一句,即使子目录需要写入权限,您也不需要将其添加到父目录中,因此您根本不需要使用chmod。您可能希望更改子目录权限以防止任何人能够写入它:

chmod 775 /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

或者

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

相关内容