-प्रकाश में झंडा

Sep 05 2020

मैं इस कमांड के चारों ओर अपना सिर लपेटने की कोशिश कर रहा हूं:

find /home/ -type d \( -perm -0002 -a ! -perm -1000 \) 2>/dev/null

मैं समझता हूं कि यह सभी निर्देशिकाओं के लिए 'होम' डायरेक्टरी में देखने जा रहा है और सभी stderr संदेशों को एक फाइल में (उन्हें दबाने के लिए) रीडायरेक्ट करता है, हालाँकि मैं बीच में विशेष रूप से इस उलझन में हूँ:

\( -perm -0002 -a ! -perm -1000 \)

स्लैश का क्या मतलब है? मुझे लगता है कि ! -perm -1000उन अनुमतियों के बिना निर्देशिकाओं -perm -0002को देखने का मतलब है , और उन अनुमतियों के साथ निर्देशिकाओं को देखने का मतलब है, लेकिन मुझे केवल 644 फॉर्म (उदाहरण के लिए) में अनुमतियों को देखने के लिए उपयोग किया जाता है। चार अंक क्यों हैं? इसके अलावा, -aझंडा क्या करता है?

जवाब

4 netmonk Sep 05 2020 at 17:45

में मैनुअल आप पा सकते हैं:

Operators
              Operators join together the other items within the expression.
              They include for example -o (meaning logical OR) and -a
              (meaning logical AND).  Where an operator is missing, -a is
              assumed.

तो शाब्दिक \( -perm -0002 -a ! -perm -1000 \)अर्थ है: पर्म = 0002 और पर्म = 1000 नहीं

perm = 0002 का मतलब दूसरों के लिए उपयुक्त है
perm = 1000 का मतलब है चिपचिपा सा सेट।

तो यह अभिव्यक्ति अन्य के लिए फ़ाइल लिखने योग्य और बिना चिपचिपा बिट सेट के लिए खोज करती है।

निर्देशिका की तलाश का -type d dअर्थ है निर्देशिका के साथ किया जाता है ताकि प्रकार निर्देशिका के ऑब्जेक्ट के बाद देखो

खोज मैनुअल से, -permकई रूप हैं:

  • -perm 0002 इस सटीक अनुमति सेटिंग के साथ सभी फ़ाइलों का मिलान करेगा
  • -perm -0002सभी फाइलों से मेल खाएगा जहां यह सही बिट सेटअप है, (जिसका अर्थ है 0772, 1752... जो भी संयोजन यदि फ़ाइल दूसरों के लिए लेखन योग्य है)
5 ilkkachu Sep 05 2020 at 22:23

में -type d \( -perm -0002 -a ! -perm -1000 \), पहले, स्लैश कोष्ठक खोल के लिए, तो वे भागने के बजाय खोल द्वारा विशेष ऑपरेटरों के रूप में व्याख्या की जा रही है, एक तर्क के रूप में पारित किया जा सकता है। (आपको >स्पष्ट कारणों से उदाहरण के लिए इसकी आवश्यकता होगी ।) उन्हें '('या तो लिखा जा सकता है "(", लेकिन अंततः findकेवल देखता है (और )।

कोष्ठक समूह की स्थिति, और -aएक है और संयोजन के रूप। यह बैक-टू-बैक परिस्थितियों के लिए अंतर्निहित डिफ़ॉल्ट भी है, जैसे यहाँ -type dऔर कोष्ठक में अभिव्यक्ति के साथ प्रयोग किया गया है, कोई स्पष्ट -aकनेक्ट नहीं है। अभिव्यक्ति बिल्कुल इसके बराबर है -type d -perm -0002 ! -perm -1000। कोष्ठक वास्तव में या संयोजन के साथ की जरूरत है -o।

-type dस्पष्ट है, और सभी सेट बिट्स के साथ फ़ाइल देखने का मतलब है । या, इस मामले में, दूसरों की अनुमति ( ) सेट, और चिपचिपा बिट ( ) नकारात्मक (क्योंकि नकारात्मक) के लिए लेखन के साथ निर्देशिका । मुझे लगता है कि यहां संयोजन भी लिखा जा सकता है । अनुमति स्ट्रिंग के सामने पानी का छींटा नोट करें, इसके बिना, अर्थ अलग होगा। उदाहरण के लिए लिनक्स मैन पेज देखें , "(expr)" और "-perm मोड" देखें।-perm -NNNNNNNN00021000-perm -o+w ! -perm -o+t

एक निर्देशिका तक पहुंच लिखें, इसके अंदर फ़ाइलों को बनाने, हटाने और नाम बदलने की अनुमति देता है, और चिपचिपा बिट अन्य उपयोगकर्ताओं के स्वामित्व वाली फ़ाइलों को हटाने और नाम बदलने से रोकता है। पूरी अभिव्यक्ति उन निर्देशिकाओं की तलाश करती है जहां कोई भी किसी भी फाइल को हटा या नाम बदल सकता है।

2 binarysta Sep 05 2020 at 17:47
  • -a: तार्किक और (के -oलिए इस्तेमाल किया जा सकता है)
  • \(, \)क्योंकि कोष्ठक खोल में विशेष अर्थ नहीं है, स्लेश उन्हें बचने के लिए इस्तेमाल किया
  • चार अंकों अनुमतियों से जुड़े हुए हैं sticky bit, setuid,setgid