अनुमतियाँ सही हैं, भले ही एक निर्देशिका में सीडी के लिए `अनुमति Denied`


13

यह बहुत अजीब है। एक ls -lahशो के रूप में एक उपयोगकर्ता 'जी' के रूप में एक लिनक्स (आरएचईएल) बॉक्स में लॉग इन करें

drwxrwxrwx 6 g    g    4.0K Jun 23 13:27 .
drwxrw-r-x 6 root root 4.0K Jun 23 13:15 ..
-rwxrw---- 1 g    g     678 Jun 23 13:26 .bash_history
-rwxrw---- 1 g    g      33 Jun 23 13:15 .bash_logout
-rwxrw---- 1 g    g     176 Jun 23 13:15 .bash_profile
-rwxrw---- 1 g    g     124 Jun 23 13:15 .bashrc
drw-r----- 2 g    g    4.0K Jun 23 13:25 .ssh

तो उपयोगकर्ता 'g' को 'g' समूह में / / .ssh निर्देशिका को पढ़ना और लिखना चाहिए, लेकिन अगर ls -lah .ssh/मुझे मिलता है ls: .ssh/: Permission denied। यदि मैं कोशिश करता हूं और catनिर्देशिका में कोई भी फ़ाइल है तो मुझे अनुमति से इनकार कर दिया गया है

अगर मैं रूट के रूप में में जाने के लिए और करने के लिए अनुमतियों को बदलने 700, 744, 766जब तक या कुछ भी उपयोगकर्ता की अनुमति के रूप में 7 यह काम करता है और मैं यह कर सकते हैं सीडी और रास निर्देशिका और फ़ाइलों के भीतर।

id g रिटर्न

uid=504(g) gid=506(g) groups=506(g)

संपादित करें:

मैंने इन अनुमतियों को बिल्कुल दूसरे समान बॉक्स में कॉपी किया है और कोई समस्या नहीं है। मैं cdअनुमति निष्पादित किए बिना एक निर्देशिका में हो सकता हूं ।

जवाबों:


29

आपको इसे दर्ज करने के लिए निर्देशिका को निष्पादित बिट सेट की आवश्यकता होगी । मुझे नहीं पता कि आपने क्या परीक्षण किया है, लेकिन आप निष्पादन बिट के बिना एक निर्देशिका में प्रवेश नहीं कर सकते हैं , या इसमें फाइलें पढ़ सकते हैं:

$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied

यही है, जब तक कि आपकी प्रक्रिया में CAP_DAC_OVERRIDE POSIX क्षमता सेट नहीं है (जैसे रूट है), जो आपको निष्पादन योग्य बिट सेट, iirc के बिना निर्देशिका में प्रवेश करने की अनुमति देता है।

मूल रूप से, आपको अपने .ssh निर्देशिका को 700 पर रखने की कोशिश करनी चाहिए, और 600 में सब कुछ, बस सुरक्षित होने के लिए। Ssh मैन पेज ~ / .ssh में फाइलों के लिए आवश्यक मालिकाना और अनुमति मोड पर प्रति फ़ाइल निर्देश देता है।


17

किसी निर्देशिका को cdइसे करने के लिए निष्पादन की अनुमति की आवश्यकता होती है। यह वह व्यवहार है जो अपेक्षित है।


लेकिन मैं यह भी नहीं कर सकते हैं catएक ही अनुमति के साथ निर्देशिका में किसी भी फाइल, वे नहीं अनुमतियों पर अमल की जरूरत चाहिए पढ़ने के लिए
धब्बा

4
निर्देशिका के अंदर कुछ भी एक्सेस करने के लिए आपको निर्देशिका पर अनुमति की आवश्यकता होती है। यह उत्तर सही है।
ईटबिटोनी

1
@samarudge xआपको उस निर्देशिका में "होना" की अनुमति देने के लिए एक निर्देशिका पर विचार करें । इसके बिना, आप निर्देशिका में सीडी नहीं कर सकते, आप यह नहीं देख सकते कि निर्देशिका में क्या है, आप निर्देशिका में व्हाट्सएप नहीं खोल सकते। यदि आपके पास पुस्तकालय में रहने की अनुमति नहीं है, तो आप वहां पुस्तकें नहीं पढ़ सकते हैं।
डेरफक

यदि मैं निर्देशिका (744 निर्देशिका, 644 फ़ाइलों के अंदर) के लिए निष्पादन अनुमतियों को जोड़ता हूं, तो मुझे SSHD से एक त्रुटि मिलती है जिसमें कहा गया है कि .ssh निर्देशिका की अनुमतियाँ 644 या उससे कम होनी चाहिए। लेकिन 644 के रूप में अनुमतियों के साथ यह कहता है कि यह एक्सेस नहीं कर सकता है। ssh / अधिकृत_कीप्स
Smudge

* यह विशेष रूप से '.ssh / निर्देशिका' कहती है, फाइलों में नहीं
Smudge

2

निर्देशिका में ls या cd करने के लिए, आपको निष्पादन अनुमतियों की आवश्यकता होती है। जब आपके पास उनके पास नहीं है, तो आप वास्तव में सामग्री का निरीक्षण नहीं कर सकते हैं और फ़ाइलों की अनुमतियों को अंदर देख सकते हैं, इसलिए संभवत: फ़ाइल अनुमतियाँ स्वयं गलत हैं, यदि आप उन्हें कैट नहीं कर सकते हैं।

700 की निर्देशिका अनुमति और 644 फ़ाइल अनुमतियां मेरे लिए पूरी तरह से ठीक हैं।


फ़ाइलों के लिए अनुमतियाँ हैं 644, फ़ाइलों का स्वामी g है: g इसलिए फ़ाइलों की अनुमतियाँ सही हैं। अगर मैं निर्देशिका अनुमतियों को निष्पादित करता हूं, तो SSHD कहता है कि मुझे 644 या उससे कम की अनुमतियों को छोड़ने की जरूरत है
Smudge

सनी की टिप्पणी सही है - वोट थोड़े कठोर हैं
एंडीएम

0

मुझे लगता है कि यह अब एक ssh फ़ाइल समस्या है? एक सामान्य chmod मुद्दा नहीं है?

अगर ऐसा है तो कोशिश करें

$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*

एक और मुद्दा, आरोह बिंदु हो सकता है, क्या यह कहीं और से रखा गया है, CIFS, NFS?
एंडीएम

0

निर्देशिकाओं को खोलने के लिए x बिट सेट (निर्देशिका के लिए बिट को खोज बिट के रूप में देखा जाता है) की आवश्यकता होती है। इसलिए मैं पेड़ का उपयोग करता हूं इसलिए मैं केवल फ़ोल्डर सेट प्राप्त कर सकता हूं और सभी फ़ाइलों को निष्पादन योग्य के रूप में सेट करने से बचना चाहिए (पेड़ के लिए विकल्प -d List directories only.):

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

चेतावनी !!! आपको इस पर विचार करना चाहिए:

  • रूट /डायरेक्टरी या सिस्टम डाइरेक्टरीज़ पर चामोड या चाउन रिकर्सिव का उपयोग करना आपके ओएस को नष्ट कर देगा (वास्तव में /डायरेक्ट्री या सिस्टम डाइरेक्टरी पर पुनरावर्ती कुछ भी खतरनाक है)

  • यह अनुमति थोक की तरह सेट करने के लिए एक अच्छा सुरक्षा अभ्यास नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.