Erlaubnis verweigert im 777 Ordner

16
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

Hier sind 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

Ich habe das noch nie gesehen. Keine Erlaubnis zu LS auch bei 777? Ich muss diesen Ordner für eine bequemere Entwicklung freigeben. Wie kann ich das lösen? Vielen Dank.

BEARBEITET: (hier sind Ihre Anfragen)

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

MEHR BEARBEITET

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 ... was ist das?

user1797147
quelle
1
Die Berechtigungen des Verzeichnisses, in dem Sie sich befinden, lswerden nicht angezeigt.
Zanna
ist custom_hooks und hat das Root-Verzeichnis drwxrwxrwx 2 (siehe oben)
user1797147
1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedZeigen Sie uns, was passiert, wenn Siels -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna
1
Könntest du bitte tun, was ich gefragt habe? Wenn Sie keine Ausführungsberechtigung für das übergeordnete Verzeichnis haben, hilft Ihnen 777 in diesem nicht
Zanna
2
Anscheinend liegt Ihr Problem dann weiter oben. Steigen Sie weiter auf und prüfen Sie die Berechtigungen. Sie werden feststellen, dass eine von ihnen zum Beispiel keine x-Berechtigung für o hatdrwxr-x---
Zanna

Antworten:

21

Dies geschieht, weil es ein höheres Verzeichnis in der Baumstruktur gibt, in dem Sie keine Ausführungsberechtigung haben. Wenn ein übergeordnetes Verzeichnis für einen Benutzer keine Ausführungsberechtigung hat, kann dieser Benutzer keine Unterverzeichnisse angeben, unabhängig von den Berechtigungen für diese Unterverzeichnisse.

Beispiel:

$ 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

Obwohl ich der Eigentümer des Verzeichnisses 'brownies' bin und alle Benutzer die Berechtigung zum Lesen und Eingeben haben, kann ich nicht darauf zugreifen, wenn das übergeordnete Verzeichnis keine Ausführungsberechtigung hat.

Es ist besser, Gruppen zum Verwalten von Berechtigungen zu verwenden, als Verzeichnissen die Berechtigung 777 zu erteilen. Sind Sie sicher, dass Sie das tun müssen?

So beheben Sie das Problem auf sicherere Weise:

Nehmen wir an, /var/opt/gitlabSie haben im Verzeichnis Folgendes:

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

Fügen Sie sich selbst und alle anderen Benutzer hinzu, die eine Berechtigung für die Git-Gruppe benötigen. Beispiel:

sudo usermod -a -G john git

Benutzer müssen sich abmelden und wieder anmelden, damit dies wirksam wird. Selbst wenn für ein Unterverzeichnis Schreibberechtigungen erforderlich sind, müssen Sie diese nicht in einem übergeordneten Verzeichnis hinzufügen, sodass Sie sie überhaupt nicht verwenden müssen chmod. Möglicherweise möchten Sie Ihre Unterverzeichnis-Berechtigungen ändern, um zu verhindern, dass jemand darauf schreiben kann:

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

oder

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks
Zanna
quelle
1
Nochmals vielen Dank, nein, ich habe gerade ein Skript getestet. Fühlen Sie sich mit N ++ unter Windows viel komfortabler als mit rudimentärem Gedit. Auch rudimentäre Nautilus, die nicht in der Lage sind, etwas zu SCHNEIDEN, dann fügen Sie einen neuen Ordner in der gleichen Zeit hinzu ... oder klicken Sie mit der rechten Maustaste auf -> Neuer Ordner.
user1797147