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
Aqui estão as ACLs
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
Eu nunca vi isso antes. Sem permissão para LS, mesmo com o 777? Eu preciso compartilhar esta pasta para um desenvolvimento mais conveniente. Como posso resolver isso? Obrigado.
EDITADO: (aqui estão seus pedidos)
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
EDITADO MAIS
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
hmmm ... o que é isso?
permissions
chmod
user1797147
fonte
fonte
ls
ing não são mostradas?ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied
assim nos mostram o que acontece quando vocêls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
drwxr-x---
Respostas:
Isso acontece porque há um diretório mais alto na árvore em que 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á declarar nenhum subdiretório, independentemente das permissões nesses subdiretórios.
Exemplo:
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 será possível 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 para dar permissão aos diretórios 777. Tem certeza de que precisa fazer isso?
Como corrigir o problema de uma maneira mais segura:
Vamos supor que no
/var/opt/gitlab
diretório você tenha algo parecido com isto:Adicione você e todos os outros usuários que precisam de permissão ao grupo git, por exemplo:
Os usuários precisam sair e fazer login novamente para que isso entre em vigor. Mesmo se a permissão de gravação for necessária em um subdiretório, a propósito, você não precisará adicioná-la em um diretório pai, para não precisar usá
chmod
-la. Você pode alterar suas permissões de subdiretório para impedir que alguém possa gravá-lo:ou
fonte