'मेरे पास' की अनुमति 'अस्वीकृत'?


13

मेरा उपयोगकर्ता, बॉब, उन फ़ाइलों तक नहीं पहुँच सकता जिन्हें वह (सैद्धांतिक रूप से मालिक है)। मैं Fedora Core 8 चला रहा हूं। यह बताने की तुलना में संभवतः आसान है:

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

ls -alबहुत अजीब के रूप में बाहर खड़ा है। यह उन फ़ाइलों को सूचीबद्ध करेगा जिन्हें मेरे पास देखने की अनुमति नहीं है, लेकिन मुझे अनुमतियाँ नहीं दिख रही हैं?

तो सवाल यह है कि इसका क्या कारण होगा? और इसकी मरम्मत के लिए मैं क्या कर सकता हूं?

जवाबों:


18
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

ऐसा नहीं लगता कि बॉब ने ./log के लिए अनुमतियां निष्पादित की हैं, इसलिए वह इसे नहीं cdकर सकता।

परंतु

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

दिखाता है कि वह करता है। लेकिन ऐसा नहीं लगता है कि वे एक ही फ़ाइल (अलग-अलग अनुमतियाँ, अलग-अलग समय) की ओर इशारा कर रहे हैं।

कोशिश करें sudo ls -ail ./logऔर ls -ailदेखें कि क्या इनोड समान है।


10

फाइलसिस्टम भ्रष्टाचार या सेलिनक्स की तुलना में चीजें अधिक सरल हैं। जैसा कि आप देख सकते हैं कि आप लॉग डायरेक्टरी पर x (निष्पादन योग्य) की अनुमति नहीं दे रहे हैं। वास्तव में निर्देशिका के लिए x का अर्थ है कि कोई व्यक्ति उस निर्देशिका को बदलने में सक्षम है। बस उस परमिट को ठीक करने के लिए एक "chmod + x लॉग" करें और आपको इसे एक्सेस करने में सक्षम होना चाहिए।


> वास्तव में निर्देशिका के लिए x का अर्थ है कि कोई व्यक्ति उस निर्देशिका को बदलने में सक्षम है वाह। मैं भूल जाता हूँ कि; धन्यवाद।
yPhil

6

मैंने उस तरह की चीजें देखी हैं जब फाइल सिस्टम दूषित हो गया है, या यदि आपके पास एक असफल ड्राइव है। आमतौर पर यह फिक्स फाइल सिस्टम के खिलाफ fsck को रन करना है और इसे सही एरर देना है।


मैंने यह सिर्फ एक घंटे पहले अपने एक फ़ाइल सर्वर पर किया था। +1
थॉमस डेंटन

2

इसके अलावा, एसई / लिनक्स सेटिंग्स की जांच करें। कभी-कभी फ़ाइल पर अनुमतियों का कोई लेना देना नहीं होता है या आप इसे एक्सेस कर सकते हैं या नहीं।


1
मैं @ डेविड मैकिन्टोश से सहमत हूँ। यदि SELinux सक्षम है और यदि फ़ाइलें / निर्देशिका किसी और ने बनाई हैं और फिर स्वामित्व को बॉब में बदल दिया है, तो ऐसा होने की संभावना है। चूंकि फाइलों का संदर्भ मूल लेखक के पास रहता है और अभ्यस्त होने तक संदर्भ को बॉब उपयोगकर्ता के लिए भी बदल दिया जाता है।
विकी

2

फ़ाइलें अपरिवर्तनीय हो सकती हैं या केवल विस्तारित विशेषताओं को सेट कर सकती हैं। मैंने पहले भी ऐसा किया है और रूट भी फाइल को डिलीट नहीं कर पाया।

विस्तारित विशेषताओं को "lsattr" के माध्यम से देखा जा सकता है और "chattr" के माध्यम से बदला जा सकता है


1
> सुडो ls -ल ./log
drw-rw-r-- 3 बॉब बॉब 4096 जून 2 04:11।

मुझे यकीन नहीं है कि क्यों लेकिन "।" प्रविष्टि ./log/ में अनुमतियाँ निष्पादित नहीं हैं। अनुमतियाँ उन / .log के समान होनी चाहिए।

क्या आप chmod 755 / .log और chmod 755 ./log/ आज़मा सकते हैं। और देखें कि क्या या तो कमांड एक्सेस को ठीक करता है?

इसके अलावा मैं आपको सलाह दूंगा कि आप फाइलसिस्टम पर एक fsck चलाएं क्योंकि ऐसा लगता है कि यह सिंक से बाहर है।


1

क्या आपने निर्देशिका के स्वामित्व को किसी अन्य व्यक्ति में बदलने की कोशिश की है, फिर वापस बॉब के लिए? Zoredache की सलाह बेहतर है, हालांकि - बस इसे fsck करें!


2
इस प्रकार की समस्या हमेशा निर्देशिका अनुमतियाँ समाप्त होती है।
डबलजोश

1

एक अधिक संक्षिप्त जवाब आईएमओ।

आपकी निर्देशिका में निष्पादन योग्य अनुमति नहीं है, जो सीडी द्वारा आवश्यक हैं ।

ठीक कर:

$ sudo chmod +x ./log

रिकर्सिवली:

$ sudo chmod -R +x ./log

+ x निष्पादन योग्य विशेषता जोड़ रहा है। आप हमेशा -x करके विशेषता को निकाल सकते हैं

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