2010-08-30 2 views
10

J'essaie de réaliser un fichier. Chaque événement ajoute juste une ligne au fichier. Jusqu'à présent, c'est une évidence. La partie difficile est que plusieurs utilisateurs sont supposés être en mesure d'ajouter des entrées à ce fichier, mais personne n'est censé pouvoir modifier ou supprimer ceux qui existent déjà. Puis-je en quelque sorte imposer cela en utilisant les droits d'accès au fichier? J'utilise Linux.Ajouter uniquement le fichier

Thx

+0

Je pense que c'est un peu au-delà de 'chmod': o – Aren

+0

lien pertinent: http://unix.stackexchange.com/questions/ 59864/restrict-file-access-to-append-only – nha

Répondre

1

Les autorisations classiques, lecture, écriture et l'exécution ne vous y. Si vous avez une autorisation d'écriture, vous pouvez supprimer le fichier et toutes les lignes qu'il contient.

Vous aurez besoin d'une sorte de programme pour arbitrer l'accès au fichier. L'one-way serait d'ouvrir un fifo et avoir les producteurs écrivent au fifo. Si les écritures ne sont pas trop grandes (les écritures de 4k sont atomiques sur ma boîte de Linux) les différentes écritures ne seront pas mélangées. En faisant en sorte que le processus de consommation ait des privilèges que les producteurs n'ont pas, les producteurs ne pourront pas voir les résultats finaux.

Pour ce faire, vous pouvez utiliser quelque chose comme syslog.

15

Sur linux, vous avez la possibilité d'utiliser le drapeau système append-only. Ce n'est pas disponible sur tous les systèmes de fichiers.

Cet attribut est défini à l'aide de l'utilitaire chattr et vous devez afficher la page de manuel. Seul root peut définir cet attribut.

Sur Ubuntu, vous finirez probablement faire: chattr + sudo un nom de fichier

+0

a essayé de contourner le "append only" en supprimant d'abord le fichier et en le recréant, ce qui était différent (ie tronqué), ce qui était impossible (même si j'avais la propriété du répertoire dans lequel se trouve le fichier), un tel comportement peut-il être confirmé? – humanityANDpeace

Questions connexes