मैं 'rm' कमांड के लिए पासवर्ड कैसे सेट कर सकता हूं?


29

मेरे दोस्त टर्मिनल का उपयोग करके मेरी फ़ाइलों को हटाते रहते हैं। तो कृपया मुझे समझाएं कि rmकमांड के लिए पासवर्ड कैसे बनाया जाए ।


50
आप उपयोगकर्ता खाते की रक्षा करने के लिए पासवर्ड चाहते हैं, इसलिए "मित्र" इसे पहली जगह पर एक्सेस नहीं करते हैं।
एंड्रिया लज्जाज़ारो

14
आपको वास्तव में यह जानने की कोशिश करनी चाहिए कि सिस्टम कैसे काम करता है और इसकी कार्यक्षमता का उपयोग करता है।
एलेक्सपी

13
यह संभावना है कि आपके मित्र आपके कंप्यूटर से बाहर निकलते समय, उसे बिना सोचे-समझे खराब करके "आपको सबक सिखाने" का प्रयास कर रहे हों। अपने खाते की सुरक्षा और अतिथि पहुंच को रोककर या कम अनुमतियों के साथ अतिथि पहुंच प्रदान करके उस सबक को जानें।
केन विलियम्स 15

4
कृपया unlinkकमांड के बारे में भी याद रखें । इसके अलावा mvकमांड के बारे में , क्योंकि आप इसके साथ फ़ाइलों को प्रभावी रूप से अधिलेखित कर सकते हैं। इसके अलावा ...
कोस

17
इन जैसे दोस्त हों, तो किसे दुश्मनों की ज़रूरत है?
कैस्परल्ड

जवाबों:


46

इस तरह के पासवर्ड को rmकमांड पर स्थापित करने का कोई आसान तरीका नहीं है, बिना बहुत सारे कोड हैकिंग के, जो शायद apt-getपैकेज को स्थापित करने और फ़ाइलों को हटाने जैसी चीजों को तोड़ देगा , और आपको एक हजार बार पासवर्ड दर्ज करना होगा, या संभावित रूप से बाधित करना होगा। उन लोगों तक कमांड की पहुंच, जिन्हें इसकी आवश्यकता होगी (जैसे आप, अपनी खुद की फ़ाइलों को हटाने के लिए)। आप एक से अधिक उपयोगकर्ता खाते और कई एक्सेस अनुमति सेट, और डेटा के विभिन्न वर्गों तक पहुंच को सीमित करके ऐसा कर सकते हैं, जैसे कि वे इसे प्राप्त नहीं कर सकते।

(अन्य विकल्प प्रत्येक उपयोगकर्ताओं के लिए अलग-अलग उपयोगकर्ता खाते हैं, और फिर एक्सेस कंट्रोल लिस्ट, जैसा कि विदेहुथ द्वारा पोस्ट किए गए अन्य उत्तर में विस्तृत है )

यहां मूल समस्या है - आप अपने दोस्तों को अपने सिस्टम का उपयोग करने दे रहे हैं। इसके कई सुरक्षा निहितार्थ हैं - "बॉक्स तक भौतिक पहुंच वाले किसी भी व्यक्ति की अवधारणा प्रणाली को नियंत्रित करने और किसी भी कार्य को करने में सक्षम होने जा रही है" एक आईटी सुरक्षा मंत्र है, यही कारण है कि आप भौतिक प्रणालियों तक 'साझा' नहीं करते हैं सिवाय विश्वसनीय अधिकृत कर्मियों के।


ऐसा करने का एकमात्र सही तरीका यह है कि आप अपने दोस्तों को अपने कंप्यूटर तक पहुंच न दें , और उन्हें एक 'समर्पित "अतिथि" सिस्टम "दें जिसका वे उपयोग कर सकते हैं, कि आप वास्तव में फाइलों पर उतना ध्यान नहीं देते हैं। यह आपकी फ़ाइलों को सुरक्षित रखने का सबसे 'सुरक्षित' तरीका है।


बेशक, अगर यह एक विकल्प नहीं है, तो आपका एकमात्र सुरक्षित विकल्प कई उपयोगकर्ता खातों को कॉन्फ़िगर करना है, प्रत्येक उपयोगकर्ता के लिए, अलग-अलग होम फ़ोल्डर्स के साथ, और उन्हें अपने स्वयं के होम डायरेक्टरी या किसी अन्य उपयोगकर्ता के घर तक पहुंचने की अनुमति न दें। निर्देशिका। और फिर वह सब कुछ रखें जो आप उन्हें अपने घर निर्देशिका में छूना नहीं चाहते हैं, और उन्हें sudoएक्सेस, rootपासवर्ड या उनके साथ अपना पासवर्ड साझा न करें।

ऐसा आप कैसे करेंगे:

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

chmod 750 /home/Foo

दूसरा चरण "बार" के लिए एक उपयोगकर्ता खाता बनाना है (नीचे दिए गए कोष्ठक में ऐसा न लिखें, यह केवल सूचना के उद्देश्य से है)। इस तरह, हम यह सुनिश्चित कर सकते हैं कि उसके पास अभिगम अधिकारों का अपना अलग सेट हो:

