Linux - Bir dosyanın root tarafından silinmesini önlemenin / korumanın bir yolu var mı?


89

İşyerimdeki bir uygulamanın kullandığı çok önemli bir dosyam var, ne olursa olsun silmediğinden emin olmalıyım, bunu nasıl yapabilirim?

linux  files 

13
Yedekleme yapın, böylece geri yükleyebilirsiniz ... Bundan başka, chattr +iyardımcı olabilir ancak dosyayı salt okunur hale getirir (ve geçersiz kılınabilir chattr -i), ayrıca SELInux vb. İle korunmaya çalışabilirsiniz.
Sven

43
Kök, kökün bile öldüremediği bir süreç yaratabilir mi?
Mark Gabriel,

4
@MarkGabriel Evet. Bir çatal bombası. :)
07'de reirab


8
HW Yöneticisi gelip diski çıkarabilir, parçalayabilir, kalıntıları yakabilir ve ocaklara besleyebilir. Ya da daha iyisi, bazı C (++) programcıları bazı nazal şeytanları tetikleyebilir. Sizin için önemli olan ne varsa, yedekleyin. İki defa.
Pavel,

Yanıtlar:


133

Evet, dosyanın özniteliklerini salt okunur olarak değiştirebilirsiniz.

Komut:

chattr +i filename

Ve devre dışı bırakmak için:

chattr -i filename

Kimden man chattr:

Özelliğe sahip bir dosya ideğiştirilemez: silinemez veya yeniden adlandırılamaz, bu dosyaya bağlantı oluşturulamaz ve dosyaya veri yazılamaz. Bu özelliği yalnızca süper kullanıcı veya CAP_LINUX_IMMUTABLEözelliğe sahip bir işlem ayarlayabilir veya silebilir.


11
İlgilenenler için, bsd eşdeğerichflags schg
Andrew Domaszek

85
Kök erişimi olan bir kullanıcının bu bayrağını kaldırabileceğini ve ardından dosyayı silebileceğini unutmayın. Bu kazara gerçekleşmesi muhtemel değildir, ancak kasıtlı olarak silinmeye karşı kesin değildir.
hibe

6
@Grant, Securelevel yeterince yüksek ayarlanmadığında olmaz . Önyükleme işlemi ağ etkinleştirilmeden önce güvenlik seviyesini 2'ye ayarlar, bu nedenle bayrağı sıfırlamak yerel makine erişimi gerektirir (ancak bu, önyükleme işleminde kullanılan dosyaların da değişmez olması gerektiği anlamına gelir).
Simon Richter

16
@Grant Kişi onu aşırıya çıkarmak istiyorsa, bölümün silinmesini veya diskin bir fırına konmasını veya 10 ^ 30 yıl içinde protonların bozulmasını
önleyemezsiniz

2
@Itai Ganot adam Keşke 4 gün önce okumuş olsaydım. Yaptığım sınavda bir
soruydum

84

CD'ye yaz. CD'yi bir CD-ROM sürücüsüne yerleştirin ve oradan erişin.


15
Kutunun dışında düşünmek için +1. Ve, afaik, daha önce bazı durumlarda da kullanılıyordu (içinde CD bulunan kara kutu cdrom sürücüsü hedefine gönderildi). Yine de birisi sürücünün bağlantısını kesebiliyorsa uygun olmayabilir.
Alex Mazzariol

1
KISS Bayıldım! +1
MonkeyZeus

2
Bence bu sorunun doğru cevabı. Dosya özniteliğini (chattr -i) değiştirmek, zararlı eylemleri önleyemez.
Bruno von Paris

7
Bu gün, dahili bir kart okuyucusundaki tam boyutlu bir SD kart daha iyi bir çözüm olabilir - düşük güç tüketimi, birçok durumda daha hızlı erişim ve yazmayla kullanımda daha dayanıklı.
Chris H

3
@ jpmc26 dolayısıyla CD-ROM sürücüsü. Bunlar salt okunur.
Thorbjørn Ravn Andersen

29
  1. Bir dosya sistemi görüntüsü oluşturun.
  2. Resmi bağla.
  3. Dosyayı monte edilen görüntüye kopyalayın.
  4. Görüntünün bağlantısını kesin ve salt okunur olarak yeniden monte edin.
  5. Şimdi silemezsin.

Örnek:

# 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

3
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Kaz Wolfe

3
Biraz daha bu alarak, kullanabileceğiniz squashfsveya cramfssıkıştırılmış olan ve salt okunur. Dosya sistemini oluşturmak için özel bir araca ihtiyacı var.
Zan Lynx,

7

Linux, bilmesi oldukça güçlü ve kullanışlı bir özellik olan bağlama bağlama seçeneğine sahiptir :

