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
Voici les 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
Je n'avais jamais vu ça avant. Pas de permission de LS même avec 777? J'ai besoin de partager ce dossier pour un développement plus pratique. Comment puis-je le résoudre? Je vous remercie.
EDITED: (voici vos demandes)
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
Édité plus
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 ... qu'est-ce que c'est?
Cela se produit car il existe un répertoire plus haut dans l'arborescence où vous ne disposez pas de l'autorisation d'exécution. Si un répertoire parent ne dispose d'aucune autorisation d'exécution pour un utilisateur, cet utilisateur ne peut pas définir de sous-répertoires, quelles que soient les autorisations accordées à ces sous-répertoires.
Exemple:
$ 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
Bien que je sois le propriétaire du répertoire "brownies" et que tous les utilisateurs aient l'autorisation de le lire et de le saisir, je ne peux pas y accéder si son répertoire parent n'a pas d'autorisation d'exécution.
Il est préférable de tiliser des groupes pour gérer les autorisations que de donner aux répertoires l'autorisation 777. Êtes-vous sûr de devoir faire ça?
Comment résoudre le problème de manière plus sécurisée:
Supposons que sur le répertoire /var/opt/gitlab
vous avez quelque chose comme ceci:
drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab
Ajoutez-vous et tous les autres utilisateurs ayant besoin d'une autorisation pour le groupe git, par exemple:
Sudo usermod -a -G john git
Les utilisateurs doivent se déconnecter et se reconnecter pour que cela prenne effet. Même si l'autorisation d'écriture est nécessaire sur un sous-répertoire, vous n'avez pas besoin de l'ajouter à un répertoire parent, vous n'avez donc pas à utiliser chmod
. Vous voudrez peut-être modifier vos autorisations de sous-répertoires pour empêcher quiconque de pouvoir y écrire:
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