Linux: esiste un modo per impedire / proteggere un file dall'eliminazione anche da root?


89

Ho un file molto importante che utilizza un'applicazione nel mio posto di lavoro, devo assicurarmi che non sia cancellato in alcun modo, come posso farlo?

linux  files 

13
Fai un backup, così puoi ripristinarlo ... A parte questo, chattr +ipotrebbe aiutare ma renderà anche il file di sola lettura (e può essere sostituito con chattr -i), inoltre puoi provare a proteggerlo con SELInux ecc.
Sven

43
Il root può creare un processo che nemmeno il root può uccidere?
Mark Gabriel,

4
@MarkGabriel Sì. Una bomba a forcella. :)
reirab


8
L'amministratore HW può venire e rimuovere il disco, distruggerlo, bruciare i resti e inviarli a hoghs. O meglio un programmatore C (++) può indurre alcuni demoni nasali. Qualunque cosa sia importante per te, esegui il backup. Due volte.
Pavel,

Risposte:


133

Sì, è possibile modificare gli attributi del file in sola lettura.

Il comando è:

chattr +i filename

E per disabilitarlo:

chattr -i filename

Da man chattr:

Un file con l' iattributo non può essere modificato: non può essere eliminato o rinominato, non è possibile creare alcun collegamento a questo file e nessun dato può essere scritto nel file. Solo il superutente o un processo che possiede la CAP_LINUX_IMMUTABLEcapacità può impostare o cancellare questo attributo.


11
Per gli interessati, l'equivalente in bsd èchflags schg
Andrew Domaszek,

85
Si noti che un utente con accesso root può annullare l'inserimento di tale flag e quindi eliminare il file. È improbabile che ciò accada per caso, ma non è contro la cancellazione intenzionale.
Concedi il

6
@Grant, non se la SecureLevel è abbastanza alto. Il processo di avvio imposta securelevel su 2 prima che la rete sia abilitata, quindi il ripristino del flag richiede l'accesso al computer locale (ma ciò significa che anche i file utilizzati nel processo di avvio prima di quel momento devono essere immutabili).
Simon Richter,

16
@Grant Se si vuole portarlo all'estremo, non si può impedire che la partizione venga cancellata o che il disco venga messo in una fornace o il decadimento dei protoni in 10 ^ 30 anni ...
Hagen von Eitzen,

2
@Itai Ganot uomo, vorrei averlo letto 4 giorni fa. Ero una domanda in un esame che ho
sostenuto

84

Masterizzalo su un CD. Inserire il CD in un'unità CD-ROM e accedervi da lì.


15
+1 per pensare fuori dagli schemi. E, in alcuni casi, è stato usato anche prima in alcune circostanze (drive cdrom black-box con cd in esso spedito a destinazione). Potrebbe non essere appropriato se qualcuno è in grado di disconnettere l'unità, comunque.
Alex Mazzariol,

1
BACIO Lo adoro! +1
MonkeyZeus

2
Penso che sia la risposta corretta a questa domanda. La modifica dell'attributo del file (chattr -i) non può impedire azioni dannose.
Bruno von Paris,

7
Al giorno d'oggi una scheda SD full-size in un lettore di schede integrato può essere una soluzione migliore: consumo energetico ridotto, accesso più rapido in molti casi e maggiore durata nell'uso senza scrittura.
Chris H,

3
@ jpmc26 quindi unità CD-ROM. Quelli sono di sola lettura.
Thorbjørn Ravn Andersen,

29
  1. Crea un'immagine del file system.
  2. Montare l'immagine.
  3. Copia il file sull'immagine montata.
  4. Smonta l'immagine e rimontala come sola lettura.
  5. Ora non puoi cancellarlo.

Esempio:

# 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

3
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Kaz Wolfe,

3
Prendendo questo un po 'oltre, è possibile utilizzare squashfso cramfsche sono compressi e di sola lettura. Ha bisogno di uno strumento speciale per costruire il filesystem.
Zan Lynx,

7

Linux ha la cosiddetta opzione bind-mount che è piuttosto potente e utile da sapere :

