سؤال Linux - هل هناك طريقة لمنع / حماية ملف من أن يتم حذفه حتى من خلال الجذر؟


لدي ملف مهم جدا يستخدمه تطبيق في مكان عملي ، ولست بحاجة للتأكد من أنه لا يتم حذفه على الإطلاق ، كيف يمكنني أن أفعل ذلك؟


86
2017-12-02 16:02


الأصل


قم بعمل نسخة احتياطية ، حتى تتمكن من استعادتها ... بخلاف ذلك ، chattr +i قد يساعد في جعل الملف للقراءة فقط أيضًا (ويمكن تجاوزه مع الملف chattr -i) ، كما يمكنك محاولة حمايتها مع SELInux الخ. - Sven♦
يمكن الجذر إنشاء عملية حتى الجذر لا يمكن أن تقتل؟ - Mark Gabriel
MarkGabriel نعم. قنبلة شوكة. :) - reirab
الله ، ما الفرق؟ - Dan Neely
قد يأتي مسؤول HW ويزيل القرص ، ويمزقه ، ويحرق البقايا ويطعمه إلى ho hos. أو ، أفضل ، قد يحرض بعض مبرمج C (++) بعض الشياطين الأنفية. مهما كان ما يهمك ، قم بعمل نسخة احتياطية منه. مرتين. - Pavel


الأجوبة:


نعم ، يمكنك تغيير سمات الملف إلى للقراءة فقط.

الأمر هو:

chattr +i filename

وتعطيله:

chattr -i filename

من عند man chattr:

ملف مع i لا يمكن تعديل السمة: لا يمكن حذفها أو إعادة تسميتها ، ولا يمكن إنشاء أي رابط لهذا الملف ولا يمكن كتابة أي بيانات إلى الملف. فقط المتميز أو عملية تمتلك CAP_LINUX_IMMUTABLE القدرة يمكن تعيين أو مسح هذه السمة.


128
2017-12-02 16:04



للمهتمين ، المكافئ bsd هو chflags schg - Andrew Domaszek
لاحظ أن المستخدم الذي لديه حق الوصول إلى الجذر يمكن أن يعزل هذا العلم ثم يحذف الملف. من غير المحتمل أن يحدث هذا عن طريق الصدفة لكنه لا يفرق ضد الحذف المتعمد. - Grant
Grant ، وليس إذا كان Securelevel يتم تعيين عالية بما فيه الكفاية. تقوم عملية التمهيد بتعيين securelevel إلى 2 قبل تمكين الشبكة ، لذا فإن إعادة ضبط العلامة يتطلب الوصول إلى الجهاز المحلي (ولكن هذا يعني أن الملفات المستخدمة في عملية التمهيد قبل ذلك الوقت يجب أن تكون غير قابلة للتغيير كذلك). - Simon Richter
Grant إذا كان أحد يريد أن يأخذ ذلك إلى أقصى الحدود ، لا يمكنك منع أن يتم حذف القسم أو يتم وضع القرص في الفرن أو تسوس البروتونات في 10 ^ 30 سنة ... - Hagen von Eitzen
Itai Ganot رجل أتمنى لو كنت قد قرأته قبل 4 أيام. كنت سؤال في امتحان أخذت = / - vfbsilva


حرقها على قرص مضغوط. ضع القرص المضغوط في محرك الأقراص المضغوطة ثم قم بالوصول إليه من هناك.


80
2017-12-03 15:18



+1 للتفكير خارج الصندوق. و ، afaik ، تم استخدامه أيضاً من قبل في بعض الحالات (محرك الأقراص cdrom الصندوق الأسود مع القرص المضغوط في ذلك يتم شحنها إلى وجهتها). قد لا يكون من المناسب إذا كان شخص ما قادرًا على فصل محرك الأقراص ، على أي حال. - Alex Mazzariol
قبلة. أحبه! +1 - MonkeyZeus
أعتقد أن هذا هو الجواب الصحيح لهذا السؤال. لا يمكن أن يؤدي تغيير سمة الملف (chattr -i) إلى منع الإجراءات الضارة. - Bruno von Paris
في يومنا هذا ، قد تكون بطاقة SD كاملة الحجم في قارئ بطاقة مدمج حلًا أفضل - انخفاض استهلاك الطاقة ، والوصول بشكل أسرع في كثير من الحالات وأكثر دواما في عدم استخدام الكتابة. - 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


يجب إنشاء ارتباطات ثابتة متعددة بالملف أيضًا. يجب أن تكون هذه في مواقع مختلفة لا يمكن للمستخدمين العاديين الوصول إليها.

بهذه الطريقة ، حتى إذا تمكنوا من تجاوز حماية chattr الخاص بك ، ستبقى البيانات ويمكنك بسهولة استعادتها حيث يبحث التطبيق عن ذلك.


6
2017-12-03 05:15



