Isso acontece porque existe um diretório mais alto na árvore onde você não tem permissão de execução. Se um diretório pai não tiver permissão de execução para algum usuário, esse usuário não poderá determinar nenhum subdiretório, independentemente das permissões nesses subdiretórios.
Exemplo:
$ 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
Embora eu seja o proprietário do diretório 'brownies' e todos os usuários tenham permissão para lê-lo e inseri-lo, não posso acessá-lo se o diretório pai não tiver permissão de execução.
É melhor usar grupos para gerenciar permissões do que dar a dar diretórios 777 permissão. Tem certeza de que precisa fazer isso?
Como corrigir o problema de maneira mais segura:
Vamos supor que no diretório /var/opt/gitlab
você tenha algo assim:
drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab
Adicione você mesmo e todos os outros usuários que precisam de permissão para o grupo git, por exemplo:
sudo usermod -a -G john git
Os usuários precisam fazer logout e fazer login para que isso entre em vigor. Mesmo que a permissão de gravação seja necessária em um subdiretório, não é necessário adicioná-lo em um diretório pai, a propósito, para que você não precise usar chmod
. Você pode alterar suas permissões de subdiretório para impedir que alguém possa escrever:
chmod 775 /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
ou
chmod o-w /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks