Autorizzazione negata nella cartella 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

Ecco gli 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

Non l'ho mai visto prima. Nessun permesso per LS anche con 777? Devo condividere questa cartella per uno sviluppo più conveniente. Come posso risolverlo? Grazie.

MODIFICATO: (ecco le tue richieste)

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

MODIFICATO ALTRO

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 ... che cos'è questo?


1
le autorizzazioni della directory che lsstai utilizzando non vengono visualizzate?
Zanna,

è custom_hooks e hanno drwxrwxrwx 2 root root, vedi sopra
user1797147

1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedquindi mostraci cosa succede quandols -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna,

1
potresti per favore fare quello che ti ho chiesto? se non hai i permessi di esecuzione sulla directory principale, 777 su questo non ti aiuterà
Zanna

2
Apparentemente il tuo problema è più in alto allora. Continua a salire di livello e ad esaminare le autorizzazioni e scoprirai che uno di loro non ha x autorizzazioni per o, ad esempiodrwxr-x---
Zanna

Risposte:


21

Ciò accade perché nella struttura è presente una directory più alta in cui non si dispone dell'autorizzazione di esecuzione. Se una directory padre non dispone dell'autorizzazione di esecuzione per alcuni utenti, quell'utente non può creare alcuna sottodirectory indipendentemente dalle autorizzazioni su tali sottodirectory.

Esempio:

$ 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

Anche se sono il proprietario della directory "brownies" e tutti gli utenti dispongono dell'autorizzazione per leggerla e inserirla, non posso accedervi se la sua directory padre non dispone dell'autorizzazione di esecuzione.

È meglio usare i gruppi per gestire le autorizzazioni piuttosto che dare per dare alle directory 777 le autorizzazioni. Sei sicuro di doverlo fare?

Come risolvere il problema in modo più sicuro:

Supponiamo che nella /var/opt/gitlabdirectory tu abbia qualcosa del genere:

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

Aggiungi te stesso e tutti gli altri utenti che necessitano dell'autorizzazione per il gruppo git, ad esempio:

sudo usermod -a -G john git

Gli utenti devono disconnettersi e riconnettersi affinché questo abbia effetto. Anche se è necessaria l'autorizzazione alla scrittura in una sottodirectory, non è necessario aggiungerla in una directory principale, quindi non è necessario utilizzarla chmodaffatto. È possibile che si desideri modificare le autorizzazioni della sottodirectory per impedire a chiunque di poter scrivere su di essa:

chmod 775 /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

o

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

1
Grazie ancora, no, stavo solo testando qualche sceneggiatura. Sentiti molto più a tuo agio nel modificare con N ++ su Windows rispetto al rudimentale Gedit. Anche il rudimentale Nautilus che non è in grado di tagliare qualcosa quindi INCOLLA con la creazione di una nuova cartella nello stesso momento ... o fare clic con il tasto destro -> Nuova cartella.
user1797147
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.