सवाल लिनक्स - क्या रूट से भी फ़ाइल को हटाने से रोकने / संरक्षित करने का कोई तरीका है?


मेरे पास एक बहुत ही महत्वपूर्ण फ़ाइल है जो मेरे कार्यस्थल में एक एप्लिकेशन का उपयोग करती है, मुझे यह सुनिश्चित करने की ज़रूरत है कि यह किसी भी चीज़ को हटा नहीं दे रहा है, मैं यह कैसे कर सकता हूं?


86
2017-12-02 16:02


मूल


बैकअप बनाएं, ताकि आप इसे पुनर्स्थापित कर सकें ... इसके अलावा, chattr +i मदद कर सकता है लेकिन फ़ाइल को केवल पढ़ने के लिए ही बना देगा (और इसके साथ ओवरराइड किया जा सकता है chattr -i), आप इसे SELInux आदि से संरक्षित करने का प्रयास भी कर सकते हैं। - Sven♦
रूट एक प्रक्रिया बना सकता है कि रूट भी मार नहीं सकता है? - Mark Gabriel
@ मार्क गैब्रियल हां। एक कांटा बम। :) - reirab
भगवान, जड़, क्या अंतर है? - Dan Neely
एचडब्ल्यू व्यवस्थापक आ सकता है और डिस्क को हटा सकता है, इसे तोड़ सकता है, अवशेषों को जला सकता है और उन्हें हॉगों को खिला सकता है। या, बेहतर, कुछ सी (++) प्रोग्रामर कुछ नाक राक्षसों को प्रेरित कर सकता है। जो कुछ भी आपके लिए महत्वपूर्ण है, इसे वापस लें। दो बार। - Pavel


जवाब:


हां, आप फ़ाइल के गुणों को केवल पढ़ने के लिए बदल सकते हैं।

आदेश है:

chattr +i filename

और इसे अक्षम करने के लिए:

chattr -i filename

से man chattr:

के साथ एक फाइल i विशेषता को संशोधित नहीं किया जा सकता है: इसे हटाया या बदला नहीं जा सकता है, इस फ़ाइल में कोई लिंक नहीं बनाया जा सकता है और फ़ाइल में कोई डेटा नहीं लिखा जा सकता है। केवल सुपरसुर या एक प्रक्रिया है CAP_LINUX_IMMUTABLE क्षमता इस विशेषता को सेट या साफ़ कर सकती है।


127
2017-12-02 16:04



रुचि के लिए, बीएसडी बराबर है chflags schg - Andrew Domaszek
ध्यान दें कि रूट एक्सेस वाले उपयोगकर्ता उस ध्वज को अनसेट कर सकते हैं और फिर फ़ाइल को हटा सकते हैं। यह दुर्घटना से होने की संभावना नहीं है लेकिन यह जानबूझकर हटाने के खिलाफ प्रबल नहीं है। - Grant
@ ग्रेन, अगर नहीं Securelevel काफी ऊंचा सेट है। बूट प्रक्रिया नेटवर्क सक्षम होने से पहले 2 से सुरक्षित स्तर को सेट करती है, इसलिए ध्वज को रीसेट करने के लिए स्थानीय मशीन एक्सेस की आवश्यकता होती है (लेकिन इसका मतलब है कि बूट प्रक्रिया में उपयोग की जाने वाली फ़ाइलों को उस समय से पहले अपरिवर्तनीय होने की आवश्यकता है)। - Simon Richter
@ ग्रिंट यदि कोई इसे चरम पर ले जाना चाहता है, तो आप इसे रोक नहीं सकते कि विभाजन हटा दिया गया है या डिस्क को 10 ^ 30 वर्षों में फर्नेस या प्रोटॉन क्षय में रखा गया है ... - Hagen von Eitzen
@ इटाई गणोत आदमी का मानना ​​है कि मैंने इसे 4 दिन पहले पढ़ा था। मैं एक परीक्षा में एक प्रश्न था जो मैंने लिया = / - vfbsilva


इसे एक सीडी में जलाओ। सीडी-रोम ड्राइव में सीडी रखें और इसे वहां से एक्सेस करें।


80
2017-12-03 15:18



