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?
permissions
chmod
użytkownik1797147
źródło
źródło
ls
nie są wyświetlane?ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied
więc pokaż nam, co się stanie, kiedy tyls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
drwxr-x---
Odpowiedzi:
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:
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/gitlab
katalogu masz coś takiego:Dodaj siebie i wszystkich innych użytkowników, którzy potrzebują uprawnień do grupy git, na przykład:
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ć:lub
źródło