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?
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?
Antworten:
Ja, Sie können die Attribute der Datei in schreibgeschützt ändern.
Der Befehl lautet:
chattr +i filename
Und um es zu deaktivieren:
chattr -i filename
Von man chattr
:
Eine Datei mit dem
i
Attribut 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 dieCAP_LINUX_IMMUTABLE
Fähigkeit verfügt, kann dieses Attribut festlegen oder löschen.
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.
Beispiel:
# 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
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
oder cramfs
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 :
% 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.
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.
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
.
umount
die Datei wieder Schreibrechte bekommt
In einem Kommentar zur Antwort von Kevin erwähnt Jerry:
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:
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.
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.
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.