sudo adduser --create-home --user-group --shell /bin/bash Bar
sudo passwd Bar
(set a temporary password - you will not see characters as you type though)

तीसरा कदम तो भी उनके घर निर्देशिका प्रतिबंधित करने के लिए इसलिए कोई भी उनकी फाइलों में या तो जिज्ञासा कर सकते हैं है। यह सिर्फ चीजों को समान बना रहा है।

sudo chmod 750 /home/Bar

अपने हाथों को धो लें, उन्हें अच्छी तरह से कुल्ला, फिर सिस्टम पर आपके पास कई उपयोगकर्ताओं के लिए इन चरणों को दोहराएं। वे आपकी फ़ाइलों तक पहुँचने में सक्षम नहीं होंगे, और जब से आप उन्हें व्यवस्थापक विशेषाधिकार नहीं देने जा रहे हैं, वे sudoऐसा करने का प्रयास किए बिना आपकी फ़ाइलों को हटा नहीं सकते हैं - चूंकि आप इसकी अनुमति नहीं देते हैं, इसलिए वे नहीं कर सकते अपना सामान स्पर्श करें। और वे सुपरसुसर बने बिना आपकी फ़ाइलों को नहीं देख पाएंगे, जो यहां नहीं होगा।


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


बस डिस्क एन्क्रिप्शन पर एक नोट

जबकि डिस्क एन्क्रिप्शन आपके डेटा को तीसरे पक्ष से बचाने के लिए अच्छी तरह से काम करता है, इसकी सीमाएँ हैं।

  1. यदि सिस्टम चालू है, तो डिस्क पहले से ही डिक्रिप्टेड है, इसलिए आप जोखिम में हैं।
  2. कुछ प्रणालियों ने डिस्क एन्क्रिप्शन दृष्टिकोणों को तोड़ दिया है । उदाहरण के लिए, कुछ एसर सिस्टम आपके पासवर्ड का उपयोग केवल एन्क्रिप्शन / डिक्रिप्शन को अधिकृत करने के लिए करते हैं और हार्ड-कोडेड पासवर्ड का उपयोग करते हैं, या कमजोर एन्क्रिप्शन का उपयोग करते हैं जो आसानी से टूट जाता है।
  3. हमेशा 'कीज़' में सेंध लगाने के तरीके होते हैं, या किसी सिस्टम के बंद हो जाने के बाद उन्हें मेमोरी से निकालने की कोशिश की जाती है, लेकिन इससे पहले कि रैम डेटा 'चला गया' या खराब हो जाए। (मैं इन पर गहराई में जाना होगा नहीं, लेकिन इन जोखिमों करना मौजूद हैं)।
  4. मशीन तक भौतिक पहुंच, चाहे सिस्टम एन्क्रिप्ट किया गया हो या नहीं, हमेशा आपके डेटा को जोखिम में डालेगा। जिन लोगों को आप संभावित रूप से अपने सिस्टम की पूर्ण पहुँच नहीं देना चाहते, उन्हें भौतिक पहुँच (या दूरस्थ नेटवर्क एक्सेस) न दें।

जबकि डिस्क एन्क्रिप्शन इन समस्याओं को हल नहीं करता है, यह एक खतरे अभिनेता के लिए सिरदर्द की अतिरिक्त परतें डालता है। कोई व्यक्ति जो एक बुरा आदमी है, अगर यह एन्क्रिप्टेड है, तो वे छोड़ सकते हैं या वे आपको (कतार अनिवार्य XKCD सुरक्षा कॉमिक स्ट्रिप ) यातना दे सकते हैं ।

इसलिए, यदि आपका सिस्टम एन्क्रिप्ट किया गया है, लेकिन आप अन्य उपयोगकर्ताओं को इसका उपयोग करने दे रहे हैं, या तो उनके पास डिक्रिप्ट करने के लिए एक पासवर्ड है, या आप अपने लैपटॉप को डिक्रिप्टेड छोड़ रहे हैं, ताकि वे एसएसएच में प्रवेश कर सकें या भौतिक पहुंच प्राप्त कर सकें। इन दोनों मामलों में, यह बुरा है।

उस ने कहा, यदि आपका सिस्टम एन्क्रिप्ट नहीं किया गया है, तो इस सेक्शन की आपके लिए कोई प्रासंगिकता नहीं है।


मेरे लैपटॉप में एक एन्क्रिप्टेड हार्ड ड्राइव है। क्या दूसरों को अभी भी जोखिम लेने की अनुमति है?
टिम

2
@ समय पर हाँ, यदि सिस्टम चालू और डिक्रिप्टेड है। और यहां तक ​​कि जब यह बंद हो जाता है, तो यह अभी भी सही तकनीक, समय और समर्पण कुंजी खोजने के लिए संभव है, जो अभी भी रैम में संग्रहीत है। डिस्क एन्क्रिप्शन है नहीं 100% सुरक्षा - वहाँ उसके चारों ओर तरीके है, यह अधिक का सवाल "बुरा आदमी तैयार है वाकई वहां इतना समय और प्रयास डाल करने के लिए है।" और ओपी के प्रश्न को देखते हुए, उनकी प्रणाली चालू है और एन्क्रिप्टेड (पूरी तरह से, या आंशिक रूप से) नहीं है, इसलिए हटाने का जोखिम है।
थॉमस वार्ड

