Risposte:
Utilizzare il find
comando per eseguire in shred
modo ricorsivo:
find <dir> -type f -exec shred {} \;
man shred
.
srm
dalla risposta di @ Cookie tenterà almeno di risolvere questo problema).
-exec shred {} +
per renderlo più veloce poiché shred accetta più argomenti.
Attenzione ai brandelli!
Dalla manpage shred:
ATTENZIONE: Notare che shred si basa su un presupposto molto importante: che il file system sovrascrive i dati in atto. Questo è il modo tradizionale di fare le cose, ma molti progetti di file system moderni non soddisfano questo presupposto. I seguenti sono esempi di file system su cui shred non è efficace o non è garantito che sia efficace in tutte le modalità del file system:
file system strutturati in log o journalizzati, come quelli forniti con AIX e Solaris (e JFS, ReiserFS, XFS, Ext3, ecc.)
file system che scrivono dati ridondanti e continuano anche se alcune scritture falliscono, come i file system basati su RAID
file system che creano snapshot, come il server NFS di Network Appliance
file system che memorizzano nella cache in posizioni temporanee, come client NFS versione 3
file system compressi
Nel caso dei file system ext3, la suddetta dichiarazione di non responsabilità si applica (e quindi la distruzione è di efficacia limitata) solo in modalità data = journal, che registra i dati dei file oltre ai soli metadati. In entrambe le modalità data = ordinato (impostazione predefinita) e data = writeback, lo shred funziona come al solito. Le modalità di journaling Ext3 possono essere modificate aggiungendo l'opzione data = qualcosa alle opzioni di mount per un particolare file system nel file / etc / fstab, come documentato nella pagina man di mount (man mount).
Inoltre, i backup del file system e i mirror remoti possono contenere copie del file che non possono essere rimosse e che consentiranno il recupero di un file ridotto in un secondo momento.
Soluzione: utilizzare un file system crittografato ed eliminare i file.
shred
che la crittografia dei dati impediscono la lettura dei dati da un dispositivo di archiviazione offline (pensate a furto o polizia) con la crittografia dei dati con l'ulteriore vantaggio di proteggere tutti i file, non solo quelli (correttamente) eliminati. Una volta montato il file system, torniamo alle buone autorizzazioni unix in entrambi i casi e la protezione dei dati diventa di nuovo un compito di sicurezza del sistema operativo e corretta amministrazione del sistema. La crittografia iniziale del filesystem non è sicuramente peggiore nel proteggere i dati a riposo dell'uso strategico di shred
!
Utilizzare invece l'eliminazione sicura.
sudo apt-get install secure-delete
srm -r pathname
Fatto. L'eliminazione sicura è molto più paranoica della distruzione, utilizzando 38 passaggi anziché 3. Per eseguire un passaggio singolo rapido, utilizzare
srm -rfll pathname
fll ti offre un generatore di dati meno casuale e un solo passaggio.
find
metodi basati sulla proposta che proveranno anche a cancellare i nomi dei file memorizzati rinominando i file prima di troncarli e scollegarli.
Combinando questa risposta con le opzioni più conosciute per distruggere utilizzando questo link di overflow dello stack " Eliminazione permanente e sicura dei file su CentOS ":
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
Modifica: tenere presente che la risposta migliore per la distruzione di un singolo file impone una sincronizzazione che scrive le modifiche sul supporto prima di eliminare il file perché alcuni o tutti i filesystem con journal hanno un buffer.
Se possibile, il comando find dovrebbe chiamare uno script shell sul file che esegue:
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
su ogni file.
rm -rvf $1
allo script della shell (dove $ 1 è il file / path / to / your / passato {}
dall'espansione nel find... -exec
)
depth
fa qui? Anche incerto sulla
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
Ciò esegue una ricerca approfondita dei file nella directory [dirname], quindi esegue il shred -n1
comando su ciascun file. Quando si rimuovono file e / o directory, l'aggiunta -depth
come predefinita è una buona abitudine, anche se non è strettamente necessaria per questo caso. Quando si esegue questo tipo di comando con rm -rf
invece di shred
, -depth
è necessario assicurarsi che le directory non vengano eliminate prima di tentare di eliminare il contenuto delle directory (causando così errori).
shred -N 1
, perché il default, triturando 3 volte, è l'olio di serpente. Una volta è sufficiente o 30 volte non funzioneranno.
Il shred
metodo più completo che ho trovato, che include anche la rimozione della directory, è di find
chiamare uno script per avere shred
:
Questo metodo gestisce anche correttamente i nomi dei file con spazi all'interno.
Primo: lo shred
script (ho chiamato il mio dirShredder.sh
e l' ho memorizzato nella /root
directory:
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
Quindi, chiama lo script in questo modo:
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
Assicurati di contrassegnare il killit.sh
file eseguibile ( chmod +x
) e ovviamente aggiorna il percorso per la directory che vuoi distruggere e dirShredder.sh
se lo memorizzi altrove.
NOTA BENE - shred
presenta problemi sui filesystem Copy-on-Write (ZFS, BTRFS, et al) e persino sui file system Journaling. Non esiste un modo "migliore" per accettare ciò che ho trovato oltre ai "filesystem crittografati", ma non sono sicuro di quanto sia efficace dopo ciò.
Il più vicino che puoi ottenere è quello di sovrascrivere tutto lo spazio vuoto sull'unità con dati casuali dopo le operazioni di distruzione (non zeri, sembra che questo non sia sempre affidabile). Inoltre, gli SSD possono avere anche altre considerazioni (come TRIM).
Non entrerò in quelli qui, ci sono altre risposte Stack (ad esempio la risposta di @user unknown in questa domanda) e molte discussioni in tutta la rete che coprono questi argomenti, quindi cercali se hai bisogno di quel livello di sicurezza.