Restreindre l'accès aux fichiers à l'ajout uniquement


11

J'ai un répertoire avec des fichiers journaux et je mets des journaux à partir du script lancé par les utilisateurs. La journalisation avec syslog ne semble pas possible dans ce cas. (rsync non démon)

Je souhaite que les utilisateurs n'aient que des autorisations d'écriture sur les fichiers journaux. Le problème est que les autorisations d'écriture doivent être davantage restreintes, de sorte que les utilisateurs (script) ne peuvent que s'ajouter à ces fichiers. Le système de fichiers sous-jacent est XFS.

Ce qui suit ne fonctionne pas:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

Y a-t-il une autre solution pour cela? Merci pour vos conseils.


Êtes-vous sûr que c'est XFS? chattr +afonctionne pour moi ici (noyau 3.2). Notez que vous devez être root pour utiliser chattr(une $invite suggère un non-superutilisateur), bien que vous obtiendrez un message d'erreur différent s'il chattr +aétait pris en charge et que vous n'étiez pas root.
Stéphane Chazelas


Quelles sont les options de montage sur la partition? Il pourrait éventuellement le stocker en utilisant xattr, qui pourrait avoir besoin de l'option de montage appropriée? (La documentation pour XFS n'en parle pas beaucoup non plus ...)
Gert van den Berg

Ceci a fermé sur SF, donc je le laisse ouvert ici
Michael Mrozek

Réponses:


8

L' chattrutilitaire est écrit pour les systèmes de fichiers ext2 / ext3 / ext4. Il émet des ioctls sur les fichiers, c'est donc au système de fichiers sous-jacent de décider quoi en faire. Le pilote XFS dans les noyaux Linux plus récents prend en charge le même FS_IOC_SETFLAGSioctl que ext [234] pour contrôler les indicateurs tels que l'ajout uniquement, mais vous pouvez exécuter un noyau plus ancien où il ne le fait pas (CentOS?). Essayez d'utiliser l' xfs_ioutilitaire à la place:

echo chattr +a | xfs_io test.log

Notez que, pour XFS comme pour ext [234], seul root peut changer l'indicateur d'ajout uniquement (plus précisément, vous avez besoin de la CAP_LINUX_IMMUTABLEcapacité).


1

Êtes-vous autorisé à le faire? De man 1 chattr:

Un fichier avec l'attribut `a 'ne peut être ouvert qu'en mode ajout pour l'écriture. Seul le superutilisateur ou un processus possédant la capacité CAP_LINUX_IMMUTABLE peut définir ou effacer cet attribut.


0

Alternativement, vous pouvez obtenir le même résultat en utilisant SELinux , il est probable qu'il soit activé et fonctionne si vous utilisez une distribution compatible avec Red Hat. Cela fonctionne sur tous les systèmes de fichiers, SELinux empêche les processus d'effectuer des opérations non autorisées.

Malheureusement, vous devez rédiger une stratégie pour votre application pour autoriser l'accès à toutes les ressources système, à l'exception de l'ajout à des fichiers particuliers. Cela peut être un peu difficile si vous le faites pour la première fois, mais il y a un avantage à cela - une couche de sécurité supplémentaire.

J'ai un exemple de la façon d'écrire une règle de fichier à ajouter uniquement dans cette présentation: https://www.youtube.com/watch?v=zQcYXJkwTns

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.