Vraag Linux - Is er een manier om te voorkomen / beschermen dat een bestand zelfs door root wordt verwijderd?


Ik heb een heel belangrijk bestand dat door een toepassing op mijn werk wordt gebruikt, ik moet ervoor zorgen dat het niet wordt verwijderd, hoe kan ik dat doen?


86
2017-12-02 16:02


oorsprong


Maak een back-up, zodat je hem kunt herstellen ... Anders dan dat, chattr +i zou kunnen helpen, maar zal het bestand ook alleen-lezen maken (en kan worden overschreven door chattr -i), ook kunt u proberen het te beschermen met SELInux enz. - Sven♦
Kan root een proces maken dat zelfs root niet kan doden? - Mark Gabriel
@MarkGabriel Ja. Een vorkbom. :) - reirab
God, wortel, wat is verschil? - Dan Neely
De HW-beheerder kan komen en de schijf verwijderen, versnipperen, de resten verbranden en ze naar hoghs voeren. Of, beter gezegd, sommige C (++) programmeurs kunnen sommige nasale demonen induceren. Wat belangrijk voor je is, maak er een back-up van. Tweemaal. - Pavel


antwoorden:


Ja, u kunt de kenmerken van het bestand wijzigen in alleen-lezen.

Het commando is:

chattr +i filename

En om het uit te schakelen:

chattr -i filename

Van man chattr:

Een bestand met de i kenmerk kan niet worden gewijzigd: het kan niet worden verwijderd of hernoemd, er kan geen koppeling naar dit bestand worden gemaakt en er kunnen geen gegevens naar het bestand worden geschreven. Alleen de superuser of een proces dat de CAP_LINUX_IMMUTABLE capability kan dit kenmerk instellen of wissen.


127
2017-12-02 16:04



Voor geïnteresseerden is het bsd-equivalent dat chflags schg - Andrew Domaszek
Houd er rekening mee dat een gebruiker met roottoegang de markering kan uitschakelen en vervolgens het bestand kan verwijderen. Het is onwaarschijnlijk dat dit per ongeluk gebeurt, maar het is niet gericht tegen opzettelijke verwijdering. - Grant
@Grant, niet als het secureLevel is hoog genoeg ingesteld. Het opstartproces stelt het beveiligingsniveau in op 2 voordat het netwerk is ingeschakeld, dus het opnieuw instellen van de vlag vereist lokale machinetoegang (maar dit betekent dat de bestanden die in het opstartproces voor die tijd zijn gebruikt ook onveranderbaar moeten zijn). - Simon Richter
@Grant Als je het tot het uiterste wilt nemen, kun je niet voorkomen dat de partitie wordt verwijderd of dat de schijf in een periode van 10 tot 30 jaar in een oven of protonenverval terechtkomt ... - Hagen von Eitzen
@Itai Ganot man Ik wou dat ik het 4 dagen geleden had gelezen. Ik was een vraag in een examen dat ik deed = / - vfbsilva


Brand het op een CD. Plaats de CD in een CD-ROM-station en open de CD vanaf daar.


80
2017-12-03 15:18



+1 om out of the box te denken. En, afaik, het is ook eerder gebruikt in sommige omstandigheden (black-box cdrom-station met cd erin naar zijn bestemming verzonden). Het is misschien niet gepast als iemand de schijf toch kan loskoppelen. - Alex Mazzariol
KUS. Ik hou ervan! 1 - MonkeyZeus
Ik denk dat dat het juiste antwoord op deze vraag is. Het wijzigen van het bestandskenmerk (chattr -i) kan geen schadelijke acties voorkomen. - Bruno von Paris
Deze dag kan een SD-kaart van volledige grootte in een ingebouwde kaartlezer een betere oplossing zijn - lager stroomverbruik, snellere toegang in veel gevallen en duurzamer bij gebruik zonder schrijven. - Chris H
@ jpmc26 vandaar CD-ROM drive. Die zijn gelezen / alleen. - Thorbjørn Ravn Andersen


  1. Maak een bestandssysteembeeld.
  2. Monteer de afbeelding.
  3. Kopieer het bestand naar de aangekoppelde afbeelding.
  4. Ontkoppel de afbeelding en monteer deze opnieuw als alleen-lezen.
  5. U kunt het nu niet verwijderen.

Voorbeeld:

# 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
Als je dit een beetje verder neemt, kun je gebruiken squashfs of cramfs die gecomprimeerd en alleen-lezen zijn. Het heeft een speciale tool nodig om het bestandssysteem te bouwen. - Zan Lynx


Je zou ook meerdere harde links naar het bestand moeten maken. Deze moeten zich op verschillende locaties bevinden waar gewone gebruikers geen toegang toe hebben.

