Linux - Gibt es eine Möglichkeit, das Löschen / Schützen einer Datei auch durch root zu verhindern?
89
Ich habe eine sehr wichtige Datei, die von einer Anwendung an meinem Arbeitsplatz verwendet wird. Ich muss sicherstellen, dass sie nicht gelöscht wird. Wie kann ich das tun?
Erstellen Sie eine Sicherungskopie, damit Sie sie wiederherstellen können ... Ansonsten kann es chattr +ihilfreich sein, die Datei auch schreibgeschützt zu machen (und kann mit überschrieben werden chattr -i). Sie können auch versuchen, sie mit SELInux usw. zu schützen.
Sven
43
Kann root einen Prozess erstellen, den auch root nicht beenden kann?
Der HW-Administrator kann kommen und die Festplatte entfernen, sie zerkleinern, die Reste verbrennen und sie an Hoghs weitergeben. Oder besser gesagt, ein C (++) - Programmierer kann einige Nasendämonen induzieren. Was auch immer für Sie wichtig ist, sichern Sie es. Zweimal.
Pavel
Antworten:
133
Ja, Sie können die Attribute der Datei in schreibgeschützt ändern.
Eine Datei mit dem iAttribut kann nicht geändert werden: Sie kann nicht gelöscht oder umbenannt werden, es kann kein Link zu dieser Datei erstellt werden und es können keine Daten in die Datei geschrieben werden. Nur der Superuser oder ein Prozess, der über die CAP_LINUX_IMMUTABLEFähigkeit verfügt, kann dieses Attribut festlegen oder löschen.
Für die Interessenten ist das BSD-Äquivalentchflags schg
Andrew Domaszek
85
Beachten Sie, dass ein Benutzer mit Root-Zugriff dieses Flag deaktivieren und die Datei anschließend löschen kann. Es ist unwahrscheinlich, dass dies versehentlich passiert, dies schützt jedoch nicht vor absichtlichem Löschen.
Grant
6
@Grant, nicht wenn der Securelevel hoch genug eingestellt ist. Der Startvorgang setzt die Sicherheitsstufe auf 2, bevor das Netzwerk aktiviert wird. Daher erfordert das Zurücksetzen des Flags den Zugriff auf den lokalen Computer (dies bedeutet jedoch, dass Dateien, die vor diesem Zeitpunkt im Startvorgang verwendet wurden, ebenfalls unveränderlich sein müssen).
Simon Richter
16
@Grant Wenn man es extrem nehmen will, kann man nicht verhindern, dass die Partition gelöscht wird oder die Platte in 10 ^ 30 Jahren in einen Ofen gelegt wird oder Protonen zerfallen ...
Hagen von Eitzen
2
@Itai Ganot Mann, ich wünschte, ich hätte es vor 4 Tagen gelesen. Ich war eine Frage in einer Prüfung, an der ich
teilgenommen habe
84
Brennen Sie es auf eine CD. Legen Sie die CD in ein CD-ROM-Laufwerk und greifen Sie von dort aus darauf zu.
+1 für unkonventionelles Denken. Und, afaik, es wurde unter bestimmten Umständen auch schon einmal verwendet (Black-Box-CD-ROM-Laufwerk mit darin enthaltener CD wird an den Bestimmungsort geliefert). Es ist möglicherweise nicht angebracht, wenn jemand das Laufwerk ohnehin trennen kann.
Alex Mazzariol
1
KUSS Ich liebe es! +1
MonkeyZeus
2
Ich denke, das ist die richtige Antwort auf diese Frage. Das Ändern des Dateiattributs (chattr -i) kann schädliche Aktionen nicht verhindern.
Bruno von Paris
7
Heutzutage ist eine SD-Karte in voller Größe in einem integrierten Kartenleser möglicherweise die bessere Lösung - geringerer Stromverbrauch, in vielen Fällen schnellerer Zugriff und längere Lebensdauer bei Verwendung ohne Schreibzugriff.
Chris H
3
@ jpmc26 daher CD-ROM-Laufwerk. Diese sind schreibgeschützt.
Thorbjørn Ravn Andersen
29
Erstellen Sie ein Dateisystem-Image.
Montiere das Bild.
Kopieren Sie die Datei in das bereitgestellte Image.
Hängen Sie das Image aus und stellen Sie es schreibgeschützt wieder ein.
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Kaz Wolfe
3
Wenn Sie dies etwas weiter ausführen, können Sie verwenden, squashfsoder cramfswelche komprimiert und schreibgeschützt sind. Zum Erstellen des Dateisystems ist ein spezielles Tool erforderlich.
Zan Lynx
7
Linux verfügt über eine sogenannte Bind-Mount- Option, die sehr leistungsfähig und nützlich ist, um Folgendes zu wissen :
% 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
- was hier gemacht wird, ist das Binden der Datei an sich selbst (ja, das können Sie unter Linux tun), dann wird sie im R / O-Modus erneut gemountet. Dies kann natürlich auch im Verzeichnis erfolgen.
Sie sollten auch mehrere feste Links zu der Datei erstellen. Diese sollten sich an verschiedenen Orten befinden, auf die normale Benutzer keinen Zugriff haben.
Auf diese Weise bleiben die Daten auch dann erhalten, wenn sie es schaffen, Ihren Chattr-Schutz zu überschreiben, und Sie können sie problemlos dort wiederherstellen, wo Ihre Anwendung sie sucht.
Sie bieten jedoch zusätzlichen Schutz vor DELETION, was die ursprüngliche Frage war.
Barbecue
2
@barbecue Wenn die Verknüpfung der Datei mit dem Namen, nach dem eine Anwendung sucht, aufgehoben ist, ist es unerheblich, dass der Inhalt der Datei unter einem anderen Namen vorhanden ist. Für alle, die nach der Datei mit dem erwarteten Namen suchen, wurde die Datei noch gelöscht.
ein Lebenslauf vom
5
Andere haben Ihre Frage so beantwortet, wie Sie sie gestellt haben. Wie @Sven in einem Kommentar erwähnte, die allgemeine Lösung für die Frage: "Wie stelle ich sicher, dass ich nie eine Datei verliere?" soll ein Backup der Datei erstellen. Erstellen Sie eine Kopie der Datei und speichern Sie sie an mehreren Stellen. Wenn die Datei äußerst wichtig ist und Ihr Unternehmen über eine Richtlinie zum Sichern wichtiger Daten mit einem Sicherungsdienst verfügt, sollten Sie prüfen, ob diese Datei in den Dienst aufgenommen wird.
Natürlich wird die Datei regelmäßig gesichert. Ich wollte nur einen weiteren Schutz vor Benutzern, die manchmal mit Root-Benutzerrechten an der Box arbeiten.
5
Unter Linux die unveränderlich ist Flagge nur auf einige Arten von Dateisystem unterstützt ( die meisten der Einheimischen wie ext4, xfs, btrfs...)
Auf Dateisystemen, auf denen dies nicht unterstützt wird, können Sie die Datei auch im schreibgeschützten Modus über sich selbst binden. Das muss in zwei Schritten erledigt werden:
mount --bind file file
mount -o remount,bind,ro file
Das muss aber bei jedem Booten gemacht werden, zum Beispiel über /etc/fstab.
Natürlich wird die Datei regelmäßig gesichert. Ich wollte nur einen weiteren Schutz vor Benutzern, die manchmal mit Root-Benutzerrechten an der Box arbeiten. -
Ich gehe davon aus, dass Sie diese Praxis nicht ändern können, da es eine sehr, sehr schlechte Idee ist.
Alle Vorschläge zur Verwendung eines Nur-Lese-Geräts haben das gleiche Problem - es ist ein PITA für Sie, wenn Sie legitime Änderungen vornehmen müssen. Bei einem abschließbaren Laufwerk, z. B. einer SD-Karte, tritt das Problem auf, dass Sie plötzlich angreifbar sind, wenn Sie das Laufwerk entsperren, um Ihre Änderungen vorzunehmen.
Ich würde stattdessen empfehlen, einen anderen Computer als NFS-Server einzurichten und das Verzeichnis mit den wichtigen Dateien für die Computer freizugeben, auf denen die Benutzer als Root angemeldet sind. Geben Sie die Bereitstellung als schreibgeschützt frei, sodass die Computer mit Benutzern, denen Sie nicht vertrauen, keine Änderungen vornehmen können. Wenn Sie berechtigte Änderungen vornehmen müssen, können Sie eine Verbindung zum NFS-Server herstellen und dort unsere Änderungen vornehmen.
Wir verwenden dies für unsere Webserver, sodass ein erfolgreicher Exploit gegen den Webserver keine Dateien einfügen oder ändern kann, die der Server dann zurückliefern würde, oder die Konfiguration ändern kann.
Beachten Sie, dass dies auf die gleiche Weise umgangen werden kann wie alle Mount-Point-bezogenen:
Erstellen Sie eine Kopie des geschützten Verzeichnisses
Hängen Sie das Verzeichnis aus
Verschieben Sie die Kopie anstelle des Mounts oder verknüpfen Sie sie mit einem Symbol, wenn dieser Mount nicht über genügend Speicherplatz verfügt.
Warum ist es eine "wirklich, wirklich schlechte Idee", eine wichtige Datei regelmäßig zu sichern und sich auch zu bemühen, das Original vor versehentlichem Löschen zu schützen? In der ursprünglichen Frage des OP und aus dem Kommentar des OP zu der Antwort, auf die Sie verwiesen haben, geht hervor, dass es sich nicht um böswillige, sondern um zufällige / inkompetente Aktivitäten handelt.
Craig
1
@Craig: Es ist eine schlechte Idee, viele Benutzer mit root zu haben, insbesondere wenn ihnen nicht vertraut wird, dass sie sich nicht mit kritischen Dateien anlegen.
Joe H.
Ah ... na klar ist es das. :-) Aber das war nicht der Kern der Frage des OP. Die OP behauptet , dass es sind Benutzer mit Root - Zugriff , die gegen versehentliches Löschen einer Datei geschützt werden soll.
Craig
@Craig: es ist vielleicht nicht der Kern der Frage, aber es ist der Kern des Problems (XY Problem?) ... aber ich habe keine Ahnung , was sie als root tun, so , wenn sie von setuid machen könnten und / oder eingeschränkte Sudo-Rechte. Und Sie sollten die Frage noch einmal durchlesen, da Jerry meines Erachtens nicht erwähnt, dass er nur versucht, sich gegen unbeabsichtigtes Entfernen zu schützen ("ich muss sicherstellen, dass es nicht gelöscht wird"), und er gab nur eine Antwort, die ich gegeben habe sehen (was meine Antwort ausgelöst hat).
Warum nicht ein ISO 9660-Image erstellen, das von Natur aus schreibgeschützt ist?
Hängen Sie das ISO-Image ein, und es sieht aus wie eine CD-ROM, aber mit der Leistung einer Festplatte, und die Dateien auf dem bereitgestellten Image sind vor dem Löschen genauso sicher wie Dateien auf einer physischen CD-ROM.
Die Idee, die vertrauliche Datei auf eine CD zu brennen und von einer CD-ROM auszuführen, ist interessant, vorausgesetzt, dass das Festlegen des unveränderlichen Bits für die Datei nicht ausreichend ist.
Es gibt potenzielle negative Probleme beim Ausführen von einer physischen CD, einschließlich der Leistung (CD-ROM-Laufwerke sind sehr viel langsamer als Festplatten oder SSDs). Es besteht die Möglichkeit, dass die CD-ROM von einer wohlmeinenden Person entfernt und durch eine andere CD ersetzt wird, auf die sie Zugriff haben muss. Es besteht die Wahrscheinlichkeit, dass eine böswillige Partei die Disc einfach herausnimmt und in die Mikrowelle wirft (oder in den Papierkorb) und so Ihre Datei "löscht". Es ist unangenehm, nur für diese eine Datei und andere Faktoren ein dediziertes Hardware-CD-ROM-Laufwerk zu haben.
Das OP hat jedoch klargestellt, dass es in erster Linie darum geht, vor versehentlichem Löschen und nicht vor böswilligen Handlungen zu schützen, und dass die betreffenden Dateien im Falle eines Unfalls gesichert und wiederhergestellt werden können versehentlich gelöscht werden.
Es scheint, dass das Ausführen der Datei von einem bereitgestellten ISO-Image die Anforderung erfüllen würde.
Root kann weiterhin eine Datei löschen, indem Sie das Bild direkt bearbeiten. Es ist nur eine normale Datei, die gerade eingehängt wird.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Wie so? ISO 9660 ist von Haus aus unveränderlich. Die Partei, die diese Änderung vornimmt, muss die gesamte ISO-Datei löschen und ersetzen. Nicht, dass sie das nicht könnten. Aber sie konnten nicht in eine Datei eindringen und sie operativ löschen, wenn auch nicht ohne großes Fachwissen. Es wäre viel einfacher, eine physische CD-ROM aus einem Laufwerk zu entfernen und in einen Papierkorb zu werfen. ;-)
Craig
Sie müssen nicht kompliziert sein - überschreiben Sie einfach die Bilddatei mit Nullen.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Ich werde diesen Punkt leicht genug zugestehen. Die Einschränkung ist, dass das Image absichtlich entfernt und überschrieben werden muss. Ein gründlicher Täter würde genau shreddas zu diesem Zeitpunkt tun . Wenn Sie jedoch nicht den physischen Zugriff auf den Computer verweigern, ist es immer noch einfacher, eine physische CD aus dem Laufwerk zu entnehmen und in den Papierkorb zu werfen, als die ISO-Datei abzumelden und zu überschreiben, auch wenn dies nicht einfach ist. Und das OP hat angegeben, dass die wichtige Datei regelmäßig gesichert wird. Dies ist also nur eine zusätzliche Maßnahme gegen versehentlichen Schaden und nicht gegen böswilligen Unfug.
Craig
Ich habe darauf hingewiesen, wie ein ISO9660-Image geändert werden kann, auch wenn es unveränderlich sein soll. Mein Punkt ist, dass, wenn ein Bit überhaupt beschreibbar ist, root es schreiben kann.
chattr +i
hilfreich sein, die Datei auch schreibgeschützt zu machen (und kann mit überschrieben werdenchattr -i
). Sie können auch versuchen, sie mit SELInux usw. zu schützen.Antworten:
Ja, Sie können die Attribute der Datei in schreibgeschützt ändern.
Der Befehl lautet:
Und um es zu deaktivieren:
Von
man chattr
:quelle
chflags schg
Brennen Sie es auf eine CD. Legen Sie die CD in ein CD-ROM-Laufwerk und greifen Sie von dort aus darauf zu.
quelle
Beispiel:
quelle
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
odercramfs
welche komprimiert und schreibgeschützt sind. Zum Erstellen des Dateisystems ist ein spezielles Tool erforderlich.Linux verfügt über eine sogenannte Bind-Mount- Option, die sehr leistungsfähig und nützlich ist, um Folgendes zu wissen :
- was hier gemacht wird, ist das Binden der Datei an sich selbst (ja, das können Sie unter Linux tun), dann wird sie im R / O-Modus erneut gemountet. Dies kann natürlich auch im Verzeichnis erfolgen.
quelle
Sie sollten auch mehrere feste Links zu der Datei erstellen. Diese sollten sich an verschiedenen Orten befinden, auf die normale Benutzer keinen Zugriff haben.
Auf diese Weise bleiben die Daten auch dann erhalten, wenn sie es schaffen, Ihren Chattr-Schutz zu überschreiben, und Sie können sie problemlos dort wiederherstellen, wo Ihre Anwendung sie sucht.
quelle
Andere haben Ihre Frage so beantwortet, wie Sie sie gestellt haben. Wie @Sven in einem Kommentar erwähnte, die allgemeine Lösung für die Frage: "Wie stelle ich sicher, dass ich nie eine Datei verliere?" soll ein Backup der Datei erstellen. Erstellen Sie eine Kopie der Datei und speichern Sie sie an mehreren Stellen. Wenn die Datei äußerst wichtig ist und Ihr Unternehmen über eine Richtlinie zum Sichern wichtiger Daten mit einem Sicherungsdienst verfügt, sollten Sie prüfen, ob diese Datei in den Dienst aufgenommen wird.
quelle
Unter Linux die unveränderlich ist Flagge nur auf einige Arten von Dateisystem unterstützt ( die meisten der Einheimischen wie
ext4
,xfs
,btrfs
...)Auf Dateisystemen, auf denen dies nicht unterstützt wird, können Sie die Datei auch im schreibgeschützten Modus über sich selbst binden. Das muss in zwei Schritten erledigt werden:
Das muss aber bei jedem Booten gemacht werden, zum Beispiel über
/etc/fstab
.quelle
umount
die Datei wieder Schreibrechte bekommtIn einem Kommentar zur Antwort von Kevin erwähnt Jerry:
Ich gehe davon aus, dass Sie diese Praxis nicht ändern können, da es eine sehr, sehr schlechte Idee ist.
Alle Vorschläge zur Verwendung eines Nur-Lese-Geräts haben das gleiche Problem - es ist ein PITA für Sie, wenn Sie legitime Änderungen vornehmen müssen. Bei einem abschließbaren Laufwerk, z. B. einer SD-Karte, tritt das Problem auf, dass Sie plötzlich angreifbar sind, wenn Sie das Laufwerk entsperren, um Ihre Änderungen vorzunehmen.
Ich würde stattdessen empfehlen, einen anderen Computer als NFS-Server einzurichten und das Verzeichnis mit den wichtigen Dateien für die Computer freizugeben, auf denen die Benutzer als Root angemeldet sind. Geben Sie die Bereitstellung als schreibgeschützt frei, sodass die Computer mit Benutzern, denen Sie nicht vertrauen, keine Änderungen vornehmen können. Wenn Sie berechtigte Änderungen vornehmen müssen, können Sie eine Verbindung zum NFS-Server herstellen und dort unsere Änderungen vornehmen.
Wir verwenden dies für unsere Webserver, sodass ein erfolgreicher Exploit gegen den Webserver keine Dateien einfügen oder ändern kann, die der Server dann zurückliefern würde, oder die Konfiguration ändern kann.
Beachten Sie, dass dies auf die gleiche Weise umgangen werden kann wie alle Mount-Point-bezogenen:
quelle
Warum nicht ein ISO 9660-Image erstellen, das von Natur aus schreibgeschützt ist?
Hängen Sie das ISO-Image ein, und es sieht aus wie eine CD-ROM, aber mit der Leistung einer Festplatte, und die Dateien auf dem bereitgestellten Image sind vor dem Löschen genauso sicher wie Dateien auf einer physischen CD-ROM.
Die Idee, die vertrauliche Datei auf eine CD zu brennen und von einer CD-ROM auszuführen, ist interessant, vorausgesetzt, dass das Festlegen des unveränderlichen Bits für die Datei nicht ausreichend ist.
Es gibt potenzielle negative Probleme beim Ausführen von einer physischen CD, einschließlich der Leistung (CD-ROM-Laufwerke sind sehr viel langsamer als Festplatten oder SSDs). Es besteht die Möglichkeit, dass die CD-ROM von einer wohlmeinenden Person entfernt und durch eine andere CD ersetzt wird, auf die sie Zugriff haben muss. Es besteht die Wahrscheinlichkeit, dass eine böswillige Partei die Disc einfach herausnimmt und in die Mikrowelle wirft (oder in den Papierkorb) und so Ihre Datei "löscht". Es ist unangenehm, nur für diese eine Datei und andere Faktoren ein dediziertes Hardware-CD-ROM-Laufwerk zu haben.
Das OP hat jedoch klargestellt, dass es in erster Linie darum geht, vor versehentlichem Löschen und nicht vor böswilligen Handlungen zu schützen, und dass die betreffenden Dateien im Falle eines Unfalls gesichert und wiederhergestellt werden können versehentlich gelöscht werden.
Es scheint, dass das Ausführen der Datei von einem bereitgestellten ISO-Image die Anforderung erfüllen würde.
quelle
shred
das zu diesem Zeitpunkt tun . Wenn Sie jedoch nicht den physischen Zugriff auf den Computer verweigern, ist es immer noch einfacher, eine physische CD aus dem Laufwerk zu entnehmen und in den Papierkorb zu werfen, als die ISO-Datei abzumelden und zu überschreiben, auch wenn dies nicht einfach ist. Und das OP hat angegeben, dass die wichtige Datei regelmäßig gesichert wird. Dies ist also nur eine zusätzliche Maßnahme gegen versehentlichen Schaden und nicht gegen böswilligen Unfug.