لن تحمي الروابط الثابتة محتويات الملف. - 200_success
ومع ذلك سيوفرون حماية إضافية من DELETION ، وهو السؤال الأصلي. - barbecue
barv إذا تم إلغاء ربط الملف بالاسم الذي يبحث عنه التطبيق في ، لا يهم أن محتوى الملف موجود تحت اسم آخر. بالنسبة لأي شيء يبحث عن الملف بالاسم المتوقع ، لا يزال قد تم حذف الملف. - α 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

- ما يجري القيام به هنا هو ملف ربط ملف إلى نفسه (نعم ، يمكنك القيام بذلك في لينكس) ، ثم إعادة تثبيته في وضع R / O. بالطبع يمكن القيام بذلك للدليل كذلك.


6
2017-12-06 23:40





وقد أجب آخرون على سؤالك كما كنت قد طلبت ذلك. كما ذكرSven في تعليق ، الحل العام للسؤال ، "كيف أتأكد من أنني لن أفقد ملفًا أبدًا؟" هو إنشاء نسخة احتياطية من الملف. قم بعمل نسخة من الملف وتخزينه في أماكن متعددة. بالإضافة إلى ذلك ، إذا كان الملف مهمًا للغاية وكانت لدى شركتك سياسة لنسخ البيانات المهمة احتياطيًا باستخدام خدمة النسخ الاحتياطي ، فقد تبحث عن تضمين هذا الملف في الخدمة.


5
2017-12-03 07:02



حسنًا ، بالطبع يتم الاحتفاظ بالملف احتياطيًا بشكل منتظم ، أردت فقط طبقة أخرى من الحماية ضد المستخدمين والتي تعمل أحيانًا على الصندوق مع أذونات المستخدم الجذر.


في تعليق ل الجواب من قبل كيفن، جيري مذكور:

حسنًا ، بالطبع يتم الاحتفاظ بالملف احتياطيًا بشكل منتظم ، أردت فقط طبقة أخرى من الحماية ضد المستخدمين والتي تعمل أحيانًا على الصندوق مع أذونات المستخدم الجذر. -

سأفترض أنه لا يمكنك تغيير هذه الممارسة ، لأنها فكرة سيئة حقًا.

جميع الاقتراحات حول استخدام جهاز للقراءة فقط لها نفس المشكلة - فهي تجعل من PITA إجراء تغييرات شرعية عندما تحتاج إلى ذلك. في حالة وجود محرك أقراص قابل للقفل ، مثل بطاقة SD ، فإنك تواجه المشكلة التي تتعرض لها فجأة عندما تقوم بإلغاء تأمينها لإجراء تغييراتك.

ما أود أن أوصي به بدلاً من ذلك هو إعداد جهاز آخر كخادم NFS ، ومشاركة الدليل مع الملفات الهامة إلى الجهاز (الأجهزة) التي يقوم المستخدمون بتجذرها. شارك التثبيت كمقروءة فقط ، حتى لا تتمكن الأجهزة التي لديها مستخدمون تثق بهم من إجراء أي تعديلات. عندما تحتاج إلى إجراء تغييرات بشكل قانوني ، يمكنك الاتصال بخادم NFS وإجراء تغييراتنا هناك.

نحن نستخدم هذا لخوادم الويب الخاصة بنا ، بحيث لن يتمكن أي استغلال ناجح ضد خادم الويب من إدخال أو تغيير أي ملفات قد يعرضها الخادم للخارج أو تغيير التهيئة.

لاحظ أن هذا يمكن أن يتم تجاوزه بنفس الطريقة التي يمكن أن تكون بها جميع النقاط ذات الصلة بنقطة التحميل:

  • قم بعمل نسخة من الدليل المحمي
  • إلغاء تحميل الدليل
  • قم بنقل النسخة بدلاً من التحميل ، أو اربطها في حالة عدم توفر مساحة كافية على ذلك التثبيت.

3
2017-12-07 13:04



لماذا هي "فكرة حقاً ، سيئة حقًا" لعمل نسخة احتياطية من ملف مهم بشكل منتظم ، وكذلك بذل جهد لحماية النسخة الأصلية من الحذف العرضي؟ في سؤال OP الأصلي ، ومن تعليق OP على الإجابة التي أشرت إليها ، من الواضح أن القلق ليس نشاطًا خبيثًا ، بل نشاطًا غير مقصود / غير كفء. - Craig
Craig: إنها فكرة سيئة أن يكون لديك الكثير من المستخدمين الذين لديهم جذور ، خاصة إذا كانوا غير موثوق بهم لعدم العبث بالملفات الهامة. - Joe H.
آه ... حسنا بالطبع. :-) لكن هذا لم يكن جوهر سؤال البروتوكول الاختياري. أكد OP أنه هناك هي المستخدمين الذين لديهم حق الوصول إلى الجذر والذين يجب حمايتهم من حذف ملف عن طريق الخطأ. - Craig
Craig: قد لا يكون جوهر السؤال ، ولكن هو جوهر المشكلة (مشكلة XY؟) ... ولكن ليس لدي أي فكرة عما يفعلونه كجذر ، لذلك إذا كان يمكنهم الاستفادة من setuid و / أو امتيازات sudo محدودة. ويجب عليك إعادة قراءة السؤال ، حيث لا أرى أي إشارة من جيري أنه يحاول فقط الحماية من الإزالة غير المقصودة ("أنا بحاجة إلى التأكد من أنها لا تحذف على الإطلاق") ، ولم يعط سوى متابعة واحدة فقط انظر (الذي أثار ردي). - Joe H.
انظر رد OP على هذه الإجابة - Craig


