Come bloccare un file contro la cancellazione ma renderlo comunque scrivibile?


33

Voglio fare un file bloccato contro la cancellazione ma essere comunque scrivibile. Come faccio a fare questo?

Il file in questione è un volume Truecrypt come file su una condivisione di rete SMB NAS, quindi non voglio eliminarlo accidentalmente.


1
Non è possibile. Scrivere zeri equivale a cancellarlo.
soandos,

@soandos - Non sono d'accordo, ho paura. Perché scrivere zero su di esso significa ancora che il file esiste, ma è pieno di zeri. In effetti ci sono comandi Linux per creare un file 'sparse' pieno di zeri.
therobyouknow

Risposte:


34

Per Windows:

  1. Nega l'autorizzazione "Elimina" sul file.
  2. Rimuovere o negare l'autorizzazione "Elimina elementi figlio" nella directory principale.

Per Unix (incluso OS X):

  1. Rimuovere l'autorizzazione "Scrivi" dalla directory principale.

Si noti che ciò impedirà solo che il file venga rimosso (eliminato), ma non farà nulla contro il troncamento accidentale o la sovrascrittura con immondizia. Se un file è scrivibile, puoi scrivere qualsiasi cosa, punto.

Inoltre, le autorizzazioni per i file sono quasi impossibili da tradurre tra i sistemi operativi. Se il NAS esegue Linux e si tenta di impostare le autorizzazioni da Windows, il risultato finale potrebbe essere diverso da quello previsto.


Penso che la migliore risposta che otterrò. +1 e grazie. Sì, il NAS è un Lacie 2big che esegue una versione di Linux su ARM.
therobyouknow,

1
In realtà non è necessario negare l'eliminazione, è sufficiente rimuovere Elimina dalle voci di controllo di accesso (ACE) esistenti. (Negare gli ACE rende le cose più complesse, di solito non è un buon corso a lungo termine.)
Richard

2
@Richard: AFAIK, la rimozione richiede la disabilitazione completa dell'eredità ACL per quel file, il che lo rende ancora più complesso alla fine.
gravità

Sono d'accordo con Grawity. Nega l'autorizzazione Elimina è la strada da percorrere. Se l'autorizzazione di condivisione è impostata su modifica, il rifiuto bloccherà comunque l'eliminazione, mentre lasciandola vuota consentirà l'eliminazione.
surfasb,

26

In Linux è possibile creare un collegamento reale ad esso. Quindi puoi scrivergli ed "eliminarlo", ma rimuoverai solo il riferimento nella tua directory. L'altro collegamento diretto punterà comunque al contenuto del file, quindi non sarà comunque eliminato.

Nel mondo Unix, non "elimini" i file. Basta ridurre il numero di collegamenti fisici ad esso. Quando nient'altro lo indica, lo spazio è considerato libero e può essere utilizzato ...


2
Buona idea. Non so se @Rob può creare hardlink sul suo NAS, ma se è possibile è una soluzione molto intelligente.
CarlF,

1
+1 Potrò farlo in combinazione con la risposta accettata, se possibile. o separatamente se no. +1 per pensare fuori dagli schemi come detto. Tuttavia, la condivisione Linux in questione è un'unità NAS, non sono sicuro di quali servizi della console siano disponibili, è una forma di Linux incorporata o semi-incorporata. +1 comunque, poiché potrebbe aiutare altre persone che hanno un normale desktop o computer Linux che agisce come una condivisione.
therobyouknow,

2
La stessa tecnica dovrebbe funzionare con NTFS.
Rotsor,

+1 RBerteig e +1 CarlF per il supporto della soluzione woliveirajr.
therobyouknow,

12

I backup. Non puoi davvero proteggere un file scrivibile da danni anche se puoi dalla cancellazione. Eseguire il backup ogni giorno.


4
+1. Fallo indipendentemente dalle altre cinture e bretelle applicate.
RBerteig,

+1 CarlF e +1 RBerteig. Completamente d'accordo. Tutti i file sono sottoposti a backup anche su supporti ottici (DVD-R, + R, + R DL e blu-ray 25 gb e dl 50 gb). Potrei anche prendere in considerazione un secondo disco rigido.
therobyouknow,

Dovrei aggiungere, ho i backup dei file all'interno del volume TrueCrypt che è il file contenitore. Non il volume TrueCrypt stesso.
therobyouknow,

0

Oltre alle precedenti risposte, prenderei in considerazione la possibilità di dare un'occhiata a selinux. Lì puoi definire limiti piuttosto granulari.


0

Su un file system di mucca come btrfs è possibile ottenere questo risultato usando sottovolumi + istantanee o cp con --reflink = sempre ciò comporterà effettivamente tutti i file desiderati che consumerebbero la stessa quantità di spazio di uno + alcuni overhead (ma senza un numero folle di copie o istantanee, in particolare combinato con file di dimensioni ridotte, ciò non dovrebbe essere evidente) fino a quando non vengono modificati, nel qual caso solo le parti che sono state modificate vengono memorizzate separatamente e il resto è ancora condiviso. Quindi impostare le autorizzazioni su ciascuna separatamente (per ottenere ciò che si desidera fare semplicemente un'istantanea o copiarla con autorizzazioni di sola lettura (e facoltativamente montarla su ro o non un tutto se è un'istantanea e se è un file usare chattr + i (gli utenti possono scrivere o modificare il file anche se si dispone delle autorizzazioni di scrittura) su una copia se si è paranoici).


0

In UNIX "standard", sembra impossibile proteggere un singolo file dalla cancellazione se la directory è scrivibile. Intuitivamente, ci si potrebbe aspettare che cancellare la protezione w dai bit della modalità con 'chmod' dovrebbe proteggere dall'eliminazione, ma QUESTO NON È IL CASO. Allo stesso modo, in AFS, non è possibile proteggere singoli file dall'eliminazione, poiché le voci ACL (che mancano o negano la relativa "d" permmissione) si applicano solo alla directory nel suo insieme.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.