3
@ थॉमस के उत्तर में जोड़ने के लिए, कुछ लैपटॉप में डिस्क एन्क्रिप्शन कार्यान्वयन टूट गया है (यदि आप हार्डवेयर FDE पर निर्भर हैं)। AFAIR एसर लैपटॉप वास्तव में एन्क्रिप्शन के लिए आपके पासवर्ड का उपयोग नहीं करते हैं, वे इसे केवल हार्डकोड किए गए पासवर्ड के साथ एन्क्रिप्ट / डिक्रिप्ट करने के लिए अधिकृत करते हैं।
gronostaj

डेटा हमेशा जोखिम में होता है अगर अविश्वास करने वाले व्यक्ति की किसी प्रणाली तक पहुंच हो, एन्क्रिप्ट किया गया हो या नहीं
सर्जियो कोलोडियाज़नी

1
@LightnessRacesinOrbit apt-getचलता हैdpkg , जो अक्सर स्क्रिप्ट का उपयोग करता है rm। मेरे क्ज़ेनियल बॉक्स पर, cd /var/lib/dpkg/info; grep -P '\brm\b' *inst344 लाइनें आउटपुट होती हैं , जिनमें से 333 rmकमांड के वास्तविक उपयोग की तरह दिखती हैं - सिर्फ इंस्टॉलेशन स्क्रिप्ट में। grep -P '\brm\b' *rmस्क्रिप्ट हटाने में और भी अधिक दिखाता है (कॉन्फिग फाइल हटाने के लिए, पैकेज फाइल्स नहीं)।
एलिया कगन

19

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

क्या आपको पहुंच को नियंत्रित करने की आवश्यकता है, या सिर्फ ईमानदार गलतियों को रोकने के लिए?

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

  1. वे इसे उद्देश्य पर कर सकते हैं। इस परिदृश्य में, आपके मित्र आपकी फ़ाइलों को जानबूझकर हटा रहे हैं, और आप उन पर भी अपनी इच्छा का पालन करने का प्रयास करने के लिए उन पर भरोसा नहीं कर सकते हैं कि वे आपके कंप्यूटर का उपयोग करते समय आपके डेटा के साथ कैसे व्यवहार करते हैं। इस समस्या का एकमात्र समाधान वास्तविक प्रभावी सुरक्षा उपाय का उपयोग करना है , जैसा कि थॉमस वार्ड ने विस्तार से बताया है । अक्सर इस तरह का सबसे अच्छा उपाय उन्हें अपने कंप्यूटर का उपयोग करने से रोकना है। लेकिन उन्हें अपने स्वयं के उपयोगकर्ता खातों का उपयोग करने से कुछ सुरक्षा मिल सकती है।

  2. वे गलती से ऐसा कर सकते थे। इस परिदृश्य में, आपके मित्र अत्यंत दुर्घटना-ग्रस्त होते हैं, और वे rmआज्ञाओं को चलाते रहते हैं, वे चाहते हैं कि वे नहीं थे। वे आपको और आपके डेटा को सम्मान के साथ व्यवहार करना चाहते हैं, लेकिन वास्तव में ऐसा करने में बुरा है क्योंकि वे गलत कमांड को चलाते रहते हैं, गलत फाइल को हटाते हैं ... या ऐसा कुछ। हालांकि यह मानना ​​अच्छा होगा कि यह वही हो रहा है, मैं आपको यह मानने के खिलाफ आगाह करता हूं कि जो लोग आपके डेटा को हटाने के बाद उन्हें रोकते हैं वे बिना बीमार इच्छा के काम कर रहे हैं।

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

यदि स्थिति वास्तव में # 2 है - तो आपके मित्र आपकी फ़ाइलों को हटाने का प्रयास नहीं कर रहे हैं, लेकिन बस उन्हें गलती से हटाने में मदद की आवश्यकता नहीं है, और जिस तरह से वे कभी गलती से उन्हें हटाते हैं वह कम संख्या में आदेशों के अनजाने दुरुपयोग के माध्यम से होता है (जैसे rm) उन्हें सही तरीके से उपयोग करने में विशेष परेशानी होती है - फिर वीडियोनौथ के उत्तर में तकनीक कुछ काम की हो सकती है। लेकिन आप को समझना चाहिए कि वे सुरक्षा उपायों, नहीं कर रहे हैं क्योंकि आदेश सिर्फ में से एक है कई नष्ट फ़ाइलों के लिए आसान तरीके । विवरण के लिए नीचे देखें।rm

मैं आपको अपने आप से पूछने की सलाह देता हूं, "क्या मेरी स्थिति मूल रूप से वैसी ही है जैसे कि मैं, अपने कंप्यूटर का उपयोग करने वाले अन्य लोगों के बजाय rmगलत तरीके से उपयोग कर रहा था ?"