%  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

- ciò che viene fatto qui è il file bind-mount su se stesso (sì, puoi farlo in Linux), quindi viene rimontato in modalità R / O. Naturalmente questo può essere fatto anche nella directory.


6

È inoltre necessario creare più collegamenti fisici al file. Questi dovrebbero essere in varie posizioni a cui gli utenti normali non possono accedere.

In questo modo, anche se riescono a sovrascrivere la tua protezione chattr, i dati rimarranno e potrai facilmente ripristinarli dove la tua applicazione li sta cercando.


11
I collegamenti fissi non proteggeranno il contenuto del file.
200_success

Tuttavia forniranno una protezione aggiuntiva da DELETION, che era la domanda originale.
barbecue,

2
@baramboo Se il file non è collegato al nome a cui un'applicazione lo cerca, non importa che il contenuto del file esista con un altro nome. Per tutto ciò che cerca il file con il nome previsto, il file è ancora stato eliminato.
un CVn

5

Altri hanno risposto alla tua domanda quando l'hai fatta. Come @Sven ha menzionato in un commento, la soluzione generale alla domanda "Come posso assicurarmi di non perdere mai un file?" è creare un backup del file. Crea una copia del file e salvalo in più punti. Inoltre, se il file è estremamente importante e la vostra azienda ha una politica per il backup di dati importanti con un servizio di backup, è possibile che il file sia incluso nel servizio.


2
Bene, ovviamente il backup del file viene eseguito regolarmente, volevo solo un altro livello di protezione contro gli utenti che a volte lavorano sulla scatola con i permessi dell'utente root.

5

Su Linux l' immutabile bandiera è supportata solo su alcuni tipi di file system (la maggior parte di quelli autoctoni come ext4, xfs, btrfs...)

Su filesystem in cui non è supportato, un'altra opzione è quella di legare il file su se stesso in modalità di sola lettura. Questo deve essere fatto in due passaggi:

mount --bind file file
mount -o remount,bind,ro file

Questo deve essere fatto ad ogni avvio, ad esempio tramite /etc/fstab.


Spero che chiunque umountabbia di nuovo il permesso di scrivere
whoan

3

In un commento alla risposta di Kevin , Jerry menziona:

Bene, ovviamente il backup del file viene eseguito regolarmente, volevo solo un altro livello di protezione contro gli utenti che a volte lavorano sulla scatola con i permessi dell'utente root. -

Suppongo che non puoi cambiare questa pratica, dato che è una pessima idea.

Tutti i suggerimenti sull'utilizzo di un dispositivo di sola lettura hanno lo stesso problema: è una PITA per te apportare modifiche legittime quando è necessario. Nel caso di un'unità bloccabile, come una scheda SD, si verifica il problema di essere improvvisamente vulnerabile quando lo si sblocca per apportare le modifiche.

Quello che consiglierei invece è configurare un'altra macchina come server NFS e condividere la directory con i file importanti con le macchine su cui gli utenti hanno root. Condividi il mount in sola lettura, in modo che le macchine con utenti di cui non ti fidi non possano apportare modifiche. Quando è necessario apportare legittimamente modifiche, è possibile connettersi al server NFS e apportare le modifiche lì.

Lo usiamo per i nostri server Web, in modo che un exploit di successo contro il server Web non sia in grado di inserire o modificare i file che il server servirebbe a ripristinare o modificare la configurazione.

Si noti che questo può essere disabilitato allo stesso modo in cui tutti quelli relativi al punto di montaggio possono essere:

  • Crea una copia della directory protetta
  • Smonta la directory
  • Sposta la copia al posto della montatura o collega simbolicamente se quella montatura non ha spazio sufficiente.

Perché è una "cattiva idea" eseguire regolarmente il backup di un file importante e fare uno sforzo per proteggere l'originale dalla cancellazione accidentale? Nella domanda originale del PO e dal commento del PO sulla risposta a cui hai fatto riferimento, è chiaro che la preoccupazione non è un'attività dannosa, ma attività accidentale / incompetente.
Craig,