बॉक्स से बाहर सोचने के लिए +1। और, afaik, यह कुछ परिस्थितियों में पहले भी इस्तेमाल किया गया है (इसमें सीडी के साथ ब्लैक-बॉक्स सीडीआरओएम ड्राइव इसके गंतव्य पर भेज दिया गया है)। यह उचित नहीं हो सकता है अगर कोई ड्राइव को डिस्कनेक्ट करने में सक्षम है, वैसे भी। - Alex Mazzariol
चुम्मा। मुझे यह पसंद है! +1 - MonkeyZeus
मुझे लगता है कि यह इस सवाल का सही जवाब है। फ़ाइल विशेषता बदलना (chattr -i) दुर्भावनापूर्ण कार्यों को रोक नहीं सकता है। - Bruno von Paris
इन दिनों एक अंतर्निहित कार्डreader में एक पूर्ण आकार का एसडी कार्ड एक बेहतर समाधान हो सकता है - कम बिजली की खपत, कई मामलों में तेजी से पहुंच और बिना लिखने के उपयोग में अधिक टिकाऊ। - Chris H
@ jpmc26 इसलिए सीडी-रोम ड्राइव। वे केवल पढ़े जाते हैं। - Thorbjørn Ravn Andersen


  1. एक फ़ाइल सिस्टम छवि बनाएँ।
  2. छवि माउंट करें।
  3. फ़ाइल को आरोहित छवि पर कॉपी करें।
  4. छवि को अनमाउंट करें और इसे केवल पढ़ने के लिए रीमाउंट करें।
  5. अब आप इसे हटा नहीं सकते हैं।

उदाहरण:

# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt 
can't delete this
# rm readonlyfolder/permanent.txt 
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system

28
2017-12-03 20:33



mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt - Kaz Wolfe
इसे थोड़ा और लेते हुए, आप इसका उपयोग कर सकते हैं squashfs या cramfs जो संकुचित और केवल पढ़ने के लिए हैं। फाइल सिस्टम बनाने के लिए इसे एक विशेष उपकरण की आवश्यकता है। - Zan Lynx


आपको फ़ाइल के साथ-साथ कई हार्ड लिंक बनाना चाहिए। ये विभिन्न स्थानों पर होना चाहिए जो नियमित उपयोगकर्ता एक्सेस नहीं कर सकते हैं।

इस तरह, भले ही वे आपके चैटर सुरक्षा को ओवरराइड करने का प्रबंधन करते हैं, फिर भी डेटा रहेगा और आप इसे आसानी से पुनर्स्थापित कर सकते हैं जहां आपका एप्लिकेशन इसकी तलाश कर रहा है।


6
2017-12-03 05:15



हार्ड लिंक फ़ाइल की सामग्री की रक्षा नहीं करेंगे। - 200_success
हालांकि वे डेलीशन से अतिरिक्त सुरक्षा प्रदान करेंगे, जो मूल प्रश्न था। - barbecue
@barbecue अगर फ़ाइल नाम पर अनलिंक है, तो एप्लिकेशन इसके लिए देखता है, इससे कोई फ़र्क नहीं पड़ता कि फ़ाइल की सामग्री किसी अन्य नाम के अंतर्गत मौजूद है। अपेक्षित नाम वाली फ़ाइल की तलाश करने के लिए, फ़ाइल अभी भी हटा दी गई है। - α CVn


लिनक्स तथाकथित है बाँध-माउंट विकल्प जो शक्तिशाली और उपयोगी सुविधा है जानना:

%  cd $TMP && mkdir usebindmountluke && cd usebindmountluke
%  echo usebindmountluke > preciousfile
%  sudo mount -B preciousfile preciousfile
%  sudo mount -oremount,ro preciousfile
%  echo sowhat > preciousfile
zsh: read-only file system: preciousfile
%  rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system

- यहां क्या किया जा रहा है बाध्य-माउंट फ़ाइल स्वयं (हां, आप इसे लिनक्स में कर सकते हैं), फिर इसे आर / ओ-मोड में फिर से घुमाया जाता है। बेशक यह निर्देशिका के साथ भी किया जा सकता है।


6
2017-12-06 23:40





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


5
2017-12-03 07:02



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


एक टिप्पणी में केविन द्वारा जवाबजैरी का उल्लेख है:

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

