फ़ाइल अनुमति केवल निष्पादित करें


12

मैं केवल अन्य उपयोगकर्ताओं के लिए निष्पादन योग्य होने के लिए फ़ाइल कैसे सेट कर सकता हूं लेकिन पठनीय / योग्य नहीं है, इसका कारण मैं अपने उपयोगकर्ता नाम के साथ कुछ निष्पादित कर रहा हूं, लेकिन मैं पासवर्ड देना नहीं चाहता। मैंने कोशिश की :

chmod 777 testfile
chmod a=x
chmod ugo+x

किसी अन्य उपयोगकर्ता के रूप में निष्पादित होने पर मुझे अभी भी अनुमति नहीं मिली है।


जब इसे किसी अन्य उपयोगकर्ता के रूप में निष्पादित नहीं किया जाता है तो क्या होगा? और क्या यह एक स्क्रिप्ट, या एक द्विआधारी कार्यक्रम है? लिपियों को दुभाषिया द्वारा पढ़ा जाना चाहिए।
Psusi

क्या आपके पास फ़ाइल के शीर्ष पर एक शेबंग है? #! / बिन / श
जे बैरन

जवाबों:


10

आपको स्क्रिप्ट को पढ़ने और निष्पादित करने के लिए दोनों की आवश्यकता होती है, इसे निष्पादित करने में सक्षम होने के लिए। यदि आप स्क्रिप्ट की सामग्री नहीं पढ़ सकते हैं, तो आप इसे निष्पादित करने में सक्षम नहीं हैं।

tony@matrix:~$ ./hello.world
hello world
tony@matrix:~$ ls -l hello.world
-rwxr-xr-x 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ chmod 100 hello.world
tony@matrix:~$ ls -l hello.world
---x------ 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ ./hello.world
bash: ./hello.world: Permission denied

वास्तव में, यह प्रतिबिंबित करने के लिए अद्यतन किया गया है कि यह उन लिपियों के लिए सही है जो मूल प्रश्न पर विचार कर रहे हैं, मुझे संदेह है कि मामला क्या है।
EightBitTony

13

पिछले कथनों का आधा सच है। आप एक स्क्रिप्ट सेटअप कर सकते हैं ताकि यह उपयोगकर्ता द्वारा पठनीय न हो, लेकिन फिर भी निष्पादन योग्य हो। यह प्रक्रिया थोड़ी खींची हुई है, लेकिन यह / etc / sudoer में एक अपवाद बनाकर संभव है, ताकि उपयोगकर्ता स्क्रिप्ट के लिए अस्थायी रूप से पासवर्ड के लिए संकेत किए बिना चला सके। नीचे उदाहरण:

कुछ स्क्रिप्ट जो मैं एक उपयोगकर्ता के साथ साझा करना चाहता हूं:

me@OB1:~/Desktop/script/$ chmod 700 somescript.pl
me@OB1:~/Desktop/script/$ ls -l somescript.pl
-rwx------ 1 me me 4519 May 16 10:25 somescript.pl

शेल स्क्रिप्ट बनाएं जो 'somescript.pl' को कॉल करता है और इसे / bin /: में सेव करता है।

me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me: 
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@

वैकल्पिक कदम somescript.sh में / बिन /:

sudo ln -s /bin/somescript.sh /bin/somescript

सुनिश्चित करें कि शेल स्क्रिप्ट उपयोगकर्ता के लिए पठनीय / निष्पादन योग्य है (कोई लिखित पहुँच नहीं):

sudo chmod 755 /bin/somescript.sh
me@OB1:/bin$ ls -l somescript*
lrwxrwxrwx 1 root root  14 May 28 16:11 somescript -> /bin/somescript.sh
-rwxr-xr-x 1 root root 184 May 28 18:45 somescript.sh

इन पंक्तियों को जोड़कर / etc / sudoer में अपवाद करें:

# User alias specification
User_Alias  SCRIPTUSER = me, someusername, anotheruser

# Run script as the user 'me' without asking for password
SCRIPTUSER ALL = (me) NOPASSWD: /home/me/Desktop/script/somescript.pl

पुडिंग में सबूत:

someuser@OB1:~$ somescript
***You can run me, but can't see my private parts!***

someuser@OB1:~$ cat /home/me/Desktop/script/somescript.pl
cat: /home/me/Desktop/script/somescript.pl: Permission denied

इस विधि के साथ अंधेरा करना करने की कोशिश कर की तुलना में बेहतर होना चाहिए Filter::Cryptoया PAR::Filter::Cryptoया Acme::Bleachएक निर्धारित उपयोगकर्ता द्वारा इंजीनियर उलट जा सकता है। वही आपकी स्क्रिप्ट को बाइनरी में संकलित करने के लिए जाता है। मुझे पता है अगर आप इस विधि के साथ कुछ गलत पाते हैं। अधिक उन्नत उपयोगकर्ताओं के लिए आप User_Alias ​​अनुभाग को पूरी तरह से हटा सकते हैं और SCRIPTUSER को '% groupname' से बदल सकते हैं। इस तरह आप अपने स्क्रिप्ट उपयोगकर्ताओं को usermodकमांड के साथ प्रबंधित कर सकते हैं ।