1
@Craig: è una cattiva idea avere molti utenti con root, specialmente se non si fidano di non fare casini con i file critici.
Joe H.

Ah ... beh certo che lo è. :-) Ma non era questo il punto cruciale della domanda del PO. L'OP ha affermato che ci sono utenti con accesso root che dovrebbero essere protetti dall'eliminazione accidentale di un file.
Craig,

@Craig: potrebbe non essere il punto cruciale della domanda, ma è il punto cruciale del problema (problema XY?) ... ma non ho idea di cosa stiano facendo come root, quindi se potessero usare setuid e / o privilegi sudo limitati. E dovresti rileggere la domanda, poiché non vedo alcuna menzione da parte di Jerry che sta solo cercando di proteggere dalla rimozione involontaria ("Devo assicurarmi che non si cancella affatto"), e ha dato solo un seguito che io vedi (che ha scatenato la mia risposta).
Joe H.


2

Perché non creare un'immagine ISO 9660, che è di sola lettura in base alla progettazione?

Montare l'immagine ISO e sembrerà un CD-ROM, ma con le prestazioni di un disco rigido, i file sull'immagine montata saranno altrettanto sicuri dalla cancellazione dei file su un CD-ROM fisico.

L'idea di masterizzare il file sensibile su un CD ed eseguirlo da un CD-ROM è interessante, supponendo che l'impostazione del bit immutabile sul file non sia considerata sufficiente.

Esistono potenziali problemi negativi nell'esecuzione da un CD fisico, comprese le prestazioni (le unità CD-ROM sono molto, molto più lente rispetto ai dischi rigidi o SSD). È probabile che il CD-ROM venga rimosso da un individuo ben intenzionato e sostituito con un disco diverso al quale devono accedere. C'è la probabilità che una parte malvagia prenda semplicemente il disco e lo lanci in un forno a microonde (o nel cestino), quindi "eliminando" il file. C'è l'inconveniente di dover avere un'unità CD-ROM hardware dedicata solo per quel file e altri fattori.

Ma l'OP ha chiarito che l'intento principale è proteggere dall'eliminazione accidentale, non da azioni dannose, e che i file in questione sono sottoposti a backup e ripristinabili in caso di incidente, ma è altamente auspicabile che il file non venga mai essere cancellato accidentalmente.

Sembra che l'esecuzione del file da un'immagine ISO montata soddisfi i requisiti.


1
La radice può comunque eliminare un file manipolando direttamente l'immagine. È solo un file normale che sembra essere montato.
Thorbjørn Ravn Andersen,

@ ThorbjørnRavnAndersen In che modo? La norma ISO 9660 è immutabile. La parte che apporta tale modifica dovrebbe eliminare e sostituire l'intero file ISO. Non che non potessero farlo. Ma non potevano entrare ed eliminare chirurgicamente un file senza un'enorme competenza, anche se anche allora. Sarebbe molto più semplice rimuovere un CD-ROM fisico da un'unità e gettarlo in un cassonetto. ;-)
Craig,

Non è necessario essere sofisticati: basta sovrascrivere il file di immagine con zeri.
Thorbjørn Ravn Andersen,

@ ThorbjørnRavnAndersen Concedo quel punto abbastanza facilmente. L'avvertenza è che richiederebbe di smontare intenzionalmente l'immagine e di sovrascriverla. Un shredvero criminale sarebbe proprio a quel punto. Ma a meno che non si stia negando l'accesso fisico alla macchina, sembra ancora più semplice estrarre un CD fisico dall'unità e gettarlo nel cassonetto piuttosto che smontare e sovrascrivere il file ISO, anche se uno dei due è facile. E l'OP ha dichiarato che il backup del file importante viene eseguito su base regolare, quindi questa è solo una misura in più contro i danni accidentali, non contro i malizi.
Craig,

Ho indicato come cambiare un'immagine ISO9660 anche se dovrebbe essere immutabile. Il mio punto è che se un po 'è scrivibile, root può scriverlo.
Thorbjørn Ravn Andersen,
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.