अनुमतियों का उद्देश्य जैसे 0111 या 0333


17

लिनक्स अनुमतियों का उद्देश्य क्या है जैसे कि 111 या 333 (यानी उपयोगकर्ता निष्पादित कर सकता है , लेकिन फ़ाइल को नहीं पढ़ सकता है), यदि निष्पादित करने की क्षमता स्वचालित रूप से पढ़ने की क्षमता का अर्थ नहीं है?


1
क्या आपके पास इस तरह की सेटिंग के लिए एक उदाहरण है? मेरे विचार से आप सही है। आप वह नहीं कर सकते जो आप नहीं पढ़ सकते। ये संयोजन 0000 और 0777 के बीच अनुमतियों के स्थान में सिर्फ सैद्धांतिक हैं। ध्यान दें कि संख्या के अष्टाधार आधार को दिखाने के लिए अग्रणी 0 जोड़ा जाना चाहिए।
ikrabbe

6
जब तक यह एक स्क्रिप्ट (उदाहरण के लिए। शेल-स्क्रिप्ट) है, तो आपको वास्तव में कमांड को निष्पादित करने के लिए रीड-अनुमति की आवश्यकता नहीं है। एक "सामान्य" निष्पादन योग्य - उदाहरण के लिए। su, bash या vi - केवल निष्पादन योग्य-बिट को सेट करने की आवश्यकता है, ताकि उपयोगकर्ता उसे चला सके। एक फ़ाइल जिसे पढ़ा नहीं जा सकता, उसे कॉपी नहीं किया जा सकता । इसलिए किसी उपयोगकर्ता को सुरक्षा-महत्वपूर्ण आदेश (जैसे su) की प्रतिलिपि बनाने की अनुमति नहीं देने से, उसे उसकी खुद की प्रतिलिपि बनाने से रोका जाता है - और इसे अलग करने की कोशिश करने से भी। * BSD के पास निष्पादन के साथ कई कमांड हैं, लेकिन कोई भी पढ़ने की अनुमति नहीं है।
बार्ड कोपरपुड

जवाबों:


25

मैंने इसके साथ खेला है और जाहिर तौर पर, निष्पादन अनुमतियाँ अनुमतियाँ नहीं पढ़ती हैं। बायनेरी पठनीय होने के बिना निष्पादन योग्य हो सकते हैं:

$ echo 'int main(){ puts("hello world"); }' > hw.c
$ make hw
$ ./hw
hello world
$ chmod 111 hw
$ ./hw 
hello world
$ cat hw
/bin/cat: hw: Permission denied

हालांकि, मैं स्क्रिप्ट निष्पादित नहीं कर सकता, जब तक कि वे दोनों पढ़ने और अनुमति बिट्स निष्पादित न करें:

$ cat > hw.sh
#!/bin/bash
echo hello world from bash
^D
$ chmod +x ./hw.sh
$ ./hw.sh 
hello world from bash
$ chmod 111 ./hw.sh
$ ./hw.sh
/bin/bash: ./hw.sh: Permission denied

4
यह सही है क्योंकि दूसरा उदाहरण # का उपयोग करता है! ईएलएफ-हेडर को याद करने के रूप में इसे शुरू करने के लिए और इसके लिए फ़ाइल को पढ़ने योग्य बनाने की आवश्यकता है ताकि यह अनुमान लगाया जा सके कि इसका उपयोग करने के लिए कौन सा निष्पादन योग्य है। यह एक सामान्य स्थिति है जहाँ आप फ़ाइलों की सामग्री को अन्य स्थानों पर कॉपी होने से बचाना चाहते हैं। एक लाइसेंस प्रबंधक आम उदाहरण है जहां आप इसे देखेंगे।
hspaans

1
ध्यान दें कि आप अभी भी एक निष्पादन योग्य केवल बाइनरी पढ़ सकते हैं: unix.stackexchange.com/a/34294
小 小

6
@ हसन: शबंग कर्नेल द्वारा संभाला जाता है, और कर्नेल अनुमति जैसी छोटी चीज़ों की परवाह नहीं करता है। यह शेल (या दुभाषिया) है जिसे पढ़ने की आवश्यकता है। कर्नेल चलाता है (कहते हैं) /bin/bash hw.sh, और फिर बैश hw.shपढ़ने के लिए खोलने की कोशिश करता है (और विफल रहता है)।
केविन

2
मुझे एक बहुत उम्मीद है कि कर्नेल अनुमतियों के बारे में परवाह करता है । और कुछ नहीं करता। @ केविन के पोस्ट में डरावने वाक्य का मतलब यह है कि कर्नेल को फ़ाइलों को निष्पादित करने के लिए केवल निष्पादन की अनुमति की आवश्यकता होती है, भले ही वे शेबंग का उपयोग करें।
एमिल जेकाबेक

2
@ EmilJe Emábek कर्नेल एक आवेदन प्रक्रिया क्या कर सकता है यह तय करते समय अनुमतियों की परवाह करता है। लेकिन चूंकि यह घटक है जो अनुमतियों को लागू करता है, इसलिए यह उन्हें आंतरिक रूप से भी अनदेखा कर सकता है। इसलिए यह व्याख्या की गई फ़ाइल को निष्पादित करने के तरीके का निर्धारण करते समय शेलबैंग लाइन को पढ़ सकता है, या मेमोरी में केवल एक निष्पादन-योग्य बाइनरी फ़ाइल की सामग्री को पढ़ सकता है।
19-21