على لينكس غير قابل للتغيير يتم دعم العلامة فقط على بعض أنواع نظام الملفات (مثل معظم أنواع الملفات الأصلية مثل ext4، xfs، btrfs...)

في أنظمة الملفات غير المدعومة ، يكون خيار آخر هو ربط الملف على نفسه في وضع القراءة فقط. يجب القيام بذلك في خطوتين:

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

يجب القيام بذلك في كل الحذاء رغم ذلك ، على سبيل المثال عبر /etc/fstab.


3
2017-12-08 16:32



آمل أي شخص umount الملف للحصول على أذونات الكتابة مرة أخرى - whoan


لماذا لا تنشئ صورة ISO 9660 ، وهي للقراءة فقط حسب التصميم؟

قم بتحميل صورة ISO ، وسيبدو مثل قرص مضغوط ، ولكن مع أداء محرك الأقراص الثابتة ، وستكون الملفات الموجودة على الصورة المحملة آمنة تماماً من الحذف كملفات على قرص مضغوط فعلي.

إن فكرة حرق الملف الحساس إلى قرص مضغوط وتشغيله من قرص مضغوط أمر مثير للاهتمام ، على افتراض أن إعداد البتة غير القابلة للتغيير على الملف لا يعتبر كافياً.

هناك مشكلات سلبية محتملة في تشغيله على قرص مضغوط فعلي ، بما في ذلك الأداء (محركات الأقراص المضغوطة تكون أبطأ بكثير من محركات الأقراص الثابتة أو محركات الأقراص ذات الحالة الثابتة). هناك احتمالية إزالة القرص المدمج بواسطة شخص ذي معنى جيد واستبداله بقرص مختلف يحتاج إلى الوصول إليه. هناك احتمال أن يقوم طرف خبيث بإخراج القرص وإلقاءه في الميكروويف (أو المهملات) ، وبالتالي "حذف" ملفك. هناك إزعاج من الاضطرار إلى وجود محرك أقراص مضغوطة مخصص للأجهزة فقط لهذا الملف ، وعوامل أخرى.

لكن البروتوكول الاختياري أوضح أن الهدف الأساسي هو الحماية من الحذف العرضي ، وليس ضد الأفعال الخبيثة ، وأن الملف (الملفات) المعنية يتم الاحتفاظ به احتياطيًا واسترداده في حالة وقوع حادث ، ولكن من المرغوب جدًا ألا يتم حفظ الملف أبدًا. يتم حذفه عن طريق الخطأ.

يبدو أن تشغيل الملف من صورة ISO تم تركيبه يفي بهذا المطلب.


2
2017-12-06 23:03



لا يزال بإمكان الجذر حذف ملف عن طريق معالجة الصورة مباشرةً. إنه مجرد ملف عادي يحدث ليتم تثبيته. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen كيف ذلك؟ ISO 9660 حسب التصميم غير قابل للتغيير. سيتعين على الطرف الذي يقوم بهذا التغيير حذف ملف ISO بأكمله واستبداله. ليس أنهم لا يستطيعون فعل ذلك. لكنهم لم يتمكنوا من الدخول وحذف ملف واحد جراحيا دون خبرة هائلة ، حتى لو حدث ذلك. سيكون من الأسهل بكثير إزالة القرص المضغوط الفعلي من محرك الأقراص وإرمه في القمامة. ؛-) - Craig
لا يلزم أن تكون متطورة - ما عليك سوى الكتابة فوق ملف الصورة بالأصفار. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen سوف أعترف بهذه النقطة بسهولة كافية. التحذير هو أنه يتطلب تفريغ الصورة عن قصد واستبدالها. وسيقوم perp شامل فقط shred في تلك المرحلة. ولكن ما لم تكن تمنع الوصول المادي إلى الجهاز ، فلا يزال من الأسهل فقط إخراج قرص مضغوط فعلي من محرك الأقراص وإلقائه في صندوق القمامة بدلاً من فك ملف ISO واستبداله ، على الرغم من أنه سهل. وقد صرّح البروتوكول الاختياري أن الملف المهم مدعوم على أساس منتظم ، وهذا مجرد إجراء إضافي ضد التلف العرضي ، وليس ضد الأذى الخبيث. - Craig
أشرت إلى كيفية تغيير صورة ISO9660 حتى إذا كان من المفترض أن تكون غير قابلة للتغيير. وجهة نظري هي أنه إذا كانت الكتابة قابلة للكتابة على الإطلاق ، فبإمكان الجذر كتابتها. - Thorbjørn Ravn Andersen