Izin ditolak di folder 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

Inilah 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

Saya belum pernah melihat ini sebelumnya. Tidak ada izin untuk LS bahkan dengan 777? Saya perlu berbagi folder ini untuk pengembangan yang lebih nyaman. Bagaimana saya bisa menyelesaikannya? Terima kasih.

Diedit: (ini permintaan Anda)

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

DIedit LEBIH BANYAK

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 ... apa ini?

pengguna1797147
sumber
1
izin direktori yang Anda lstampilkan tidak diperlihatkan?
Zanna
adalah custom_hooks dan memiliki root root drwxrwxrwx 2, lihat di atas
user1797147
1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedjadi tunjukkan pada kami apa yang terjadi ketika Andals -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna
1
bisakah Anda melakukan apa yang saya minta? jika Anda tidak memiliki izin mengeksekusi pada direktori induk maka 777 pada yang ini tidak akan membantu Anda
Zanna
2
Rupanya masalah Anda lebih tinggi di pohon itu. Terus naik tingkat dan memeriksa izin, dan Anda akan menemukan bahwa salah satu dari mereka tidak memiliki x izin untuk o, misalnyadrwxr-x---
Zanna

Jawaban:

21

Ini terjadi karena ada direktori yang lebih tinggi di pohon di mana Anda tidak memiliki izin eksekusi. Jika direktori induk tidak memiliki izin eksekusi untuk beberapa pengguna, maka pengguna tersebut tidak dapat membuat stat subdirektori apa pun terlepas dari izin pada subdirektori tersebut.

Contoh:

$ 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

Meskipun saya adalah pemilik direktori 'brownies' dan semua pengguna memiliki izin untuk membaca dan memasukkannya, saya tidak dapat mengaksesnya jika direktori induknya tidak memiliki izin eksekusi.

Lebih baik menggunakan grup untuk mengelola izin daripada memberi untuk memberi izin direktori 777. Apakah Anda yakin harus melakukan itu?

Cara memperbaiki masalah dengan cara yang lebih aman:

Mari kita asumsikan pada /var/opt/gitlabdirektori Anda memiliki sesuatu seperti ini:

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

Tambahkan diri Anda dan semua pengguna lain yang membutuhkan izin ke grup git, misalnya:

sudo usermod -a -G john git

Pengguna harus keluar dan kembali agar ini berlaku. Bahkan jika izin menulis diperlukan pada subdirektori, Anda tidak perlu menambahkannya pada direktori induk, jadi Anda tidak perlu menggunakannya chmodsama sekali. Anda mungkin ingin mengubah izin subdirektori untuk mencegah siapa pun dapat menulis kepadanya:

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

atau

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks
Zanna
sumber
1
Terima kasih lagi, tidak, saya hanya menguji beberapa skrip. Merasa jauh lebih nyaman untuk mengedit dengan N ++ di windows daripada Gedit yang belum sempurna. Juga Nautilus yang belum sempurna yang tidak dapat MEMOTONG sesuatu kemudian PASTE dengan membuat folder baru dalam waktu yang sama ... atau klik kanan -> Folder Baru.
user1797147