6

यदि आप अन्य उपयोगकर्ताओं को किसी प्रोग्राम को निष्पादित करने देते हैं, तो उन्हें पता चल सकता है कि प्रोग्राम क्या कर रहा है, क्या प्रोग्राम फ़ाइल पढ़ने योग्य है या नहीं। उन्हें केवल एक डिबगर (या डिबगर-जैसे प्रोग्राम strace) को इंगित करना होगा । यदि यह निष्पादन योग्य है और पढ़ने योग्य नहीं है तो एक बाइनरी निष्पादन योग्य चल सकता है (एक स्क्रिप्ट नहीं कर सकता है, क्योंकि दुभाषिया को स्क्रिप्ट पढ़ने में सक्षम होने की आवश्यकता है), लेकिन यह आपको कोई सुरक्षा नहीं देता है।

यदि आप चाहते हैं कि अन्य लोग आपके कार्यक्रम को ब्लैक बॉक्स के रूप में निष्पादित करने में सक्षम हों, तो उन्हें यह देखने के बिना कि कार्यक्रम क्या कर रहा है, आपको अपनी स्क्रिप्ट को विशेषीकृत विशेषाधिकार देने की आवश्यकता है: इसे अपने उपयोगकर्ता के लिए निर्धारित करें। केवल रूट सेट्यूड प्रोग्राम पर डिबगिंग टूल का उपयोग कर सकता है । ध्यान दें कि सुरक्षित सेयुड प्रोग्राम लिखना आसान नहीं है, और अधिकांश भाषाएँ उपयुक्त नहीं हैं; अधिक स्पष्टीकरण के लिए शेल स्क्रिप्ट पर सेतुबंध की अनुमति दें देखें । यदि आप एक सेट्यूइड प्रोग्राम लिखने जा रहे हैं, तो मैं दृढ़ता से पर्ल की सिफारिश करता हूं, जिसमें एक मोड (टेंट मोड) है जो स्पष्ट रूप से सुरक्षित सेटिड स्क्रिप्ट को संभव बनाने के लिए है।


-1

आप chmod कमांड से फाइल परमिशन सेट कर सकते हैं। रूट उपयोगकर्ता और फ़ाइल का स्वामी दोनों फ़ाइल अनुमतियाँ सेट कर सकते हैं। chmod के दो मोड हैं, प्रतीकात्मक और संख्यात्मक।

पहले, आप तय करते हैं कि क्या आप उपयोगकर्ता (यू), समूह (जी), अन्य (ओ), या तीनों (ए) के लिए अनुमतियाँ सेट करते हैं। फिर, आप या तो एक अनुमति (+) जोड़ते हैं, इसे हटाते हैं (-), या पिछली अनुमतियाँ मिटाते हैं और एक नया जोड़ते हैं (=)। इसके बाद, आप तय करते हैं कि यदि आप रीड अनुमति (आर) सेट करते हैं, तो अनुमति (डब्ल्यू) लिखें, या अनुमति (एक्स) निष्पादित करें। अंत में, आप chmod को बताएंगे कि आप किस फ़ाइल की अनुमतियाँ बदलना चाहते हैं।

कुछ उदाहरण निम्नलिखित हैं।

सभी अनुमतियों को मिटा दें, लेकिन सभी के लिए पठन अनुमति जोड़ें:

$ chmod a=r filename

कमांड के बाद, फ़ाइल की अनुमतियाँ -r - r - r-- होगी

समूह के लिए निष्पादन अनुमतियाँ जोड़ें:

$ chmod g+x filename

अब, फ़ाइल की अनुमति होगी -r - r-xr--

दोनों को जोड़ें और फ़ाइल के मालिक के लिए अनुमतियों को निष्पादित करें। ध्यान दें कि आप एक ही समय में एक से अधिक अनुमति कैसे सेट कर सकते हैं:

$ chmod u + wx फ़ाइल नाम

इसके बाद, फ़ाइल अनुमतियाँ होगी -rwxr-xr--

फ़ाइल के स्वामी और समूह दोनों से निष्पादित अनुमति निकालें। ध्यान दें, फिर से, आप दोनों को एक साथ कैसे सेट कर सकते हैं:

$ चोदम कुरूप-एक्स फ़ाइल नाम

अब, अनुमतियाँ -rw-r - r-- हैं

यह प्रतीकात्मक मोड में फ़ाइल अनुमतियां सेट करने के लिए एक त्वरित संदर्भ है:

Which user?
u   user/owner
g   group
o   other
a   all
What to do?
+   add this permission
-   remove this permission
=   set exactly this permission
Which permissions?
r   read
w   write
x   execute

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