यदि जवाब नहीं है , तो यह सूचना सुरक्षा का मामला है, और आपको अपने दोस्तों को अपने उपयोगकर्ता खाते का उपयोग करने से रोकने की आवश्यकता है। यदि उत्तर हाँ है , तो आप उसी दृष्टिकोण का उपयोग कर सकते हैं जिसका आप उपयोग करेंगे यदि आप एक दुरुपयोग कर रहे थे rm:

  • शिक्षा। आपके मित्रों को यह जानना होगा कि वे क्या कर रहे हैं और इससे कैसे बचें।
  • इंटरफ़ेस बदल जाता है। फ़ाइलों को हटाने की वास्तविक क्षमता (जिसे अलग-अलग उपयोगकर्ता खातों की आवश्यकता होती है) को हटाए बिना, आप फ़ाइलों को गलती से हटाने के लिए इसे कठिन बना सकते हैं ताकि यह केवल अपने आप से चल रहा हो, बिना किसी और कार्रवाई के, तुरंत नहीं हटाएगा । Videonauth का जवाब इस पर एक दृष्टिकोण देता है। इस जवाब में, मैं एक और पेश करता हूं।rm filefile

लेकिन यहां तक ​​कि अगर आपके दोस्त कुछ भी गलत करने की कोशिश नहीं कर रहे हैं, तब भी आपको उन्हें अपने अलग उपयोगकर्ता खातों का उपयोग करने पर विचार करना चाहिए । यह अभी भी समस्या को हल करेगा - वही सुरक्षा उपाय जो जानबूझकर विनाश से डेटा की रक्षा करते हैं, यह अनजाने में विनाश से भी रक्षा करेगा। दुर्भावनापूर्ण इरादे के बिना, अगर कोई ऐसा कुछ करता रहता है जिसे आप उन्हें नहीं करना चाहते हैं, तो आप उस चीज़ को करने से बचना नहीं कर सकते।

बनाने rmसे पहले हटाए जाने के कर सकते हैं मदद शीघ्र कुछ गलतियों को रोकने के।

लोगों के साथ गलती से फ़ाइलों को हटाने से बचने के लिए rm, आप rmएक शेल उपनाम बना सकते हैं जो वास्तव में चलता है rm -i। प्रत्येक फ़ाइल को हटाने से पहले उपयोगकर्ता को संकेत -iदेने के लिए ध्वज को पास करना ।rmman 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इसे रोकने के लिए पहुंच को प्रतिबंधित न करना।


2
वास्तविक उपयोग के लिए, मुझे GNU rmका -Iविकल्प पसंद है। यह केवल 4 या अधिक फ़ाइलों को हटाने, या पुनरावर्ती हटाने के लिए संकेत देता है। तो आप हमेशा का उपयोग करने की आदत में नहीं है -f, \rmउपनाम विस्तार से बचने के लिए, या yपढ़ने के बिना टाइपिंग । लेकिन यह अभी भी आपको खराब टाइपोस से बचाएगा, जहां आप लौटने से पहले हिट करते थे, या आपका ग्लोब कई फाइलों से मेल खाता था।
पीटर कॉर्डेस

2
फ़ाइलों को अनलिंक करने का एक और दिलचस्प तरीका है: mv foo.txt /tmp/.goneफिर रिबूट करें, बैकिंग करने वाले tmpfs को छोड़ना /tmp। या केवल mvएक ही नाम के लिए सभी फ़ाइलों का नाम बदलने के लिए उपयोग करें, इसलिए केवल अंतिम एक बचा है। या केवल अस्पष्ट नामों के साथ नाम बदलकर फ़ाइलों को छिपाएं। जैसा कि इस उत्तर के पहले भाग में बताया गया है, अगर आप अक्षमता के बजाय द्वेष से बचाव करने की कोशिश कर रहे हैं, तो आपको अपने खाते से लोगों को बाहर निकालने की जरूरत है।
पीटर कॉर्डेस

16

आप /bin/rmनिम्न लाइन के माध्यम से कमांड पर अनुमतियों को बदल सकते हैं जो इसे सूडो एक्सेस के बिना निष्पादित करने से रोकेगा:

sudo chmod 750 /bin/rm

यह विशेष रूप से rmसिस्टम द्वारा प्रदान की गई कमांड का उपयोग करने से रोकता है। आपको पता होना चाहिए कि यह उन्हें अन्य तरीकों से फ़ाइलों को हटाने से नहीं रोकता है।

उन्हें rmdirकमांड का उपयोग करने से रोकने के लिए , जो निर्देशिकाओं को हटाने का एक सामान्य तरीका है, आप इसकी निष्पादन योग्य पथ पर उसी तरह अनुमतियाँ सेट कर सकते हैं:

sudo chmod 750 /bin/rmdir

याद दिलाएं कि आप इस आदेश का उपयोग केवल सूडो अधिकारों के साथ भी कर सकते हैं।

