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

यहां ए.सी.एल.

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

मैंने पहले इसे कभी नहीं देखा है। 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 है और 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---
ज़न्ना

जवाबों:


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 group की अनुमति चाहिए:

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
धन्यवाद फिर से, नहीं, मैं बस कुछ स्क्रिप्ट का परीक्षण कर रहा था। अल्पविकसित Gedit की तुलना में खिड़कियों पर N ++ के साथ संपादित करने के लिए अधिक आरामदायक महसूस करें। इसके अलावा अल्पविकसित Nautilus जो एक ही समय में एक नया फ़ोल्डर बनाने के साथ कुछ PASTE को CUT करने में सक्षम नहीं है ... या राइट क्लिक -> नया फ़ोल्डर।
user1797147
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.