Op deze manier, zelfs als ze erin slagen om uw chattr-bescherming te negeren, blijven de gegevens behouden en kunt u deze eenvoudig herstellen waar uw toepassing ernaar op zoek is.


6
2017-12-03 05:15



Harde links beschermen de inhoud van het bestand niet. - 200_success
Ze bieden echter extra bescherming tegen DELETION, wat de oorspronkelijke vraag was. - barbecue
@barbecue Als het bestand wordt losgekoppeld bij de naam waarnaar een toepassing ernaar kijkt, maakt het niet uit dat de inhoud van het bestand onder een andere naam staat. Voor alles dat op zoek is naar het bestand met de verwachte naam, is het bestand nog steeds verwijderd. - α CVn


Linux heeft zogezegd binden-mount optie die vrij krachtige en nuttige functie is weten:

%  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

- wat hier wordt gedaan, is het bestand met de bindmount zelf (ja, dat kan in Linux), daarna wordt het opnieuw in R / O-modus gemonteerd. Dit kan natuurlijk ook worden gedaan in de directory.


6
2017-12-06 23:40





Anderen hebben je vraag beantwoord zoals je hem hebt gevraagd. Zoals @Sven in een opmerking vermeldde, de algemene oplossing voor de vraag: "Hoe zorg ik ervoor dat ik nooit een bestand kwijtraak?" is om een ​​back-up van het bestand te maken. Maak een kopie van het bestand en sla het op meerdere plaatsen op. Als het bestand erg belangrijk is en uw bedrijf een beleid heeft voor het maken van back-ups van belangrijke gegevens met een back-upservice, kunt u bovendien kijken of dit bestand is opgenomen in de service.


5
2017-12-03 07:02



Nou, natuurlijk wordt er regelmatig een back-up van het bestand gemaakt, ik wilde gewoon een andere laag van bescherming tegen gebruikers die soms aan de box werken met rootgebruikersrechten.


In een opmerking bij het antwoord van Kevin, Jerry vermeldt:

Nou, natuurlijk wordt er regelmatig een back-up van het bestand gemaakt, ik wilde gewoon een andere laag van bescherming tegen gebruikers die soms aan de box werken met rootgebruikersrechten. -

Ik ga ervan uit dat je deze praktijk niet kunt veranderen, omdat het een heel, heel slecht idee is.

Alle suggesties over het gebruik van een alleen-lezen-apparaat hebben hetzelfde probleem - het maakt het een PITA voor u om legitieme wijzigingen aan te brengen wanneer dat nodig is. In het geval van een afsluitbare schijf, zoals een SD-kaart, kom je het probleem tegen dat je plotseling kwetsbaar bent wanneer je het ontgrendelt om je wijzigingen aan te brengen.

Wat ik zou aanraden is om een ​​andere machine als een NFS-server in te stellen en de map met de belangrijke bestanden te delen met de computer (s) waarop de gebruikers root hebben. Deel de mount als alleen-lezen, zodat de machines met gebruikers die u niet vertrouwt, geen wijzigingen kunnen aanbrengen. Wanneer u legitiem wijzigingen moet aanbrengen, kunt u verbinding maken met de NFS-server en daar onze wijzigingen aanbrengen.

We gebruiken dit voor onze webservers, zodat een succesvolle exploit tegen de webserver niet in staat zal zijn om bestanden in te voegen of te wijzigen die de server vervolgens zou uitdelen of de configuratie te veranderen.

Merk op dat dit op dezelfde manier kan worden overbrugd op dezelfde manier als alle gekoppelde koppelingen kunnen zijn:

  • Maak een kopie van de beschermde map
  • Ontkoppel de map
  • Verplaats de kopie in plaats van de mount, of symboliseer de kopie als die mount niet voldoende ruimte heeft.

3
2017-12-07 13:04



Waarom is het een "echt, heel slecht idee" om regelmatig een belangrijk bestand te back-uppen en ook een poging te doen om het origineel te beschermen tegen onbedoeld wissen? In de oorspronkelijke vraag van het OP, en uit de opmerking van het OP over het antwoord waarnaar u verwijst, is het duidelijk dat de bezorgdheid geen kwaadaardige activiteit is, maar onbedoelde / incompetente activiteit. - Craig
@Craig: het is een slecht idee om veel gebruikers met root te hebben, vooral als ze niet vertrouwd zijn om niet te rommelen met kritieke bestanden. - Joe H.
Ah ... nou ja natuurlijk. :-) Maar dat was niet de kern van de vraag van het OP. Het OP beweerde dat daar zijn gebruikers met root-toegang die moeten worden beschermd tegen het per ongeluk verwijderen van een bestand. - Craig
@Craig: het is misschien niet de kern van de vraag, maar wel is de kern van het probleem (XY-probleem?) ... maar ik heb geen idee wat ze doen als root, dus als ze gebruik zouden kunnen maken van setuid en / of beperkte sudo-privileges. En je zou de vraag opnieuw moeten lezen, want ik zie geen melding van Jerry dat hij alleen probeert te beschermen tegen onbedoelde verwijdering ("ik moet zeker weten dat het helemaal niet is"), en hij gaf slechts één follow-up die ik zie (die mijn reactie heeft geactiveerd). - Joe H.
Zie het antwoord van het OP op dit antwoord - Craig