यदि आप इसे पसंद नहीं करते हैं या अन्य समस्याओं का उपयोग करने के लिए इसे वापस बदलने के 755लिएchmod


जैसा कि @muru ने बताया कि उपरोक्त एक बहुत ही क्रूड सॉल्यूशन है और सिस्टम सेवाओं को तोड़ भी सकता है जो रूट अकाउंट पर नहीं चल रही हैं । इसलिए मैं ऐसा करने के लिए ACL (एक्सेस कंट्रोल लिस्ट) का उपयोग करके एक और विकल्प जोड़ता हूं और संभवत: अधिक सुरक्षित ( साथ ही साथ पढ़ने में अच्छा है और आप सक्षम करने वाले हिस्से को छोड़ सकते हैं क्योंकि आजकल ACL उबंटू सिस्टम पर स्थापित है):

तो आप जिन यूजर्स को ब्लॉक करना चाहते हैं, उनके लिए ऊपर से वैसा ही करना है

sudo setfacl -m u:<user-name>:- /bin/rm /bin/rmdir

बस <user-name>उन वास्तविक उपयोगकर्ता नामों से प्रतिस्थापित करें जिन्हें आप फ़ाइलों का उपयोग करने से रोकना चाहते हैं।

के रूप में chmod, setfacl -mविशिष्ट उपयोगकर्ताओं को चलाने से रोकने के लिए उपयोग कर रहा है rmऔर rmdirकेवल उन सिस्टम-प्रदत्त आदेशों पर लागू होता है। यह उन्हें आपकी फ़ाइलों और फ़ोल्डरों को Nautilus में या अन्य टर्मिनल कमांड का उपयोग करने से नहीं रोकता है।

स्पष्टीकरण:

  • -mझंडा फ़ाइलों एसीएल को संशोधित करने का मतलब है।
  • परिवर्तन का पहला भाग, uउपयोगकर्ता के लिए खड़ा है। इसमें uउपयोगकर्ता के लिए, gसमूह के लिए और oअन्य सभी के लिए निम्न मान हो सकते हैं
  • मध्य भाग <user-name>वास्तविक उपयोगकर्ता नाम या समूह का नाम जो आप बदलना चाहते हैं, के अनुसार होल कर सकते हैं। समग्र परिवर्तन सेट करने के लिए आप इसे खाली छोड़ देते हैं।
  • तीसरा भाग उस तरह की अनुमतियाँ रखता है जिन्हें आप सेट करना चाहते हैं। यहाँ उदाहरण में हम कोई भी अनुमतियाँ सेट नहीं करना चाहते हैं -, इसलिए हम इसमें rअनुमतियों wको लिखने की अनुमति और xनिष्पादन के लिए निम्नलिखित पत्र शामिल कर सकते हैं ।

4
एसीएल का उपयोग करने से बेहतर होगा कि आप दूसरों के लिए निष्पादन की अनुमति को हटा दें - कोई भी सिस्टम सेवा जो रूट के रूप में नहीं चलती है अब विकलांग है।
मूरू

2
sudo setfacl -m u:<username>:- /bin/rm /bin/rmdir, IIRC। आप ACL कोgetfacl /bin/rm /bin/rmdir
muru

2
इस तरह के ACLs के लिए केवल नकारात्मक पक्ष यह है कि इन दीर्घकालिक को बनाए रखने के लिए यह बुराई / मुश्किल है। और अगर सिस्टम का उपयोग करने वाले प्रत्येक व्यक्ति के लिए सिस्टम पर अलग-अलग उपयोगकर्ता नहीं हैं, तो इसे बनाए रखना असंभव है। अन्यथा, यह एक अच्छा विचार है।
थॉमस वार्ड

4
@DavidFoerster हां। बिना फ़ाइलों को हटाने के एक प्रभावी असीमित संख्या तरीके हैं rm। Videonauth ने जो समाधान दिया है वह दुर्घटना-संभावित उपयोगकर्ताओं को सामान हटाने से रोकने में मदद करने का एक संभावित तरीका है, लेकिन यह कोई वास्तविक सुरक्षा प्रदान नहीं करता है (जो ठीक हो सकता है, अगर ओपी के मित्र जानबूझकर ओपी की इच्छाओं को पलटने की कोशिश नहीं कर रहे हैं) । Videonauth: मैं इस पोस्ट को संपादित करने का सुझाव देता हूं ताकि यह स्पष्ट रूप से स्पष्ट हो जाए कि यह वास्तव में फ़ाइलों को हटाने से लोगों को नहीं रोकता है क्योंकि उन्हें ऐसा करने के लिए rmआदेश की आवश्यकता नहीं है । (यदि आप ऐसा नहीं कहना चाहते हैं, तो मैं इसे स्वयं संपादित करने से बच रहा हूँ।)
एलियाह कगन

1
यह मत भूलो कि पर्ल, पायथन और सिस्टम के सभी कंपाइलर अन्य उपयोगकर्ताओं को फाइलें हटाने की अनुमति देते हैं। फ़ाइलों को हटाने से लोगों को रोकना rmकमांड पर अनुमतियों को बदलने की तुलना में अधिक आवश्यक है ।
जोनाथन लेफ़लर

