चुनौती
किसी फ़ाइल की UNIX अनुमति और उसके स्वामित्व (उपयोगकर्ता आईडी और समूह आईडी) के प्रतीकात्मक संकेतन को इंगित करने वाली एक स्ट्रिंग को देखते हुए, यह तय करें कि किसी दिए गए उपयोगकर्ता Aको इसे पढ़ने / लिखने / निष्पादित करने की अनुमति है या नहीं।
संबंधित ।
UNIX सिस्टम में अनुमतियाँ
UNIX में, हर फ़ाइल में अनुमतियों ( उपयोगकर्ता , समूह और अन्य ) और स्वामित्व के तीन वर्ग होते हैं , जिसमें उपयोगकर्ता और कौन सा समूह शामिल है।
प्रतीकात्मक अंकन में दस वर्ण होते हैं। इस चुनौती में पहला चरित्र महत्वपूर्ण नहीं है। शेष नौ वर्ण उपयोगकर्ता, समूह और अन्य वर्ग की अनुमतियों का प्रतिनिधित्व करते हुए तीन वर्णों के तीन सेटों में हैं। प्रत्येक सेट में वर्ण इंगित करता है कि क्या पठन / लेखन / निष्पादन की अनुमति है। यदि अनुमति दी जाती है, तो यह होगा r, wया x। नहीं तो होगा -।
ध्यान दें कि setuid , setgid और चिपचिपा सा करने के लिए प्रत्येक सेट के तीसरे चरित्र को बदल सकता है s, S, tया T। यहां एक सरल नियम है: यदि चरित्र लोअरकेस अक्षर है, तो अनुमति निर्धारित है; अन्यथा, यह नहीं है।
(अनुमतियों के सांकेतिक अंकन के विवरण के लिए, कृपया यहाँ देखें ।)
हर यूजर की अपनी यूजर आईडी होती है, और हर ग्रुप की अपनी ग्रुप आईडी होती है। सभी आईडी गैर-नकारात्मक पूर्णांक होंगे। एक उपयोगकर्ता कम से कम एक समूह का होगा। यदि कोई उपयोगकर्ता Aकिसी फ़ाइल तक पहुँच प्राप्त करना चाहता है, तो सिस्टम उनकी अनुमतियों की जाँच निम्नानुसार करेगा:
यदि फ़ाइल उपयोगकर्ता की है
A, तो उपयोगकर्ता वर्ग की अनुमतियों की जाँच करें ।यदि फ़ाइल से संबंधित नहीं है
A, लेकिनAसमूह से संबंधित है , जो फ़ाइल से संबंधित है, तो समूह वर्ग की अनुमतियों की जांच करें ।अन्यथा, अन्य वर्ग की अनुमतियों की जाँच करें ।
हालांकि, एक अपवाद है: यदि उपयोगकर्ता आईडी 0 (सुपरयूज़र) है, तो उन्हें कुछ भी करने की अनुमति है !
विशेष विवरण
- आपके कार्यक्रम / समारोह को इन्हें किसी भी उचित प्रारूप में इनपुट के रूप में लेना चाहिए:
- प्रतीकात्मक संकेतन में अनुमतियाँ ।
- उपयोगकर्ता आईडी और समूह आईडी जो फ़ाइल से संबंधित है।
- उपयोगकर्ता आईडी
A, और समूह आईडी की एक सूची जो किAसंबंधित है। - पहुंच का प्रकार। आप पढ़ने, लिखने और निष्पादित करने के लिए किसी भी तीन अलग-अलग एक-अंकीय या एक-वर्ण मान का उपयोग कर सकते हैं।
- यदि
Aफ़ाइल को एक्सेस करने की अनुमति है या नहीं तो मिथ्या मान पर लौटें / आउटपुट करें । - आप मान सकते हैं कि अंकन का पहला चरित्र हमेशा
-(नियमित फ़ाइल) होगा। - यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा है!
परीक्षण के मामलों
यहाँ प्रारूप है [permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)]।
[-rwx------, 13, 15, 13, [15, 24], r]: True # user
[-rwxr-xr-x, 13, 24, 24, [15, 24], w]: False # group
[-rwxr-Sr-T, 13, 15, 24, [15, 35], x]: False # group
[-rwsr-xr-t, 13, 15, 24, [24, 35], x]: True # others
[----------, 13, 15, 0, [0, 1, 2], r]: True # superuser
[----------, 13, 15, 1, [0, 1, 2], r]: False # others
[----rwxrwx, 13, 15, 13, [15, 24], r]: False # user