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.
chattr +a
fonctionne pour moi ici (noyau 3.2). Notez que vous devez être root pour utiliserchattr
(une$
invite suggère un non-superutilisateur), bien que vous obtiendrez un message d'erreur différent s'ilchattr +a
était pris en charge et que vous n'étiez pas root.Réponses:
L'
chattr
utilitaire 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êmeFS_IOC_SETFLAGS
ioctl 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_io
utilitaire à la place: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_IMMUTABLE
capacité).la source
Êtes-vous autorisé à le faire? De
man 1 chattr
:la source
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
la source