8

यह एक बहुत ही सरल उत्तर है और बिना पासवर्ड दिए किसी को rm कमांड का उपयोग करने से रोक देगा। यह एक सुरक्षित समाधान नहीं है और आपको दूसरे उत्तरों में कुछ वैकल्पिक सुझावों का मतलब निकालना चाहिए।

हालाँकि, आप rm कमांड के व्यवहार के तरीके को बदलने के लिए अन्य का उपयोग कर सकते हैं। प्रयत्न:

alias rm="sudo -l >/dev/null && rm"

यह क्या करता है जब कोई rm कमांड में प्रवेश करता है, यह sudo -l कमांड चलाता है। यह कमांड उपयोगकर्ता को अपना पासवर्ड दर्ज करने के लिए मजबूर करता है। यदि वे इसे सही पाते हैं, तो यह उनके विशेषाधिकारों को सूचीबद्ध करता है (हम इस आउटपुट को छोड़ देते हैं) और स्थिति 0 से बाहर निकलते हैं, यदि वे इसे गलत पाते हैं, तो यह एक त्रुटि के साथ मौजूद है।

हम फिर एक "&&" के साथ sudo कमांड का पालन करते हैं, जो निम्नलिखित कमांड को बाहर करता है - इस मामले में "rm" केवल तभी यदि पिछली कमांड 0 की स्थिति से बाहर निकलती है - अर्थात उन्हें पासवर्ड सही मिला है।

इसे स्थायी करने के लिए, अन्य उपनाम आदेश को शामिल करें ~/.bashrc

