Jak utworzyć plik, nawet użytkownik root nie może go usunąć

13

Jak utworzyć plik, nawet użytkownik root nie może go usunąć?

Kumar
źródło
9
Podczas gdy odpowiedź Tante powinna obejmować twoje pytanie, jeden meta-komentarz do niego: O wiele łatwiej byłoby odpowiedzieć, jeśli dodałeś uzasadnienie do pytania. Być może istnieje problem obejścia problemu, który nie polega na zapobieganiu usunięciu pliku (ów)?
fschmitt

Odpowiedzi:

33

Prosta odpowiedź: nie możesz, root może zrobić wszystko.

Możesz ustawić atrybut „i” za pomocą chattr (przynajmniej jeśli korzystasz z ext {2,3,4}), co powoduje, że plik jest niezmienny, ale root może po prostu usunąć atrybut i usunąć plik.

Bardziej złożone (i brzydkie hackerskie obejście): Umieść katalog, który chcesz zmienić na root, na zdalnym serwerze i zamontuj go przez NFS lub SMB. Jeśli serwer nie oferuje uprawnień do zapisu, które blokują lokalne konto root. Oczywiście lokalne konto root może po prostu skopiować pliki lokalnie, odmontować zdalne elementy, umieścić kopię w miejscu i to zmienić.

Nie można zablokować roota przed usunięciem plików. Jeśli nie możesz zaufać swojemu rootowi, że pliki pozostaną nienaruszone, masz problem społeczny, a nie techniczny.

tante
źródło
To pytanie zadaje mi ankieter. Nie znam odpowiedzi. Poprosiłem go o odpowiedź. Powiedział, że to możliwe i sam znajdź rozwiązanie.
Kumar
12
pewnego dnia ty też będziesz ankieterem i będziesz mógł zadawać własne bezsensowne pytania: „czy root może utworzyć plik tak duży, że nie może mv?” (który jest kiepskim żartem opartym na teozofii chrześcijańskiej i okropnym żartem, jeśli nie znasz się na polu)
msw
5
@msw: Można argumentować, że to okropny żart, nawet jeśli znasz się na polu.
Matthew Crumley,
@matthew crumley: winny jak oskarżony :)
msw
@msw: Właśnie zauważyłem, że nawet przyznałeś, że był to kiepski żart. I FWIW, lubię (trochę) kiepskich żartów, więc naprawdę mi się podobało. To robi się dość dalekie od tematu :)
Matthew Crumley
34

Połóż to na CD-ROM! ;)

(powinien to być komentarz, ale nie mogę komentować ...)

Laurent
źródło
Limit reputacji komentarzy ma sens ;-) Tylko mały impuls pobudzający do myślenia. bez zamierzonego płomienia ;-)
echox
6
+1 Ale to by działało.
Richard Holloway,
1
To i odpowiedź @mouviciel jest jedynym poprawnym rozwiązaniem. Nawet wszechmocny @root jest nadal związany zasadami określonymi przez sprzęt.
Lie Ryan,
15

Umieść plik w systemie plików tylko do odczytu. Może to być zdalny FS, w którym root nie jest już rootem, CD-ROM lub urządzenie wymienne, które można zabezpieczyć przed zapisem, np. Karta SD.

mouviciel
źródło
2

Dawno temu napisałem łatkę do jądra (do 2.2. Starożytnego), w której próba usunięcia pliku o nazwie SELFDESTRUCT zabiła proces wywoływania. Chroniło to przed przypadkowym „rm -rf *”.

pjc50
źródło
dawno temu i daleko. Jak to zrobiłeś (polecenia)?
Michael Durrant
1

Możesz użyć, chattr +iaby plik stał się niezmienny.

Oczywiście, bystry użytkownik z dostępem do katalogu głównego nadal może użyć chattr -iatrybutu niezmiennego, a następnie usunąć plik, ale może też cofnąć wszelkie inne próby zablokowania dostępu wymienionego tutaj.

Twierdziłbym, że chattr to właściwy sposób na uniksowanie tego.

jeremyjjbrown
źródło