यह वास्तव में rm
कमांड के बारे में नहीं हो सकता है , क्योंकि इसका उपयोग किए बिना फ़ाइलों को हटाने के लिए आसान तरीके हैं । यदि समस्या यह है कि आपके मित्र अनजाने में rm
कमांड का दुरुपयोग कर रहे हैं , तो समाधान जो विशेष रूप से उस कमांड के उपयोग को प्रतिबंधित करते हैं या इसे एक अलग तरीके से काम करने का कारण बनाते हैं, कुछ मदद हो सकती है। इसके विपरीत, यदि समस्या यह है कि आपके मित्र जानबूझकर आपके डेटा का उस तरह से इलाज कर रहे हैं जो आप नहीं चाहते हैं, तो आपको वास्तविक सुरक्षा उपायों को लागू करने की आवश्यकता है , और कोई समाधान जो rm
कमांड पर ही ध्यान केंद्रित करता है (या आदेशों का कोई असतत सेट) आपको सुरक्षित रखेगा।
क्या आपको पहुंच को नियंत्रित करने की आवश्यकता है, या सिर्फ ईमानदार गलतियों को रोकने के लिए?
अपने दोस्तों को यह मानते हुए कि आप नहीं चाहते कि वे आपकी फ़ाइलों को हटाएं, दो संभावनाएँ हैं:
वे इसे उद्देश्य पर कर सकते हैं। इस परिदृश्य में, आपके मित्र आपकी फ़ाइलों को जानबूझकर हटा रहे हैं, और आप उन पर भी अपनी इच्छा का पालन करने का प्रयास करने के लिए उन पर भरोसा नहीं कर सकते हैं कि वे आपके कंप्यूटर का उपयोग करते समय आपके डेटा के साथ कैसे व्यवहार करते हैं। इस समस्या का एकमात्र समाधान वास्तविक प्रभावी सुरक्षा उपाय का उपयोग करना है , जैसा कि थॉमस वार्ड ने विस्तार से बताया है । अक्सर इस तरह का सबसे अच्छा उपाय उन्हें अपने कंप्यूटर का उपयोग करने से रोकना है। लेकिन उन्हें अपने स्वयं के उपयोगकर्ता खातों का उपयोग करने से कुछ सुरक्षा मिल सकती है।
वे गलती से ऐसा कर सकते थे। इस परिदृश्य में, आपके मित्र अत्यंत दुर्घटना-ग्रस्त होते हैं, और वे rm
आज्ञाओं को चलाते रहते हैं, वे चाहते हैं कि वे नहीं थे। वे आपको और आपके डेटा को सम्मान के साथ व्यवहार करना चाहते हैं, लेकिन वास्तव में ऐसा करने में बुरा है क्योंकि वे गलत कमांड को चलाते रहते हैं, गलत फाइल को हटाते हैं ... या ऐसा कुछ। हालांकि यह मानना अच्छा होगा कि यह वही हो रहा है, मैं आपको यह मानने के खिलाफ आगाह करता हूं कि जो लोग आपके डेटा को हटाने के बाद उन्हें रोकते हैं वे बिना बीमार इच्छा के काम कर रहे हैं।
इसके अलावा, भले ही उनके इरादे अच्छे हों, उन्हें अलग-अलग उपयोगकर्ता खाते देना अभी भी आपकी फ़ाइलों को हटाने से रोकने का सबसे मूर्ख तरीका है, एक तरफ से उन्हें आपके कंप्यूटर का उपयोग करने की अनुमति नहीं है।
यदि स्थिति वास्तव में # 2 है - तो आपके मित्र आपकी फ़ाइलों को हटाने का प्रयास नहीं कर रहे हैं, लेकिन बस उन्हें गलती से हटाने में मदद की आवश्यकता नहीं है, और जिस तरह से वे कभी गलती से उन्हें हटाते हैं वह कम संख्या में आदेशों के अनजाने दुरुपयोग के माध्यम से होता है (जैसे rm
) उन्हें सही तरीके से उपयोग करने में विशेष परेशानी होती है - फिर वीडियोनौथ के उत्तर में तकनीक कुछ काम की हो सकती है। लेकिन आप को समझना चाहिए कि वे सुरक्षा उपायों, नहीं कर रहे हैं क्योंकि आदेश सिर्फ में से एक है कई नष्ट फ़ाइलों के लिए आसान तरीके । विवरण के लिए नीचे देखें।rm
मैं आपको अपने आप से पूछने की सलाह देता हूं, "क्या मेरी स्थिति मूल रूप से वैसी ही है जैसे कि मैं, अपने कंप्यूटर का उपयोग करने वाले अन्य लोगों के बजाय rm
गलत तरीके से उपयोग कर रहा था ?"
यदि जवाब नहीं है , तो यह सूचना सुरक्षा का मामला है, और आपको अपने दोस्तों को अपने उपयोगकर्ता खाते का उपयोग करने से रोकने की आवश्यकता है। यदि उत्तर हाँ है , तो आप उसी दृष्टिकोण का उपयोग कर सकते हैं जिसका आप उपयोग करेंगे यदि आप एक दुरुपयोग कर रहे थे rm
:
- शिक्षा। आपके मित्रों को यह जानना होगा कि वे क्या कर रहे हैं और इससे कैसे बचें।
- इंटरफ़ेस बदल जाता है। फ़ाइलों को हटाने की वास्तविक क्षमता (जिसे अलग-अलग उपयोगकर्ता खातों की आवश्यकता होती है) को हटाए बिना, आप फ़ाइलों को गलती से हटाने के लिए इसे कठिन बना सकते हैं ताकि यह केवल अपने आप से चल रहा हो, बिना किसी और कार्रवाई के, तुरंत नहीं हटाएगा । Videonauth का जवाब इस पर एक दृष्टिकोण देता है। इस जवाब में, मैं एक और पेश करता हूं।
rm file
file
लेकिन यहां तक कि अगर आपके दोस्त कुछ भी गलत करने की कोशिश नहीं कर रहे हैं, तब भी आपको उन्हें अपने अलग उपयोगकर्ता खातों का उपयोग करने पर विचार करना चाहिए । यह अभी भी समस्या को हल करेगा - वही सुरक्षा उपाय जो जानबूझकर विनाश से डेटा की रक्षा करते हैं, यह अनजाने में विनाश से भी रक्षा करेगा। दुर्भावनापूर्ण इरादे के बिना, अगर कोई ऐसा कुछ करता रहता है जिसे आप उन्हें नहीं करना चाहते हैं, तो आप उस चीज़ को करने से बचना नहीं कर सकते।
बनाने rm
से पहले हटाए जाने के कर सकते हैं मदद शीघ्र कुछ गलतियों को रोकने के।
लोगों के साथ गलती से फ़ाइलों को हटाने से बचने के लिए rm
, आप rm
एक शेल उपनाम बना सकते हैं जो वास्तव में चलता है rm -i
। प्रत्येक फ़ाइल को हटाने से पहले उपयोगकर्ता को संकेत -i
देने के लिए ध्वज को पास करना ।rm
man rm
आप alias rm='rm -i'
अपने .bash_aliases
या .bashrc
फ़ाइल में जोड़कर (अपने उपयोगकर्ता खाते के लिए) ऐसा कर सकते हैं । देखें इस सवाल और है कि एक जानकारी के लिए। यह आपके नए खुले बैश गोले के लिए प्रभावी होगा।
यह कोई वास्तविक सुरक्षा प्रदान नहीं करता है , और गलतियों को रोकने में मूर्ख नहीं है, क्योंकि:
- संकेत मिलने पर वे विलोपन के साथ आगे बढ़ सकते हैं।
- वे कई तरीकों से उर्फ को बायपास कर सकते हैं, जिसमें इसे चलाना
/bin/rm
या इसे खोलना भी शामिल है ( unalias rm
)।
- ऐसी कई परिस्थितियाँ हैं जहाँ उपनाम का विस्तार नहीं होता है , और इन स्थितियों में
rm
साथ नहीं चलाया जाएगा -i
।
- वे अभी भी किसी भी तकनीक का उपयोग करके फ़ाइलों को हटा सकते हैं ताकि आवश्यकता न हो
rm
(जैसा कि वीडियोनौथ के दृष्टिकोण के साथ है - नीचे देखें)।
- वे अभी भी किसी भी फाइल को हटाने के बिना डेटा को नुकसान पहुंचा सकते हैं, जैसे कि उन्हें ओवरराइट करके या अन्यथा उनकी सामग्री को बदलना (जैसा कि वीडियोनौथ के दृष्टिकोण के साथ भी है)।
लेकिन अगर आपको वास्तविक सुरक्षा की आवश्यकता नहीं है (ऊपर देखें), तो यह जाने का रास्ता हो सकता है। अपने मित्रों को सिस्टम-प्रदत्त rm
कमांड का उपयोग करने से रोकने के दृष्टिकोण की तुलना करके :
अलियासिंग rm
को rm -i
गलतियों को रोकने में कम प्रभावी है - जब तक वे कुछ अन्य तकनीक का उपयोग कर फ़ाइलें निकालने के लिए पर आगे बढ़ें। उस बिंदु पर, उन्हें उपयोग करने से rm
रोकना पूरी तरह से अप्रभावी होगा, भले ही वे कुछ भी गलत करने की कोशिश न कर रहे हों, क्योंकि संभवतः वे unlink
समान विचारधारा के साथ उपयोग करेंगे (या किसी अन्य अनगिनत कमांड जो फ़ाइल को हटाते हैं)।
दूसरी ओर, क्योंकि उपनाम का विस्तार केवल कुछ स्थितियों में होता है - मोटे तौर पर बोलना, शेल का साधारण संवादात्मक उपयोग - आपके मित्र यह सोच सकते हैं कि जब उन्हें वास्तव में संकेत नहीं दिया जाएगा, तो उन्हें संकेत दिया जाएगा। एक स्क्रिप्ट, उदाहरण के लिए, या एक अलग शेल से जारी)। वीडियोनौथ के रास्ते में यह समस्या नहीं है, जो कि उस पद्धति का एक उद्देश्यपूर्ण लाभ है alias rm='rm -i'
।
जब कोई स्क्रिप्ट चलती है, जब तक कि यह जानबूझकर उपनाम का उपयोग करने के लिए नहीं लिखी जाती है, तो आपके उपनाम का इसमें विस्तार नहीं किया जाता है। इसका मतलब है कि aliasing rm
करने के लिए rm -i
बहुत कुछ भी तोड़ने की संभावना नहीं है। यह एक उद्देश्य लाभ है alias rm='rm -i'
।
rm
कुछ भी नहीं कर सकते किसी भी अन्य पूरी तरह से साधारण कार्यक्रम नहीं कर सकता।
वहाँ वास्तव में कुछ खास नहीं है rm
। यह फ़ाइलों को हटाने के लिए एक सुविधाजनक और स्व-दस्तावेजी तरीका है, इसलिए इस तक पहुंच को सीमित करना कई लिपियों को तोड़ता है जो इस पर भरोसा करते हैं। लेकिन यह फ़ाइलों को हटाने के एकमात्र तरीके से बहुत दूर है - यह सिर्फ एक साधारण कार्यक्रम है।
कुछ कमांड कुछ कार्य करते हैं जिन्हें एक सीमित (गैर- रूट ) उपयोगकर्ता बिना चलाए नहीं कर सकता है। उदाहरण के लिए, sudo
आपको यह सुनिश्चित करने के लिए जाँच करने के बाद कि आप ऐसा करने के लिए एक और उपयोगकर्ता के रूप में कार्यक्रम चला सकते हैं। passwd
उस डेटाबेस को संपादित करता है जहां उपयोगकर्ताओं के पासवर्ड संग्रहीत किए जाते हैं, लेकिन केवल आपको अपना पासवर्ड बदलने की अनुमति देता है (जब तक आप रूट नहीं होते हैं, उस स्थिति में आप किसी के पासवर्ड को बदल सकते हैं)।
/usr/bin/sudo
और /usr/bin/passwd
ऐसा कर सकते हैं क्योंकि उनके पास सेट बिट बिट सेट है, जैसा कि आपके द्वारा s
चलाए जाने पर सबसे बाएं कॉलम में दिखाई देता है ls -l
:
ek@Io:~$ type -a sudo passwd rm
sudo is /usr/bin/sudo
passwd is /usr/bin/passwd
rm is /bin/rm
ek@Io:~$ ls -l /usr/bin/sudo /usr/bin/passwd /bin/rm
-rwxr-xr-x 1 root root 60272 Feb 18 2016 /bin/rm
-rwsr-xr-x 1 root root 54256 Mar 29 2016 /usr/bin/passwd
-rwsr-xr-x 1 root root 136808 Aug 17 09:20 /usr/bin/sudo
ध्यान दें कि /bin/rm
इसकी कोई s
अनुमति नहीं है -rwxr-xr-x
, जबकि इसकी अनुमति है , जबकि /usr/bin/passwd
और /usr/bin/so
इसके -rwsr-xr-x
बजाय है। यह ऐसा बनाता है कि, कोई फर्क नहीं पड़ता कि कौन चलाता है passwd
या sudo
, यह वास्तव में रूट उपयोगकर्ता के रूप में चलता है, क्योंकि रूट निष्पादन योग्य का मालिक है। (सेटगिड बिट भी है, जो सेट करते समय, निष्पादनकर्ता को कॉल करने वाले के बजाय अपने समूह के मालिक की समूह पहचान के साथ चलने का कारण बनता है।)
किसी भी सुरक्षा कमजोरियों को छोड़कर जो अभी तक खोज नहीं की गई है (या जिन्हें खोजा गया है लेकिन अभी तक पैच नहीं किया गया है), sudo
और passwd
सुरक्षित हैं क्योंकि उन उपयोगिताओं को बहुत सावधानी से लिखा गया है, इसलिए वे केवल उन चीजों को कर सकते हैं जिन्हें कॉल करने की अनुमति होनी चाहिए करने के लिए।
/bin/rm
इस तरह से काम नहीं करता है। यह तय नहीं है क्योंकि इसे होने की आवश्यकता नहीं है। निर्देशिका अनुमतियाँ (और कभी-कभी फ़ाइल अनुमतियाँ ) नियंत्रित करती हैं कि उपयोगकर्ता कौन सी फ़ाइलें हटा सकता है, और उन्हें इसे करने के लिए रूट बनने की आवश्यकता नहीं है। बस पूरी तरह से स्पष्ट होने के लिए, कृपया कभी भी सेट्युड बिट पर सेट न करेंrm
। सुरक्षा निहितार्थ विनाशकारी होगा, तब से, कोई फर्क नहीं पड़ता कि कौन चलाता है rm
, यह ऐसा है जैसे रूट ने इसे चलाया! (उपयोगिताएँ जैसे sudo
और जाँचती हैं कि passwd
वास्तव में कौन उन्हें चला रहा है और जाँचता है कि कुछ करने से पहले अनुमति दी गई है; rm
ऐसी कोई बात नहीं है।)
अगर एक निष्पादक पर सेट्युड (या सेटगिड) बिट सेट है, तो यह जाँचना कि आपको यह पता चलेगा कि कौन इसे प्रतिबंधित कर सकता है, सुरक्षा में सुधार का मौका देता है। ऐसे निष्पादनकर्ता जो सेटिउड (या सेटगिड) नहीं हैं, उनके पास कोई विशेष स्थिति नहीं है, और कोई भी बस उन्हें कॉपी कर सकता है और कॉपी चला सकता है, दूसरी मशीन से अपनी कॉपी ला सकता है, एक स्क्रिप्ट या प्रोग्राम लिख सकता है जो समान काम करता है, या उपयोग करता है। इसे करने के लिए एक और कार्यक्रम।
बिना फाइल्स डिलीट करना rm
rm
उबंटू में बिना फ़ाइल को हटाने का स्पष्ट तरीका ग्राफ़िकल फ़ाइल ब्राउज़र (Nautilus, यदि आप यूनिटी या GNOME शेल का उपयोग कर रहे हैं) में अपने स्थान पर नेविगेट करना और फ़ाइल को हटाना है। कई कमांड्स भी हैं जिनका उपयोग टर्मिनल से किसी फ़ाइल को हटाने के लिए किया जा सकता है, बिना उपयोग किए rm
।
उदाहरण के लिए, foo.txt
वर्तमान निर्देशिका में नामक एक फ़ाइल को हटाने के लिए, निम्न आदेश, जो उबंटू पर आउट-ऑफ-द-बॉक्स काम करते हैं और इसे एक्सेस करने की आवश्यकता नहीं है rm
, वह प्राप्त करेगा। (बस सुनिश्चित करने के लिए, मैंने उन्हें 16.04 न्यूनतम सिस्टम पर परीक्षण किया, जो केवल मानक सिस्टम उपयोगिताओं के साथ स्थापित किया गया, हटाने के बाद /bin/rm
)।
unlink foo.txt
busybox rm foo.txt
perl -e 'unlink("foo.txt")'
python3 -c 'import os; os.remove("foo.txt")'
( पुराने रिलीज के python
बजाय python3
)
यह सूची, ज़ाहिर है, पूरी तरह से कहीं नहीं है। ऐसे आदेशों की पूरी सूची संभव नहीं है। फ़ाइल हटाने को रोकना अलग-अलग उपयोगकर्ता खातों और फ़ाइल और निर्देशिका अनुमतियों को प्राप्त करने के लिए मौजूद चीजों में से एक है। वे इसे रोकने के लिए बहुत अच्छी तरह से काम करते हैं। इसके विपरीत, rm
कमांड को बदलना (इसे पासवर्ड, या किसी अन्य तरीके से बनाने की आवश्यकता है) या rm
इसे रोकने के लिए पहुंच को प्रतिबंधित न करना।