Sans utiliser sudo, de préférence?
Sans utiliser sudo, de préférence?
Réponses:
Essayer:
chattr +i filename
Cependant, cela rendra le fichier non supprimable, même par l' root
utilisateur - à utiliser avec prudence.
touch test && chattr +i test
il génère une erreur; chattr: Operation not permitted while setting flags on test
. Vous en avez besoin sudo
. À côté de cela: il est toujours possible de supprimer le fichier: sudo chattr -i test && rm test
fonctionne.
Non, ce n'est pas possible. Impossible pour les utilisateurs normaux de supprimer un fichier: bien sûr.
Vous devrez sudo
empêcher les utilisateurs de supprimer des fichiers. Votre administrateur pourra toujours supprimer un fichier.
sudo chattr +i test
peut empêcher la suppression mais nécessite sudo
. Un simple sudo chattr -i test
permet de supprimer le fichier. Aucun autre utilisateur que l'administrateur ne peut utiliser chattr
.
Et ... simplement redémarrer et passer en mode de sauvetage permettra à cette personne de supprimer ce fichier. Ce serait un risque pour la sécurité s'il existait une méthode pour ne jamais pouvoir supprimer un fichier.
C'est un peu grossier, mais c'est proche - si vous supprimez l'accès en écriture sur le répertoire, les fichiers qu'il contient ne peuvent pas être supprimés. Et cela ne nécessite pas sudo
si vous le possédez:
=^_^= 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
Vous pouvez donc définir des autorisations sur le fichier lui-même comme vous le souhaitez.
En outre, comme l'a déclaré @Rinzwind, il existe certainement de nombreuses façons de le contourner.
Pour supprimer un fichier, vous devez disposer d'une autorisation d'écriture sur tous les répertoires auxquels ce fichier est lié. Pour le dissocier d'un répertoire, vous devez disposer d'une autorisation d'écriture sur ce répertoire.
Donc, tant que vous accordez une autorisation d'écriture (ou même la propriété) au fichier mais pas au répertoire ou aux répertoires auxquels ce fichier est lié, ce fichier ne peut pas être supprimé.
La meilleure façon d'y parvenir serait de lier ce fichier à un répertoire qui appartient à root et qui n'est accessible en écriture à personne. Vous pourriez le faire appartenir à vous à la place, ce qui signifierait que vous et root pourriez le supprimer.
Cela permettrait toujours à d'autres utilisateurs de lier ce fichier à d'autres répertoires et de le dissocier de celui-ci par la suite, mais ils ne pourraient toujours pas supprimer le fichier car ils seraient en mesure de le dissocier de votre propre répertoire.
Notez que pour que cela fonctionne pleinement, l'autorisation d'écriture de chaque composant de chemin d'accès au fichier doit être contrôlée. Parce que, par exemple, si le fichier l'est /a/b/the-file
et que /a/b
personne ne peut l'écrire mais que tout le monde y a accès en écriture /a
, il peut alors renommer /a/b
autre chose et recréer le sien /a/b
et y créer le sien /a/b/the-file
.