Wie kann ich eine Datei gegen Löschen sperren und dennoch beschreibbar machen?

33

Ich möchte eine Datei gegen Löschen sperren, aber dennoch beschreibbar sein. Wie mache ich das?

Bei der fraglichen Datei handelt es sich um ein Truecrypt-Volume als Datei auf einer NAS SMB-Netzwerkfreigabe, sodass ich sie nicht versehentlich löschen möchte.

wie Sie wissen
quelle
1
Es ist nicht möglich. Das Schreiben von Nullen bedeutet das Löschen.
Soandos
@soandos - Ich stimme nicht zu, ich habe Angst. Da das Schreiben von Nullen immer noch bedeutet, dass die Datei existiert, aber voller Nullen ist. In der Tat gibt es Linux-Befehle, um eine 'spärliche' Datei voller Nullen zu erstellen.
Therobyouknow

Antworten:

34

Für Windows:

  1. Verweigern Sie die Berechtigung "Löschen" für die Datei.
  2. Entfernen oder verweigern Sie die Berechtigung "Untergeordnete Elemente löschen" für das übergeordnete Verzeichnis.

Für Unix (einschließlich OS X):

  1. Entfernen Sie die Berechtigung "Schreiben" für das übergeordnete Verzeichnis.

Beachten Sie, dass dies nur das Entfernen (Löschen) der Datei verhindert, aber nichts gegen versehentliches Abschneiden oder Überschreiben mit Müll unternimmt. Wenn eine Datei beschreibbar ist, können Sie sie beliebig beschreiben.

Außerdem können Dateiberechtigungen kaum zwischen Betriebssystemen übersetzt werden. Wenn auf dem NAS Linux ausgeführt wird und Sie versuchen, Berechtigungen in Windows festzulegen, kann das Endergebnis von Ihren Erwartungen abweichen.

Grawity
quelle
Beste Antwort, die ich bekommen werde, denke ich. +1 und danke. Ja, der NAS ist ein Lacie 2big, auf dem eine Linux-Version auf ARM ausgeführt wird.
Therobyouknow
1
Sie müssen das Löschen nicht verweigern, sondern nur Löschen aus vorhandenen Zugriffskontrolleinträgen (ACEs) entfernen. (Verweigern Sie ACEs, um die Dinge komplexer zu machen, was auf längere Sicht normalerweise kein guter Kurs ist.)
Richard,
2
@ Richard: AFAIK, erfordert das Entfernen vollständig deaktivieren ACL - Vererbung für diese Datei, die es macht sogar mehr Komplex am Ende.
Grawity
Ich stimme Grawity zu. Die Berechtigung Löschen verweigern ist der richtige Weg. Wenn die Freigabeberechtigung ändern gesetzt, so verweigert das wird immer noch um das Löschen blockieren, während es leer lassen werden Deletionen ermöglichen.
Surfasb
26

Unter Linux können Sie eine feste Verknüpfung erstellen. Dann können Sie darauf schreiben und es "löschen", aber Sie werden nur den Verweis in Ihrem Verzeichnis entfernen. Der andere Hardlink verweist weiterhin auf den Inhalt der Datei, sodass diese ohnehin nicht gelöscht wurde.

In der Unix-Welt werden keine Dateien "gelöscht". Sie verringern nur die Anzahl der festen Links. Wenn nichts anderes darauf hindeutet, gilt der Speicherplatz als frei und kann genutzt werden ...

woliveirajr
quelle
2
Gute Idee. Ich weiß nicht, ob @Rob Hardlinks auf seinem NAS erstellen kann, aber wenn er das kann, ist das eine sehr clevere Lösung.
CarlF
1
+1 Ich könnte das in Kombination mit der akzeptierten Antwort, wenn möglich. oder separat wenn nicht. +1 für das Denken außerhalb der Box wie gesagt. Bei der fraglichen Linux-Freigabe handelt es sich jedoch um ein NAS-Laufwerk, das nicht sicher ist, welche Konsolenfunktionen verfügbar sind. Es handelt sich um eine eingebettete oder halb eingebettete Form von Linux. +1 trotzdem, da es anderen Leuten helfen könnte, die einen normalen Linux-Desktop oder einen Computer als Freigabe haben.
Therobyouknow
2
Die gleiche Technik sollte mit NTFS funktionieren.
Rotsor
+1 RBerteig und +1 CarlF für die Unterstützung der woliveirajr-Lösung.
Therobyouknow
12

Backups. Sie können eine beschreibbare Datei nicht wirklich vor Beschädigung schützen, selbst wenn Sie dies vor dem Löschen tun können. Täglich sichern.

CarlF
quelle
4
+1. Tun Sie dies unabhängig davon, welche anderen Gurte und Hosenträger verwendet werden.
RBerteig
+1 CarlF und +1 RBerteig. Stimme voll und ganz zu. Die Dateien werden alle auch auf optischen Medien gesichert (DVD-R, + R, + R DL und Blu-ray 25 GB und DL 50 GB). Ich kann auch eine zweite Festplatte in Betracht ziehen.
Therobyouknow
Ich sollte hinzufügen, ich habe Backups der Dateien innerhalb des TrueCrypt-Volumes, das die Containerdatei ist. Nicht das TrueCrypt-Volume selbst.
Therobyouknow
0

Zusätzlich zu den vorherigen Antworten würde ich einen Blick auf Selinux werfen. Dort können Sie ziemlich granulare Einschränkungen definieren.

Niels Basjes
quelle
0

Auf einem Kuh - Dateisystem wie btrfs können Sie dies erreichen, indem Sie Subvolumes + Snapshots oder cp mit --reflink = verwenden. Dies führt effektiv zu so vielen Dateien, wie Sie möchten, was dieselbe Menge an Speicherplatz wie eine + etwas Overhead verbrauchen würde (aber Ohne eine irrsinnige Anzahl von Kopien oder Schnappschüssen, insbesondere in Kombination mit winzigen Dateigrößen, sollte dies nicht auffallen, bis sie geändert werden. In diesem Fall werden nur die Teile, die geändert wurden, separat gespeichert und der Rest wird weiterhin geteilt. Legen Sie dann die Berechtigungen für jede Datei separat fest (um die gewünschten Ergebnisse regelmäßig zu erzielen, erstellen Sie einen Snapshot oder kopieren Sie ihn mit Leseberechtigungen) und hängen Sie ihn wahlweise mit ro oder not a all ein, wenn es sich um einen Snapshot handelt und wenn es sich um eine Datei handelt schreibe oder ändere die Datei nicht, auch nicht, wenn du Schreibrechte für eine Kopie hast, wenn du paranoid bist.

orange_juice6000
quelle
0

Unter "Standard" -UNIX scheint es unmöglich zu sein, eine einzelne Datei vor dem Löschen zu schützen, wenn das Verzeichnis schreibbar ist. Intuitiv könnte man erwarten, dass das Löschen des w-Schutzes von den Modusbits mit 'chmod' vor dem Löschen schützen sollte, aber DAS IST NICHT DER FALL. Ebenso können Sie in AFS einzelne Dateien nicht vor dem Löschen schützen, da ACL-Einträge (denen die entsprechende Berechtigung 'd' fehlt oder verweigert wird) nur für das gesamte Verzeichnis gelten.

Klaus Engelhardt
quelle