Op Linux de onveranderlijk flag wordt alleen ondersteund op sommige typen bestandssystemen (de meeste native zoals ext4, xfs, btrfs...)

Op bestandssystemen waar het niet wordt ondersteund, is een andere optie om het bestand zichzelf te binden in de modus alleen-lezen. Dat moet in twee stappen worden gedaan:

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

Dat moet bij elke boot gedaan worden, bijvoorbeeld via /etc/fstab.


3
2017-12-08 16:32



Ik hoop iemand umount het bestand om opnieuw schrijfrechten te krijgen - whoan


Waarom maakt u geen ISO 9660-afbeelding, die alleen-lezen is?

Monteer de ISO-afbeelding en deze ziet er uit als een CD-ROM, maar met de prestaties van een harde schijf, en bestanden op de gemonteerde afbeelding kunnen net zo veilig worden verwijderd als bestanden op een fysieke CD-ROM.

Het idee om het gevoelige bestand op een cd te branden en vanaf een cd-rom te starten is interessant, ervan uitgaande dat het instellen van de onveranderlijke bit op het bestand niet voldoende wordt geacht.

Er zijn mogelijk negatieve problemen met het uitvoeren van een fysieke CD, inclusief prestaties (cd-rom-stations zijn veel langzamer dan harde schijven of SSD's). Het is aannemelijk dat de CD-ROM wordt verwijderd door een goedbedoelende persoon en wordt vervangen door een andere schijf waartoe ze toegang nodig hebben. De kans is groot dat een kwaadwillende partij de schijf gewoon weghaalt en in een magnetron gooit (of de prullenbak), waardoor uw bestand wordt "verwijderd". Er is het ongemak van een speciaal hardware-cd-romstation voor dat ene bestand en andere factoren.

Maar het OP heeft duidelijk gemaakt dat het de primaire bedoeling is om te beschermen tegen onopzettelijke schrapping, niet tegen kwaadwillige handelingen, en dat de betreffende bestanden worden gesteund en kunnen worden hersteld als zich een ongeluk zou voordoen, maar het is zeer wenselijk dat het bestand nooit wordt per ongeluk worden verwijderd.

Het lijkt erop dat het uitvoeren van het bestand van een gekoppeld ISO-image aan de vereiste zou voldoen.


2
2017-12-06 23:03



Root kan een bestand nog steeds verwijderen door de afbeelding rechtstreeks te bewerken. Het is gewoon een normaal bestand dat toevallig wordt gemount. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Hoe dan? ISO 9660 is bij ontwerp onveranderlijk. De partij die die wijziging aanbrengt, zou het volledige ISO-bestand moeten verwijderen en vervangen. Niet dat ze dat niet konden doen. Maar ze konden niet binnengaan en een bestand operatief verwijderen zonder enorme expertise, zelfs toen nog. Het zou veel gemakkelijker zijn om een ​​fysieke CD-ROM uit een station te verwijderen en in een container te gooien. ;-) - Craig
Het is niet nodig om geavanceerd te zijn - overschrijf het afbeeldingsbestand gewoon met nullen. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Ik zal dat punt gemakkelijk genoeg toegeven. Het voorbehoud is dat het opzettelijk verwijderen van het beeld en het overschrijven ervan vereist. Een grondige verachting zou rechtvaardig zijn shred het op dat moment. Maar tenzij u fysieke toegang tot de machine weigert, lijkt het nog eenvoudiger om gewoon een fysieke CD uit de schijf te halen en in de container te gooien, dan om af te stappen en het ISO-bestand te overschrijven, hoewel een van beide gemakkelijk is. En het OP heeft verklaard dat er regelmatig een back-up van het belangrijke bestand wordt gemaakt, dus dit is slechts een extra maatregel tegen onopzettelijke schade, niet tegen kwaadwillend onheil. - Craig
Ik heb erop gewezen hoe een ISO9660-afbeelding kan worden gewijzigd, zelfs als dit onveranderlijk zou zijn. Mijn punt is dat als een bit überhaupt beschrijfbaar is, root het kan schrijven. - Thorbjørn Ravn Andersen