%  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

- burada yapılan dosya kendi kendine bağlanır dosyadır (evet, bunu Linux'ta yapabilirsiniz), sonra R / O modunda yeniden monte edilir. Tabii ki bu da rehbere yapılabilir.


6

Ayrıca dosyaya birden çok sabit bağlantı oluşturmanız gerekir. Bunlar, normal kullanıcıların erişemeyeceği çeşitli yerlerde olmalıdır.

Bu şekilde, chattr korumanızı geçersiz kılmayı başarsalar bile, veriler kalır ve uygulamanızın aradığı yerde kolayca geri yükleyebilirsiniz.


11
Sabit bağlantılar dosyanın içeriğini korumaz.
200_success

Ancak, asıl soru olan DELETION'dan ek koruma sağlayacaklar.
barbekü

2
@ barbecue Bir uygulamanın aradığı isimde dosyanın bağlantısı kaldırılmışsa, dosyanın içeriğinin başka bir isim altında olması önemli değildir. Dosyayı beklenen adla arayan herhangi bir şey için dosya hala silinmiştir.
Bir CVn

5

Diğerleri sorunuzu istediğiniz gibi yanıtladı. @Sven'in bir yorumunda belirtildiği gibi, "Asla bir dosyayı kaybetmediğimden nasıl emin olabilirim?" Sorusunun genel çözümü. Dosyanın bir yedeğini oluşturmaktır. Dosyanın bir kopyasını alın ve birden çok yerde saklayın. Ayrıca, dosya son derece önemliyse ve şirketinizin önemli verileri yedekleme servisiyle yedeklemek için bir politikası varsa, bu dosyanın hizmete dahil edilmesini isteyebilirsiniz.


2
Tabii ki dosya düzenli olarak yedekleniyor, sadece kutuda root kullanıcı izinleri ile çalışan kullanıcılara karşı başka bir koruma katmanı istedim.

5

Linux'ta değişmez bayrağı sadece dosya sisteminin bazı türleri tarafından desteklenmesini (gibi yerli olanların çoğu edilir ext4, xfs, btrfs...)

Desteklenmeyen dosya sistemlerinde, başka bir seçenek de dosyayı salt okunur modda bağlamak. Bu iki adımda yapılmalıdır:

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

Bu, her açılışta, örneğin üzerinden yapılmalıdır /etc/fstab.


İnşallah umountdosyayı tekrar yazma iznini alan herkes
17:17

3

Kevin'in cevabına yaptığı bir yorumda , Jerry şöyle diyor:

Tabii ki dosya düzenli olarak yedekleniyor, sadece kutuda root kullanıcı izinleri ile çalışan kullanıcılara karşı başka bir koruma katmanı istedim. -

Bu uygulamayı değiştiremeyeceğinizi farzedeceğim, çünkü bu gerçekten, gerçekten kötü bir fikir.

Salt okunur bir aygıt kullanmayla ilgili tüm öneriler aynı soruna sahiptir - gerektiğinde yasal değişiklikler yapmanız sizin için bir PITA yapar. SD kart gibi kilitlenebilir bir sürücü olması durumunda, değişikliklerinizi yapmak için kilidini açtığınızda aniden savunmasız olduğunuz problemi yaşarsınız.

Bunun yerine tavsiye edeceğim şey, başka bir makineyi NFS sunucusu olarak ayarlamak ve dizini, kullanıcıların kullandığı makinelere önemli dosyalarla paylaşmak. Bağlantısını salt okunur olarak paylaşın, böylece güvenmediğiniz kullanıcılara sahip makineler herhangi bir değişiklik yapamaz. Yasal olarak değişiklik yapmanız gerektiğinde, NFS sunucusuna bağlanabilir ve değişikliklerimizi burada yapabilirsiniz.

Bunu web sunucularımız için kullanıyoruz, böylece web sunucusuna yapılan başarılı bir istismar, sunucunun daha sonra sunacağı dosyaları ekleyemez veya değiştiremez veya yapılandırmayı değiştiremez.

Bu saplamanın, bağlama noktası ile ilgili olanların tümü ile aynı şekilde atlanabileceğini unutmayın:

  • Korunan dizinin bir kopyasını alın
  • Dizini kaldır
  • Kopyayı mount yerine yerleştirin veya bu mount yeterli alana sahip değilse, bunu işaretleyin.

Önemli bir dosyayı düzenli olarak yedeklemek ve orijinali yanlışlıkla silmeye karşı korumak için çaba sarf etmek neden "gerçekten kötü bir fikir"? OP'nin orijinal sorusunda ve OP'nin referans verdiğiniz cevap hakkındaki yorumunda kaygının kötü niyetli bir faaliyet olmadığı, ancak yanlışlıkla / yetersiz bir faaliyet olduğu açıktır.
Craig

1
@Craig: Çok sayıda kullanıcının root kullanması, özellikle de kritik dosyalarla uğraşmamaları konusunda güvenilmezlerse, kötü bir fikirdir.
Joe H.

Ah ... elbette öyle. :-) Fakat OP'nin sorusunun özü bu değildi. OP orada iddia vardır yanlışlıkla bir dosya silme karşı korunmalıdır kök erişimi olan kullanıcıların.
Craig

