Senza usare sudo, preferibilmente?
Senza usare sudo, preferibilmente?
Risposte:
Provare:
chattr +i filename
In questo modo, il file non sarà ripristinabile nemmeno root
dall'utente - utilizzare con cautela.
touch test && chattr +i test
genera 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 test
funziona.
No, non è possibile. Impossibile per un normale utente eliminare un file: certo.
Avrai bisogno sudo
impedire agli utenti di eliminare i file. Il tuo amministratore sarà sempre in grado di eliminare un file.
sudo chattr +i test
può impedire la cancellazione ma richiede sudo
. Un semplice sudo chattr -i test
rende 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.
È 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 sudo
se 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.
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-file
e /a/b
non è possibile scrivere da nessuno, ma tutti hanno accesso in scrittura /a
, potrebbero rinominare /a/b
qualcos'altro e ricreare il proprio /a/b
e crearne uno proprio /a/b/the-file
.