16

यह निर्देशिकाओं के लिए समझ में आता है, उदाहरण के लिए यदि आप एक विशिष्ट निर्देशिका में (गुप्त) निष्पादक रखते हैं और तब उपयोगकर्ताओं को निर्देशिका सामग्री को देखने में सक्षम हुए बिना उन फ़ाइलों को कॉल करने की अनुमति देते हैं (लेकिन यह जानने के बाद कि कोई विशिष्ट फ़ाइल आपके द्वारा उन्हें सूचित किए जाने के बाद है!)। 111 की तुलना में 333 उन निर्देशिकाओं को / निर्देशिका से सामग्री को देखने के लिए सक्षम किए बिना फ़ाइलों को लिखने / हटाने की अनुमति देता है।


5
मेरे यूनी में, उन अनुमतियों का उपयोग छात्रों को या तो दूसरों को काम करते हुए बिना निर्देशिका में असाइनमेंट छोड़ने के लिए किया गया था। लेखीपति पुरानी खोपड़ी का था।
DarkHeart

@DarkHeart दिलचस्प। मुझे आशा है कि आपको फ़ाइल नाम पर एक यादृच्छिक घटक जोड़ना होगा, क्योंकि अन्यथा, यदि आपके सहपाठियों से प्रयास करने और कॉपी करने के लिए कोई प्रोत्साहन नहीं है, तो मुझे नहीं पता कि क्या है।
PSkocik

5

स्पष्ट रूप से सभी संयोजन उपयोगी नहीं हैं, लेकिन आपके द्वारा विशेष रूप से उल्लेखित एक को लेने के लिए ... आपको वास्तव में readकिसी फ़ाइल को निष्पादित करने की अनुमति की आवश्यकता नहीं है - केवल executeअनुमति - जब तक कि प्रश्न में फाइल एक स्क्रिप्ट नहीं है (उदाहरण के लिए शेल-स्क्रिप्ट) ( .sh), पर्ल-स्क्रिप्ट ( .pl) और इतने पर)। सामान्य बायनेरिज़ को केवल executeअनुमति के साथ निष्पादित किया जा सकता है । * BSD-systmes पर, कई निष्पादक executeअनुमति के बिना readअनुमति देते हैं, विशेष रूप से "सुरक्षा-महत्वपूर्ण" आदेशों पर - जैसे su

तो क्यों नहीं उपयोगकर्ता read-प्रवेश (और सिर्फ execute-permisson)? किसी उपयोगकर्ता द्वारा पढ़ी जा सकने वाली फ़ाइल बनें, उस उपयोगकर्ता द्वारा कॉपी नहीं की जा सकती ! readअनुमति को हटाते हुए, उपयोगकर्ताओं को निष्पादकों की अपनी "व्यक्तिगत" प्रतियां बनाने से रोकता है - जो बाद में वे दुरुपयोग करने में सक्षम हो सकते हैं (उदाहरण के लिए SUID=root on)।

और write-प्रमाणन नहीं होने पर , किसी फ़ाइल को अचानक हटाए जाने से रोकता है।

आप पर ध्यान दें, मालिक को न read-नन- writeफ़र्म नहीं देना थोड़ा असामान्य है, लेकिन कभी-कभी ownerकिसी फ़ाइल को हटाने से भी रोकना एक अच्छा विचार हो सकता है । बेशक owner- उल्लेख नहीं करने के लिए root- हमेशा ऐसे उपायों को दरकिनार कर सकते हैं, यदि अन्य तरीकों से नहीं, तो बस chmodफ़ाइल पर अनुमति द्वारा ।


"यह ownerसिर्फ एक फ़ाइल को हटाने से रोकने के लिए एक अच्छा विचार हो सकता है ।" - इसके अलावा आपको इसे हटाने के लिए किसी फ़ाइल (पढ़ने, लिखने या निष्पादित करने) पर किसी भी प्रकार की अनुमति की आवश्यकता नहीं है।
सेलडा

रेडी-ओनली एक्जीक्यूटिव का उपयोग उदाहरण के लिए किया जा सकता है, यदि एग्जीक्यूटेबल डेटाबेस पासवर्ड का उपयोग करता है, जो किसी डेटाबेस से कनेक्ट करने के लिए रन करते समय अपना काम करता है और अपना काम करता है, लेकिन जरूरी नहीं कि वह पासवर्ड को प्रकट करना चाहता हो।
सेलडा

@ कैलाडा, यह एक पुराना सवाल है, लेकिन क्या ऐसा नहीं होगा कि मेमोरी रीजन ऑफ़सेट्स को देखने के माध्यम से मेमोरी डंपिंग के लिए अतिसंवेदनशील हो /proc/${PID}/mapsऔर फिर मेमोरी के संबंधित अनुभागों को पढ़ें /proc/${PID}/mem? या निष्पादन योग्य फ़ाइल पर अनुमतियों को प्रतिबंधित करने से निष्पादन के दौरान अपने संबंधित अनुभागों पर रीड अनुमतियाँ प्रतिबंधित हो जाती हैं? (उत्तरार्द्ध की संभावना कम लगती है, IMO।)
स्पेंसर डी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.