Autorisation refusée dans le dossier 777

17
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 d'autorisation 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.

EDITÉ: (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

MODIFIÉ 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?

user1797147
la source
1
les autorisations du répertoire que vous lsutilisez ne sont pas affichées?
Zanna
est custom_hooks et possède la racine root de drwxrwxrwx 2, voir ci
user1797147
1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedalors montrez-nous ce qui se passe quand vousls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna
1
pourriez-vous s'il vous plaît faire ce que j'ai demandé? si vous n'avez pas la permission d'exécuter sur le répertoire parent, alors 777 sur celui-ci ne vous aidera pas
Zanna
2
Apparemment, votre problème est plus haut dans l'arbre. Continuez à monter d'un niveau et examinez les autorisations, et vous constaterez que l'un d'eux n'a pas d'autorisation x pour o, par exempledrwxr-x---
Zanna

Réponses:

21

Cela se produit car il y a un répertoire plus haut dans l'arborescence où vous n'avez pas 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 statuer de sous-répertoires, quelles que soient les autorisations sur 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

Même si je suis le propriétaire du répertoire "brownies" et que tous les utilisateurs ont la permission de le lire et de l'entrer, je ne peux pas y accéder si son répertoire parent n'a pas de permission d'exécution.

Il est préférable d' utiliser des groupes pour gérer les autorisations que de donner pour accorder aux répertoires l'autorisation 777. Êtes-vous sûr de devoir faire cela?

Comment résoudre le problème de manière plus sécurisée:

Supposons que /var/opt/gitlabvous ayez quelque chose comme ceci dans le répertoire:

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

Ajoutez-vous et tous les autres utilisateurs qui ont besoin d'une autorisation au 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 une autorisation d'écriture est nécessaire sur un sous-répertoire, vous n'avez pas besoin de l'ajouter sur un répertoire parent, soit dit en passant, vous n'avez donc pas du tout besoin de l'utiliser chmod. Vous voudrez peut-être modifier vos autorisations de sous-répertoire 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
Zanna
la source
1
Merci encore, non, je testais juste un script. Sentez-vous beaucoup plus à l'aise pour éditer avec N ++ sur Windows que Gedit rudimentaire. Nautilus également rudimentaire qui n'est pas en mesure de couper quelque chose puis de coller avec la création d'un nouveau dossier en même temps ... ou cliquez avec le bouton droit -> Nouveau dossier.
user1797147