Est-il possible de créer un fichier disposant des autorisations complètes pour tout le monde mais impossible à supprimer?


15

Sans utiliser sudo, de préférence?


2
Dieu, racine, quelle est la différence? ars.userfriendly.org/cartoons/?id=19981111 En pratique, un fichier que même root ne pourrait pas supprimer par la suite serait un rêve pour les auteurs de logiciels malveillants.
Dan est en train de jouer par Firelight le

Je suis d'accord que le formatage @DanNeely Plus est aussi une forme de suppression d'un fichier;)
Rinzwind

Réponses:


3

Essayer:

chattr +i filename

Cependant, cela rendra le fichier non supprimable, même par l' rootutilisateur - à utiliser avec prudence.


5
en le faisant, touch test && chattr +i testil 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 testfonctionne.
Rinzwind

23

Non, ce n'est pas possible. Impossible pour les utilisateurs normaux de supprimer un fichier: bien sûr.

  1. Vous devrez sudoempêcher les utilisateurs de supprimer des fichiers. Votre administrateur pourra toujours supprimer un fichier.

  2. sudo chattr +i testpeut empêcher la suppression mais nécessite sudo. Un simple sudo chattr -i testpermet 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.


8

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 sudosi 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.


Cela ressemble exactement à ce que le PO voulait. (Bien que pourquoi ils le voulaient, je ne suis pas sûr.) Les utilisateurs peuvent lire, modifier et exécuter les fichiers, mais ne peuvent pas les dissocier (supprimer).
Eliah Kagan du

8

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-fileet que /a/bpersonne ne peut l'écrire mais que tout le monde y a accès en écriture /a, il peut alors renommer /a/bautre chose et recréer le sien /a/bet y créer le sien /a/b/the-file.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.