मुझे लगता है कि आप इस अभ्यास को नहीं बदल सकते हैं, क्योंकि यह वास्तव में, वास्तव में बुरा विचार है।

केवल-पढ़ने वाले डिवाइस का उपयोग करने के बारे में सभी सुझावों में एक ही समस्या है - जब आपको आवश्यकता हो तो वैध परिवर्तन करने के लिए यह आपके लिए एक पिटा बनाता है। लॉक करने योग्य ड्राइव के मामले में, जैसे कि एसडी कार्ड, आप समस्या में भाग लेते हैं कि जब आप इसे अपने परिवर्तन करने के लिए अनलॉक करते हैं तो आप अचानक कमजोर होते हैं।

इसके बजाय मैं एक और मशीन को एनएफएस सर्वर के रूप में स्थापित करने की सिफारिश करता हूं, और निर्देशिका को उन महत्वपूर्ण मशीनों के साथ साझा करना जो मशीनों पर रूट हैं। माउंट को केवल पढ़ने के लिए साझा करें, ताकि जिन उपयोगकर्ताओं के साथ आप विश्वास नहीं करते हैं, वे मशीनें कोई संशोधन नहीं कर सकती हैं। जब आपको वैध रूप से परिवर्तन करने की आवश्यकता होती है, तो आप एनएफएस सर्वर से कनेक्ट कर सकते हैं और वहां हमारे बदलाव कर सकते हैं।

हम इसका उपयोग हमारे वेबसर्वर के लिए करते हैं, ताकि वेबसर्वर के खिलाफ एक सफल शोषण किसी भी फाइल को सम्मिलित या परिवर्तित करने में सक्षम न हो जो सर्वर फिर से सेवा करेगा या कॉन्फ़िगरेशन को बदल देगा।

ध्यान दें कि यह स्टॉल को उसी तरह से बाधित किया जा सकता है कि सभी माउंट-पॉइंट संबंधित हो सकते हैं:

  • संरक्षित निर्देशिका की एक प्रति बनाओ
  • निर्देशिका अनमाउंट करें
  • प्रतिलिपि को माउंट के स्थान पर ले जाएं, या उसमें सिमलिंक करें यदि उस माउंट में पर्याप्त स्थान नहीं है।

3
2017-12-07 13:04



यह नियमित रूप से एक महत्वपूर्ण फ़ाइल का बैक अप लेने के लिए "वास्तव में, वास्तव में बुरा विचार" क्यों है और आकस्मिक विलोपन के खिलाफ मूल की रक्षा करने का प्रयास भी करता है? ओपी के मूल प्रश्न में, और आपके द्वारा संदर्भित उत्तर पर ओपी की टिप्पणी से, यह स्पष्ट है कि चिंता कोई दुर्भावनापूर्ण गतिविधि नहीं है, लेकिन आकस्मिक / अक्षम गतिविधि है। - Craig
@ क्रैग: बहुत सारे उपयोगकर्ताओं को रूट के साथ रखना एक बुरा विचार है, खासकर यदि वे महत्वपूर्ण फाइलों के साथ गड़बड़ करने पर भरोसा नहीं करते हैं। - Joe H.
आह ... निश्चित रूप से यह है। :-) लेकिन वह ओपी के सवाल का क्रूक्स नहीं था। ओपी ने कहा कि वहां कर रहे हैं रूट पहुंच वाले उपयोगकर्ता जिन्हें फ़ाइल को गलती से हटाने के खिलाफ सुरक्षित किया जाना चाहिए। - Craig
@ क्रैग: यह सवाल का क्रूक्स नहीं हो सकता है, लेकिन यह है समस्या का क्रूक्स (एक्सवाई समस्या?) ... लेकिन मुझे नहीं पता कि वे रूट के रूप में क्या कर रहे हैं, इसलिए यदि वे सेटुइड और / या सीमित सूडो विशेषाधिकारों का उपयोग कर सकते हैं। और आपको सवाल फिर से पढ़ना चाहिए, क्योंकि मुझे जैरी द्वारा कोई उल्लेख नहीं दिखता है कि वह केवल अनजाने हटाने के खिलाफ सुरक्षा करने की कोशिश कर रहा है ("मुझे यह सुनिश्चित करने की ज़रूरत है कि यह किसी भी चीज़ को मिटा नहीं दे रहा है"), और उसने केवल एक अनुवर्ती अनुदान दिया देखें (जिसने मेरी प्रतिक्रिया को ट्रिगर किया)। - Joe H.
इस उत्तर के लिए ओपी की प्रतिक्रिया देखें - Craig


