У дозволі 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

Ось 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

Я ніколи цього не бачив. Немає дозволу на LS навіть із 777? Мені потрібно поділитися цією папкою для зручнішої розробки. Як я можу це вирішити? Дякую.

ВІДМОВЛЕНО: (ось ваші запити)

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

ВИДАЛЕНО БІЛЬШЕ

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

хммм ... що це?


1
дозволи на каталог, який ви використовуєте ls, не відображаються?
Занна

є custom_hooks та має root root drwxrwxrwx 2, дивіться вище
user1797147

1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedтому покажіть нам, що станеться, коли виls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna

1
Ви можете, будь ласка, зробити те, що я попросив? якщо ви не маєте дозволу на виконання батьківського каталогу, то 777 на цьому вам не допоможе
Zanna

2
Мабуть, ваша проблема вище за дерево. Продовжуйте йти на рівень вище і вивчення дозволу, і ви виявите , що один з них не має дозволу на х о, наприкладdrwxr-x---
Žanna

Відповіді:


21

Це відбувається тому, що в дереві є каталог вище, де ви не маєте дозволу на виконання. Якщо батьківський каталог не має дозволу на виконання для якогось користувача, то він не може статувати будь-які підкаталоги незалежно від дозволів у цих підкаталогах.

Приклад:

$ 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

Незважаючи на те, що я є власником каталогу "брауні" і всі користувачі мають дозвіл читати та вводити його, я не можу отримати доступ до нього, якщо його батьківський каталог не має дозволу на виконання.

Краще використовувати групи для управління дозволами, ніж давати дозволам 777 дозвіл. Ви впевнені, що вам це потрібно зробити?

Як виправити проблему більш безпечним способом:

Припустимо, у /var/opt/gitlabкаталозі у вас є щось подібне:

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

Додайте себе та всіх інших користувачів, які потребують дозволу до групи git, наприклад:

sudo usermod -a -G john git

Користувачі повинні вийти та ввійти, щоб це набуло чинності. Навіть якщо дозвіл на запис потрібен у підкаталозі, вам, до речі, не потрібно додавати його в батьківський каталог, тому вам зовсім не доведеться користуватися chmod. Ви можете змінити дозволи вашого підкаталогу, щоб ніхто не міг писати на нього:

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

або

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

1
Дякую ще раз, ні, я просто тестував якийсь сценарій. Відчувати себе набагато зручніше редагувати за допомогою N ++ у Windows, ніж рудиментарний Gedit. Також рудиментарний Nautilus, який не в змозі вирізати щось, тоді ПІДКЛЮЧИТИ, створивши нову папку за той же час ... або клацніть правою кнопкою миші -> Нова папка.
користувач1797147
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.