लिनक्स - 777 अनुमतियों के साथ स्वामित्व वाली फ़ाइल को नहीं हटा सकता


29

मेरे पास कुछ फाइलें हैं जिन्हें मैं rf -Rfकमांड का उपयोग करके नहीं हटा सकता । मैं उन फ़ाइल का स्वामी हूं और उन फ़ाइलों को दिया गया समूह भी एक ऐसा समूह है जिसमें मेरा उपयोगकर्ता शामिल है। यहां तक ​​कि weirder है कि मैं उनकी सामग्री को संपादित कर सकता हूं और मैं उनके लिए अनुमतियों को बदल सकता हूं, लेकिन मैं स्थानांतरित नहीं कर सकता या उन्हें हटाओ।

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

क्या कोई मुझे बता सकता है कि क्या हो रहा है?


5
सामान्य तौर पर, rm -rf DIRECTORY_NAME का उपयोग करने पर विचार करें और "*" नहीं। यह आपको उस समय से बचाएगा जब आप खुद को डायरेक्टरी में सोचेंगे / कुछ / जहां / सुरक्षित लेकिन इसके बजाय / घर में हैं
सरदारथियन -

वास्तव में मैंने कोशिश की थी कि, यह सिर्फ उन 3 फाइलों को था जिन्हें मैं हटा नहीं सकता था इसलिए मैंने इस पोस्ट के उद्देश्य के लिए थोड़ी प्रक्रिया करने के लिए सरलीकृत किया है।
रायल सेप

Lsattr और chattr कमांड को न भूलें ...

जवाबों:


61

एक फ़ाइल को निकालने के लिए आपको उस निर्देशिका पर लिखने की अनुमति चाहिए जिसमें यह फ़ाइल है।

यहां अनुमतियां इस dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .प्रकार हैं कि कोई भी (इसके अलावा root) इस डायरेक्टरी के अंदर की फाइलों को हटा नहीं सकता है। मालिक को chmodपहले उपयोग करना चाहिए ।

-
1. इसके लिए बहुत अच्छे कारण हैं। के साथ एक फ़ाइल को 'हटाने' से rm, आप वास्तव में इसे निर्देशिका से अनलिंक करने की कोशिश कर रहे हैं (हार्डलिंक कॉपी हटाए नहीं जाएंगे)।


1

मैं एक ही समस्या थी, और chmodअकेले चाल नहीं किया। मुझे पहले उन फ़ाइलों के स्वामी (उपयोगकर्ता और समूह) को बदलना था जिन्हें मैं हटाना चाहता था।

sudo chown -hR root:admin dir_to_delete

स्पष्टीकरण:

  • sudo: सुनिश्चित करें कि आपके पास उचित अधिकार हैं
  • chown: किसी फाइल के मालिक को बदलने के लिए लिनक्स कमांड
  • -hR: निर्देशिका और सभी उपनिर्देशिकाओं के मालिक बदलें। मैंने इसे यहां पाया ।
  • root: नए उपयोगकर्ता का नाम
  • admin: नए समूह का नाम

मैंने पहले ही संशोधक को 777 में बदल दिया था; मुझे नहीं पता कि यह आवश्यक था या नहीं।


निर्देशिका के भीतर फाइलों की अनुमतियाँ अप्रासंगिक हैं, केवल निर्देशिका पर ही अनुमति लिखती हैं। संभवतः इससे पहले chownआप न तो निर्देशिका के मालिक थे और न ही निर्देशिका मालिक समूह के सदस्य।
भगनाजगन

1

एक अन्य संभावित प्रश्न विशेषता है

lsattr file

यह कमांड आपको फ़ाइल की विशेषता दिखाएगा और 'i' विशेषता वाली फ़ाइल को संशोधित नहीं किया जा सकता (और हटाया जा सकता है)

इसलिए अपनी फ़ाइल की विशेषता जांचें और यदि विशेषता सेट की गई है तो 'i' विशेषता को हटा दें

chattr -i file

2
प्रश्न दिखाता है कि यह निर्देशिका अनुमतियाँ हैं जो लिखने की अनुमति नहीं देती हैं। आगे देखने की जरूरत नहीं।
स्पाइट

0

कारण यह है कि मूल निर्देशिका chmod 705या ऐसा कुछ है। आप chmodनिम्न आदेश द्वारा मूल निर्देशिका कर सकते हैं :

chmod -R 777 directory_name

इसके बाद, आप उस निर्देशिका और उसमें मौजूद फ़ाइलों को हटा सकते हैं।


4
कृपया हर किसी के द्वारा निर्देशिकाओं को लिखने योग्य न बनाएं । यह अच्छी सलाह नहीं है।
टोबे स्पाइट

+1 - सहमत हैं, इस सलाह का पालन न करें, यह आश्चर्यजनक है, यह कैसे पूरे इंटरनेट पर मढ़ दिया जाता है ... असुरक्षा की मात्रा, जो लोग इसकी वकालत कर रहे हैं, वह अविश्वसनीय है ...
एंड्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.