È possibile creare un file con autorizzazioni complete per tutti ma impossibile da eliminare?


Risposte:


3

Provare:

chattr +i filename

In questo modo, il file non sarà ripristinabile nemmeno rootdall'utente - utilizzare con cautela.


5
quando lo fa touch test && chattr +i testgenera un errore; chattr: Operation not permitted while setting flags on test. Ne hai bisogno sudo. Accanto a questo: è ancora possibile eliminare il file: sudo chattr -i test && rm testfunziona.
Rinzwind,

23

No, non è possibile. Impossibile per un normale utente eliminare un file: certo.

  1. Avrai bisogno sudo impedire agli utenti di eliminare i file. Il tuo amministratore sarà sempre in grado di eliminare un file.

  2. sudo chattr +i testpuò impedire la cancellazione ma richiede sudo. Un semplice sudo chattr -i testrende possibile rimuovere il file. Nessun altro utente oltre l'amministratore può utilizzarechattr .

E ... semplicemente riavviare e andare in modalità di salvataggio consentirà a quella persona di poter eliminare quel file. Sarebbe un rischio per la sicurezza se esistesse un metodo per non poter mai eliminare un file.


8

È un po 'rozzo, ma è vicino: se rimuovi l'accesso in scrittura dalla directory, i file al suo interno non possono essere eliminati. E non richiede sudose lo possiedi:

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

Quindi puoi impostare le autorizzazioni sul file stesso come preferisci.

Inoltre, come affermato da @Rinzwind, ci sono sicuramente molti modi per aggirarlo.


Sembra esattamente ciò che voleva l'OP. (Anche se il motivo per cui hanno voluto, non sono sicuro.) Gli utenti possono leggere, modificare ed eseguire i file, ma non può unlink (rimozione) di loro.
Eliah Kagan,

8

Per eliminare un file, è necessario disporre dell'autorizzazione di scrittura per tutte le directory a cui è collegato il file. Per scollegarlo da una directory, è necessario il permesso di scrittura per quella directory.

Quindi, fintanto che concedi l'autorizzazione in scrittura (o anche la proprietà) al file ma non alla directory o alle directory a cui è collegato il file, quel file non può essere eliminato.

Il modo migliore per raggiungerlo sarebbe quello di collegare quel file a una directory che è di proprietà di root e che non è scrivibile da nessuno. Potresti invece renderlo di tua proprietà, il che significherebbe che sia tu che root potreste eliminarlo.

Ciò consentirebbe comunque ad altri utenti di collegare quel file ad altre directory e di scollegarlo da lì in seguito, ma non sarebbero comunque in grado di eliminare il file poiché sarebbero in grado di scollegarlo dalla propria directory.

Si noti che affinché funzioni completamente, è necessario controllare l'autorizzazione di scrittura di ogni componente del percorso nel file. Perché, ad esempio, se il file è /a/b/the-filee /a/bnon è possibile scrivere da nessuno, ma tutti hanno accesso in scrittura /a, potrebbero rinominare /a/bqualcos'altro e ricreare il proprio /a/be crearne uno proprio /a/b/the-file.

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.