web-dev-qa-db-fra.com

Autorisation refusée dans le dossier 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

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?

9
user1797147

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
14
Zanna