ปฏิเสธสิทธิ์ในโฟลเดอร์ 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จะไม่ปรากฏ?
Zanna

เป็น custom_hooks และมี 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
ซานนา

1
คุณช่วยทำสิ่งที่ฉันถามได้ไหม ถ้าคุณไม่ได้มีการดำเนินการได้รับอนุญาตในไดเรกทอรีแม่แล้ว 777 ที่นี้จะไม่ช่วยให้คุณ
Zanna

2
เห็นได้ชัดว่าปัญหาของคุณสูงกว่าต้นไม้แล้ว ขึ้นไปอีกระดับและตรวจสอบการอนุญาตแล้วคุณจะพบว่าหนึ่งในนั้นไม่มีสิทธิ์ x สำหรับ o ตัวอย่างเช่นdrwxr-x---
Zanna

คำตอบ:


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 พื้นฐานซึ่งไม่สามารถตัดอะไรบางอย่างแล้ววางด้วยการสร้างโฟลเดอร์ใหม่ในเวลาเดียวกัน ... หรือคลิกขวา -> โฟลเดอร์ใหม่
user1797147
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.