लिनक्स पर अडिग झंडा केवल कुछ प्रकार की फाइल सिस्टम पर समर्थित है (अधिकांश मूल जैसे ext4, xfs, btrfs...)

फाइल सिस्टम पर जहां यह समर्थित नहीं है, दूसरा विकल्प फ़ाइल को केवल पढ़ने-योग्य मोड में बाध्य करने के लिए है। इसे दो चरणों में किया जाना है:

mount --bind file file
mount -o remount,bind,ro file

उदाहरण के लिए, हालांकि प्रत्येक बूट पर यह किया जाना है /etc/fstab


3
2017-12-08 16:32



मुझे उम्मीद है कि कोई भी umount फिर से लिखने की अनुमति पाने के लिए फ़ाइल - whoan


आईएसओ 9660 छवि क्यों नहीं बनाएं, जो केवल डिजाइन द्वारा पढ़ी जाती है?

आईएसओ छवि को माउंट करें, और यह एक सीडी-रोम की तरह दिखेगा, लेकिन हार्ड ड्राइव के प्रदर्शन के साथ, और घुड़सवार छवि पर फ़ाइलें भौतिक सीडी-रोम पर फ़ाइलों के रूप में हटाने से सुरक्षित होगी।

एक सीडी में संवेदनशील फ़ाइल को जलाने और इसे सीडी-रोम से चलाने का विचार दिलचस्प है, यह मानते हुए कि फ़ाइल पर अपरिवर्तनीय बिट सेट करना पर्याप्त समझा नहीं जाता है।

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

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

ऐसा लगता है कि एक घुड़सवार आईएसओ छवि से फ़ाइल चलाना आवश्यकता को पूरा करेगा।


2
2017-12-06 23:03



रूट अभी भी छवि को मैनिपुलेट करके फ़ाइल को हटा सकता है। यह सिर्फ एक सामान्य फाइल है जो घुड़सवार होती है। - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen कैसे? डिजाइन द्वारा आईएसओ 9660 अपरिवर्तनीय है। उस परिवर्तन को करने वाली पार्टी को संपूर्ण आईएसओ फ़ाइल को हटाना और बदलना होगा। ऐसा नहीं है कि वे ऐसा नहीं कर सके। लेकिन वे तब भी नहीं जा सकते थे और शल्य चिकित्सा के बिना जबरदस्त विशेषज्ञता के एक फाइल को हटा सकते थे, अगर तब भी। ड्राइव से भौतिक सीडी-रोम को निकालना और डंपस्टर में टॉस करना बहुत आसान होगा। ;-) - Craig
परिष्कृत होने की कोई ज़रूरत नहीं है - बस छवि फ़ाइल को शून्य से ओवरराइट करें। - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen मैं उस बिंदु को आसानी से स्वीकार कर दूंगा। चेतावनी यह है कि इसे जानबूझकर छवि को तोड़ने और इसे ओवरराइट करने की आवश्यकता होगी। एक पूरी तरह से perp बस होगा shred यह उस बिंदु पर। लेकिन जब तक कि आप मशीन तक भौतिक पहुंच से इनकार नहीं कर रहे हैं, तब भी यह एक भौतिक सीडी को ड्राइव से बाहर पॉप करना आसान लगता है और आईएसओ फ़ाइल को तोड़ने और ओवरराइट करने के बजाय डंपस्टर में टॉस करना आसान लगता है, हालांकि यह आसान है। और ओपी ने कहा है कि महत्वपूर्ण फाइल का नियमित आधार पर समर्थन किया जाता है, इसलिए यह दुर्भावनापूर्ण क्षति के खिलाफ आकस्मिक क्षति के खिलाफ एक अतिरिक्त उपाय है। - Craig
मैंने इंगित किया है कि आईएसओ 9660 छवि को कैसे बदला जाए, भले ही इसे अपरिवर्तनीय माना जाए। मेरा मुद्दा यह है कि यदि थोड़ा सा लिखने योग्य है, तो रूट इसे लिख सकता है। - Thorbjørn Ravn Andersen