Odmowa dostępu w folderze 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

Oto listy 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

Nigdy wcześniej tego nie widziałem. Brak zezwolenia na LS nawet z 777? Muszę udostępnić ten folder, aby ułatwić programowanie. Jak mogę to rozwiązać? Dziękuję Ci.

ZMIENIONO: (oto twoje prośby)

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

ZMIENIONO WIĘCEJ

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 ... co to jest?

użytkownik1797147
źródło
1
uprawnienia do katalogu, który tworzysz lsnie są wyświetlane?
Zanna,
jest custom_hooks i ma root roota drwxrwxrwx 2, patrz wyżej
user1797147
1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedwięc pokaż nam, co się stanie, kiedy tyls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna
1
czy mógłbyś zrobić to, o co prosiłem? jeśli nie masz uprawnień do wykonywania w katalogu nadrzędnym, to 777 na tym nie pomoże ci
Zanna
2
Najwyraźniej twój problem leży wyżej na drzewie. Kontynuuj wchodzenie na wyższy poziom i sprawdzanie uprawnień, a przekonasz się, że jedno z nich nie ma uprawnień x dla o, na przykładdrwxr-x---
Zanna

Odpowiedzi:

21

Dzieje się tak, ponieważ w drzewie znajduje się katalog, w którym nie masz uprawnień do wykonywania. Jeśli katalog nadrzędny nie ma uprawnień do wykonywania dla niektórych użytkowników, to ten użytkownik nie może statycznie podkatalogować, niezależnie od uprawnień w tych podkatalogach.

Przykład:

$ 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

Mimo że jestem właścicielem katalogu „ciasteczka” i wszyscy użytkownicy mają uprawnienia do odczytu i wprowadzania go, nie mogę uzyskać do niego dostępu, jeśli jego katalog nadrzędny nie ma uprawnień do wykonywania.

Lepiej jest używać grup do zarządzania uprawnieniami niż dawać uprawnienia katalogom 777. Czy na pewno musisz to zrobić?

Jak rozwiązać problem w bardziej bezpieczny sposób:

Załóżmy, że w /var/opt/gitlabkatalogu masz coś takiego:

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

Dodaj siebie i wszystkich innych użytkowników, którzy potrzebują uprawnień do grupy git, na przykład:

sudo usermod -a -G john git

Użytkownicy muszą się wylogować i zalogować ponownie, aby to zadziałało. Nawet jeśli potrzebne jest pozwolenie na zapis w podkatalogu, nie musisz dodawać go do katalogu nadrzędnego, więc nie musisz go wcale używać chmod. Możesz zmienić uprawnienia do podkatalogu, aby nikt nie mógł do niego pisać:

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

lub

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks
Zanna
źródło
1
Jeszcze raz dziękuję, nie, właśnie testowałem jakiś skrypt. Znacznie wygodniej jest edytować za pomocą N ++ w systemie Windows niż podstawowy Gedit. Również podstawowy Nautilus, który nie jest w stanie CIĘĆ, a następnie WKLEJ, tworząc nowy folder w tym samym czasie ... lub kliknij prawym przyciskiem myszy -> Nowy folder.
user1797147,