मैं अपनी निर्देशिका के तहत किसी और के उपनिर्देशिका को कैसे निकालूं?


3

मैं एक लिनक्स सर्वर पर एक सहकर्मी के साथ फाइलें साझा कर रहा था, और उसने कुछ नई फाइलें जोड़ीं। अब हमने फ़ाइलों को कहीं और स्थानांतरित कर दिया है, इसलिए मैं पुरानी फ़ाइलों को निकालना चाहूंगा। हालाँकि, जब मेरे सहकर्मी ने अपनी फाइलें जोड़ीं, तो जिस सॉफ्टवेयर का हमने उपयोग किया, उसके खाते में नए उपनिर्देशिकाएँ थीं, और मैं उन्हें निकालने के लिए सही आदेश नहीं ढूँढ सकता।

$ ls -a
total 20
drwxrwxr-x 5 markpasc markpasc 4096 Sep 20 09:48 ./
drwxrwxr-x 3 markpasc markpasc 4096 Sep 20 09:48 ../
drwxr-xr-x 2 coworker coworker 4096 Sep 16 14:07 82/
drwxr-xr-x 2 coworker coworker 4096 Sep 16 14:07 c4/

मैंने कोशिश की:

$ rm -rf 82
rm: cannot remove `82/b7fc78bc548537f3ea235026b7322fe3bea91f': Permission denied
$ rm -f 82/b7fc78bc548537f3ea235026b7322fe3bea91f
rm: cannot remove `82/b7fc78bc548537f3ea235026b7322fe3bea91f': Permission denied
$ rmdir 82/
rmdir: 82/: Directory not empty
$

मुझे पता है कि आम तौर पर मैं अपनी निर्देशिका से किसी अन्य व्यक्ति की फ़ाइल को निकाल सकता हूं:

$ ls -a
total 8
drwxrwxr-x  2 markpasc markpasc 4096 Sep 20 10:13 ./
drwxr-xr-x 24 markpasc markpasc 4096 Sep 20 10:13 ../
-rw-rw-r--  1 someuser someuser    0 Sep 20 10:13 file
$ rm file
rm: remove write-protected regular empty file `file'? y
$ ls file
ls: file: No such file or directory
$

क्या इन निर्देशिकाओं को स्वयं हटाने का कोई तरीका है, या मेरे सहकर्मी (या रूट) को उन्हें हटाना है?


1
शायद आपको रूट से पूछना चाहिए
नाथन फेलमैन

धन्यवाद! मैंने अपने सहकर्मी से पूछा और उसने मुझे उन्हें हटाने में मदद की, लेकिन मुझे आश्चर्य हुआ कि क्या कोई और तरीका था जो मुझे याद था।
मार्का

नहीं, केवल रूट खाता सीमाओं को पार कर सकता है।
हार्पिक

जवाबों:


4

किसी निर्देशिका को निकालने के लिए, आपको दो चीजों की आवश्यकता होती है: मूल निर्देशिका तक पहुंच लिखें, और उस निर्देशिका के खाली होने के लिए। तो आपके सहकर्मी, या रूट को सहयोग करना होगा। यह यूनिक्स अनुमति मॉडल की एक सीमा है।

बेहतर वर्कफ़्लो के लिए जब एक डायरेक्टरी ट्री एक से अधिक उपयोगकर्ता द्वारा लिखने योग्य होता है, तो आप एक्सेस कंट्रोल लिस्ट (यदि समर्थित हो) या सेटगिड निर्देशिकाओं का उपयोग कर सकते हैं।

  • ACLs के साथ, डायरेक्टरी को राइट एक्सेस प्रदान करें, जिसके पास यह होना चाहिए, और डिफॉल्ट ACL को राइट एक्सेस भी सेट करने के लिए सेट करें, ताकि नव निर्मित फाइलें और उपनिर्देशिकाएं वांछित अनुमतियों को प्राप्त करें। उपयोगकर्ता उन चूक को ओवरराइड कर सकते हैं, लेकिन जब तक वे निष्क्रिय रूप से सहयोग करते हैं, तब तक अनुमति ठीक होगी।

    setfacl -m user:coworker:rwx .
    setfacl -d -m user:coworker:rwx .
    
  • यदि आपके पास ACL नहीं है, तो आप किसी समूह को लिखित पहुँच दे सकते हैं, और निर्देशिका पर सेटगिड बिट सेट कर सकते हैं। यह नई बनाई गई फ़ाइलों और उपनिर्देशिकाओं को प्रश्न के समूह से संबंधित है, बजाय बनाने की प्रक्रिया के डिफ़ॉल्ट समूह के कारण। हालाँकि यह अभी भी उपयोगकर्ताओं पर निर्भर है कि वे समूह को नई फ़ाइलों और निर्देशिकाओं को लिखने की अनुमति दें (यह स्वचालित रूप से केवल तभी होता है जब उनके पास है umask 002)।

    chgrp mygroup .
    chmod g+ws .
    

आप इस सूत्र में रुचि रख सकते हैं कि चीजें इस तरह से क्यों काम करती हैं

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