@Craig: Bu esas sorun olmayabilir, ama bir sorun (XY sorunu?) Önemli noktası ... ama setuid faydalanmak eğer bu yüzden, onlar root olarak ne yaptığını hiçbir fikrim yok ve / veya sınırlı sudo ayrıcalıkları. Ve Jerry'nin, yalnızca istemeden kaldırılmaya karşı korumaya çalıştığından ("ne olursa olsun silmemesini sağlamam gerekiyor") bahsetmediğini gördüğümden, soruyu tekrar okumalısınız. (cevabımı tetikleyen) bakın.
Joe H.


2

Neden tasarımı salt okunur olan bir ISO 9660 görüntüsü oluşturmuyorsunuz?

ISO imgesini takın, bir CD-ROM gibi görünecektir, ancak bir sabit sürücünün performansı ile, takılan resimdeki dosyalar da fiziksel bir CD-ROM'daki dosyalar kadar silinmekten daha güvenli olacaktır.

Hassas dosyayı bir CD'ye yazma ve bir CD-ROM'dan çalıştırma fikri, dosyadaki değişmez bitin ayarlanmasının yeterli olmadığı varsayılarak ilginçtir.

Performans da dahil olmak üzere fiziksel bir CD'den çıkarmanın olası olumsuz sorunları var (CD-ROM sürücüleri, sabit sürücülerden veya SSD'lerden çok daha yavaştır). CD-ROM'un iyi niyetli bir kişi tarafından çıkarılması ve erişmesi gereken farklı bir diskle değiştirilmesi olasılığı vardır. Kötü amaçlı bir partinin sadece diski çıkarması ve bir mikrodalgada (veya çöplükte) fırlatması olasılığı vardır, bu nedenle dosyanızı "siler". Sadece bir dosya ve diğer faktörler için özel bir donanım CD-ROM sürücüsüne sahip olmanın sakıncası var.

Ancak OP, birincil amacın, kötü niyetli eylemlere karşı değil, yanlışlıkla silinmeye karşı korumak olduğunu ve bir kazanın meydana gelmesi durumunda söz konusu dosyaların yedeklendiğini ve kurtarılabileceğini açıkça belirtti. yanlışlıkla silinmesi.

Dosyanın monte edilmiş bir ISO görüntüsünden çalıştırılması gereksinimi karşılar gibi görünüyor.


1
Kök, görüntüyü doğrudan işleyerek hala bir dosyayı silebilir. Bu sadece monte edilecek olan normal bir dosyadır.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Nasıl yani? Tasarım gereği ISO 9660 değişmezdir. Bu değişikliği yapan taraf ISO dosyasının tamamını silmeli ve değiştirmelidir. Bunu yapamadıklarından değil. Ancak o zamanlar bile içeri giremediler ve olağanüstü bir uzmanlık olmadan bir dosyayı cerrahi olarak sildiler. Bir fiziksel CD-ROM'u bir sürücüden çıkarmak ve bir çöp kutusuna atmak çok daha kolay olurdu. ;-)
Craig

Sofistike olmanıza gerek yok - sadece görüntü dosyasının üzerine sıfırlar.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Bu noktayı yeterince kolayca kabul edeceğim. Dikkat, görüntüyü kasıtlı olarak sökmeyi ve üzerine yazmayı gerektireceği yönündedir. Tam bir perp, tam shredo noktada olur. Ancak makineye fiziksel erişimi reddetmediğiniz sürece, fiziksel bir CD'yi sürücüden çıkarmak ve çöp kutusuna atmak, ISO dosyasının bağlantısını kesmek ve üzerine yazmaktan daha kolay görünüyor. Ve OP, önemli dosyanın düzenli aralıklarla yedeklendiğini belirtti, bu nedenle, kötü niyetli yaramazlıklara karşı değil, yalnızca kazara zarara karşı ekstra bir önlem olduğunu belirtti.
Craig,

Bir ISO9660 görüntüsünün nasıl değiştirilebileceği varsayılsa bile nasıl değiştirilebileceğine dikkat çektim. Demek istediğim, biraz yazılabilir ise, root yazabilir.
Thorbjørn Ravn Andersen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.