ध्यान दें कि यह बहुत आसानी से पराजित है (उदाहरण के लिए, वे बस टाइप कर सकते हैं /bin/rm


5

कभी-कभी यह हमारे दोस्त नहीं हैं, हम अपने सबसे बुरे दुश्मन हैं

मैंने rmओपी के अनुरोध की तरह पासवर्ड प्रोटेक्ट करने के लिए एक स्क्रिप्ट लिखी है लेकिन आपको गलती से हटाने से रोकने के लिए संपादन में डाल दिया है:

  • /
  • /होम
  • / bin

संपादित करें: मार्च 5 2017 - टर्मिनल में चल रहा है, तो जाँच का तरीका बदलें।


स्क्रिप्ट बनाएं

gksu gedit /usr/local/bin/rmइन पंक्तियों में उपयोग और प्रतिलिपि बनाएँ:

#!/bin/bash

tty -s;
if [ "0" == "$?" ]; then Terminal="Y"; else Terminal="N"; fi

if [ $Terminal == "Y" ] ; then
    # Running from terminal don't allow delete of / or /toplevel directory even if sudo
    for i in ${@:1}
    do
        # Skip options -i -r -v -d 
        if [[ ${i:0:1} != "-" ]] ; then
            # if parameter doesn't begin with '-' it's file or directory, so get real path.
            fullname=$(realpath "$i" 2>&1) # No error messages if file doens't exist
            # We must have at least two `/` in the full path
            levels=$(echo "$fullname" | tr -cd '/' | wc -c)
            if (( $levels == 1 )); then # Test for 1, will be zero when file doesn't exist.
                echo "Attempting to remove top level directory '$fullname'"
                echo "Use 'sudo /bin/rm $@' instead."
                exit 1 # error
            fi
        fi
    done
fi


if [[ $(id -u) != 0 ]]; then # Only non-root processes enter password (ie "sudo rm ..." is ok)
  if [ $Terminal == "Y" ] ; then
  # Only running from a terminal needs password (ie not cron)

    # log rm usage to /var/log/syslog
    PARENT_COMMAND="$(ps -o comm= $PPID)"   
    logger "$PARENT_COMMAND"" - rm command was used on file: ""$fullname"

    # Get password
    Password=$(zenity --password --title="Password for rm")
    encryptPassword=$(echo -n "$Password" | md5sum)

echo "md5sum: $encryptPassword" # Comment out after viewing one time and updating line below.

    if [[ "$encryptPassword" != "d2c30dc65e59558c852ea30b7338abbe  -" ]]; then
        echo "Invalid password!"
        exit 1
    fi
  fi # non-terminals can't enter password.
fi # root doesn't need to enter password.

# Call REAL rm command with parameters passed to this wrapper sript
/bin/rm "$@"

exit 0

पासवर्ड "WE2U" को अपनी पसंद की किसी भी चीज़ में बदलें और फाइल को सेव करें।

नई rmस्क्रिप्ट को निष्पादन योग्य के रूप में चिह्नित करें

rmनिष्पादन योग्य के रूप में नई स्क्रिप्ट फ़्लैग करें :

sudo chmod +x /usr/local/bin/rm

यह काम किस प्रकार करता है

rm पासवर्ड

जब तक पासवर्ड WE2U न हो , पहली बार जब आप स्क्रिप्ट चलाते हैं तो आपको "अमान्य पासवर्ड" मिलेगा और आपके द्वारा दर्ज पासवर्ड की एन्क्रिप्शन कुंजी प्रदर्शित होगी। इस एन्क्रिप्शन कुंजी को टर्मिनल से स्क्रिप्ट में कॉपी और पेस्ट करें। फिर उस लाइन के साथ इको की टिप्पणी करें जिसने टर्मिनल पर एन्क्रिप्शन कुंजी प्रदर्शित की है।

क्योंकि हमारे आदेश की /usr/local/binतुलना में सूची में पथ उच्च है। वैध पासवर्ड प्राप्त करने के बाद यह वास्तविक निष्कासन करने के लिए कहता है।/binrm/bin/rm

जैसा कि थॉमस वार्ड ने एक अन्य उत्तर में बताया, यदि आप ऐसा करते तो आपसे sudo apt-get install ...एक हजार बार पासवर्ड मांगा जा सकता था। यदि स्क्रिप्ट sudoका उपयोग किया जाता है और कोई पासवर्ड नहीं मांगता है तो चेक करता है। इसके अलावा अगर rmGUI एप्लिकेशन के भीतर से कॉल किया जाता है तो कोई पासवर्ड की आवश्यकता नहीं है।

loggerहर बार रिकॉर्ड करने के लिए स्क्रिप्ट rmको मैन्युअल रूप से टर्मिनल का उपयोग करके कॉल किया जाता था। कमांड का उपयोग करने के लिए दर्ज किया गया है /var/log/syslog


1
आप स्क्रिप्ट में बस एक हैशेड संस्करण को शामिल करके पासवर्ड को मास्क कर सकते हैं, और फिर जब भी उपयोगकर्ता पासवर्ड दर्ज करता है, तो वह बस इसे हैश कर सकता है और हार्ड-कोडेड हैश के खिलाफ जांच कर सकता है।
आरंभिकसाहिब

स्क्रिप्ट में @InitializeSahib हैशेड पासवर्ड समर्थन (एन्क्रिप्शन) जोड़ा गया है।
WinEunuuchs2Unix

3

एक अन्य विकल्प किसी भी महत्वपूर्ण फाइलों की बैकअप प्रतियों को एक निर्देशिका में बनाना होगा जो गैर-रूट उपयोगकर्ताओं के पास नहीं है। आप उनका उपयोग rsyncया unisonउन्हें स्वचालित रूप से सिंक्रनाइज़ करने के लिए कर सकते हैं , बस सुनिश्चित करें कि बैकअप गंतव्य के पथ में कम से कम एक निर्देशिका रूट और मोड 700 के स्वामित्व में है। इसके परिणामस्वरूप सभी फ़ाइलों की दो प्रतियां होने का परिणाम होगा। उन्हें उपयोग करने के लिए केवल एक अतिथि उपयोगकर्ता बनाना अधिक सुरक्षित होगा, सिवाय इसके कि आपको कंप्यूटर देने से पहले उसे हमेशा लॉक या लॉग आउट करना याद रखना चाहिए या उसे अनअटेंडेड छोड़ना होगा।


3
आप यह इंगित करना चाहते हैं कि किस तरह से प्रचार को नष्ट होने से बचाया जा सकता है? और आदर्श रूप से उस बंद को चालू करने का एक तरीका है ताकि जब उपयोगकर्ता ऐसा कुछ कर रहा है जिसे हटाने के लिए स्थायी होने की आवश्यकता है, तो यह स्थायी है।
ostergaard

@ajostergaard मेरा विचार था कि जब भी वह अपने दोस्तों से अपने कंप्यूटर को वापस लेता है तो वह स्वयं देखता है कि कुछ भी गायब नहीं है और जो कुछ भी है उसे पुनर्स्थापित करता है। लेकिन मेरा खुद का पसंदीदा उपकरण, जीआईआई इंटरएक्टिव मोड में इस्तेमाल किया गया है, जो डिलीट (और रिवर्स) डिलीट को देखना आसान बनाता है।
रैंडम 832

2

आपके द्वारा खोजे जा रहे प्रश्न का प्रत्यक्ष उत्तर नहीं:

यदि आपके मित्र rmकमांड का उपयोग करके आपकी फ़ाइलों को हटा रहे हैं, तो या तो आपके दोस्त या तो अक्षम हैं, झटके दे रहे हैं, या वे BOFH wannabes हैं जो आपको सिखाने की कोशिश कर रहे हैं कि आप अपने सत्रों को लॉग इन और अप्राप्य नहीं छोड़ सकते। सभी मामलों में, समाधान समान है: अपने सत्र को लॉग इन और अनअटेंडेड न छोड़ें

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

"मित्रों" को अगले चरण पर जाने से रोकने का भी लाभ है। mvयदि वे आपकी फ़ाइलों को / dev / null में ले जाने का निर्णय लेते हैं, तो क्या आप उन्हें "पासवर्ड प्रोटेक्ट" करना चाहते हैं, जब उन्हें पता चले कि एक साधारण हटाने से वे क्या चाहते हैं? जब आप इस तरह के खेल में होते हैं तो केवल जीतने वाला कदम नहीं खेलना है।


1

मेरे पास एक समान संभावना है कि मैंने इसके लिए योजना बनाई है। फ़ाइल सर्वर पर, अगर तस्वीरों का मुख्य भंडारण लिखने योग्य है कि परिवार में किसी को कम (कम तकनीकी या दुर्घटना से) कुछ हटा सकता है, तो गलती से गुई में खींचें जो निर्देशिका को स्थानांतरित करता है, या नाम बदलने के बजाय एक संपादित संस्करण के साथ एक मूल को अधिलेखित करता है ।

मुझे एहसास हुआ कि मैं बिना किसी की अनुमति के उस सुरक्षा कर सकता हूं जो बाकी सभी के लिए अपरिहार्य है। ZFS आवधिक स्नैपशॉट बनाता है ताकि किसी भी आकस्मिक विलोपन या ओवरराइटिंग को उलटा किया जा सके। (एक बैकअप के विपरीत, एक स्नैपशॉट हल्का और कॉपी-ऑन-राइट है, इसलिए यह आपके संग्रहण उपयोग को गुणा नहीं करता है।)

ZFS FreeBSD का मूल निवासी है। लिनक्स में btrfs हैं जिनमें स्नैपशॉट भी हैं।


0

बहुत मूर्खतापूर्ण मुद्दे के लिए एक बहुत ही मूर्खतापूर्ण समाधान।

आप के लिए नहीं करना चाहते हैं chmod rm, rmdirया mv(के लिए mv filename /dev/null) या उपयोग एसीएल, तो आपको पासवर्ड कोई भी नहीं के साथ एक डमी उपयोगकर्ता बना सकते हैं, लेकिन आप जानता है और उर्फ करने के लिए प्रत्येक आदेश sudo [user], और फिर प्रत्येक कमांड कि अपने मित्रों को पता नहीं है के लिए उपनाम बनाना । इस तरह, जब आपके मित्र टाइप करते हैं, तो rmसिस्टम उन्हें पासवर्ड के लिए संकेत देगा (लेकिन पासवर्ड गलत होने का अनुमान विफल प्रयास को लॉग करेगा), और आप अभी भी टाइप कर सकते हैं rmaliasया जो भी आप वास्तव में फ़ाइलों को हटाने के लिए चुनते हैं।

या आप केवल एक अतिथि खाता बना सकते हैं, जिसकी आपके गृह निर्देशिका तक पहुंच नहीं है।


ऐसा लगता है कि आप सही रास्ते पर हैं। आपका जवाब कैसे सेटअप उर्फ करने पर व्याख्या द्वारा में सुधार किया जा सकता है, sudo [user]औरdummy user
WinEunuuchs2Unix

0

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


एक टर्मिनल खोलें और रूट बनें। फिर sudo mv /bin/rm /bin/rmoldपुराने आरएम को दूसरी जगह ले जाने के लिए दौड़ें ।

अब sudo nano /bin/rmएक रैपर बनाने के लिए चलाएं ।

नैनो में, निम्न टाइप करें:

#!/bin/bash
/bin/rmold "$@"
exit "$?"

फिर पकड़ CTRL , और Xबाहर निकलने के लिए दबाएं । प्रेस Yजब आप संकेत दिया जाता है, तो हिट ENTERफ़ाइल को बचाने के लिए।

अंत में, हमें इसे उपयुक्त अनुमति देने की आवश्यकता है:

sudo chmod a+x /bin/rm

और वहां तुम जाओ।


1
जब तक आपके पास एक बहुत अच्छा कारण नहीं है, स्क्रिप्ट चर हमेशा उद्धृत किया जाना चाहिए : $@=> "$@"। यहां, आप जो प्रस्ताव कर रहे हैं, वह मूल और सुरक्षित का एक बहुत ही खतरनाक संस्करण है rm: क्या होगा यदि कोई फ़ाइल नाम है foo -i -r *( -iनिर्दोष उपयोगकर्ताओं की सुरक्षा के लिए जोड़ा गया)?
xhienne

@Xhienne के अनुसार "-quoting के अलावा $@, मैं आपसे पाठकों को स्पष्ट रूप से आगाह करने का आग्रह करूंगा कि यह कोई सुरक्षा प्रदान नहीं करता है क्योंकि किसी फ़ाइल को हटाने के कई तरीके हैं। एक को कॉल करना है rmold, लेकिन अन्य तरीकों की भीड़ है, जैसा कि अन्य उत्तरों और उन पर टिप्पणियों में चर्चा की गई है। (फिर भी, यह समस्या है कि rmऐसा महसूस होगा कि यह वर्तमान उपयोगकर्ता के रूप में फ़ाइलों को हटा देता है - यह बिना कॉल किया जाता है sudo, और सामान्य rmकॉल करने वाले के रूप में चलता है - लेकिन ऐसा रूट के रूप में होता है! यदि उन्होंने हाल ही में sudoएड किया है, तो वे जीत गए! ' टी नोटिस वे भले ही बदलाव के बारे में जानते हों, सिस्टम फाइल डिलीट कर रहे हों ।)
एलियाह कगन डे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.