Dans un précédent shaarli sur rsyslog, j'ai consigné comment configurer rsyslog pour créer automatiquement une arborescence variable et un nom de journal selon un template genre /var/log/distant/<ANNÉE>/<MOIS>/<JOUR>/bidule/programme.log
.
Par défaut, les dossiers créés par rsyslog ont le mode 0700 (0644 pour les fichiers). Ainsi, un compte utilisateur local non-root ne peut pas parcourir l'arborescence de stockage des journaux.
D'après sa documentation, le module omfile de rsyslog propose un paramètre pour configurer le mode des dossiers créés : « dirCreateMode » (« FileCreateMode » pour les fichiers).
Exemple d'utilisation :
template (name="chemin-prog" type="string" string="/var/log/distant/%$year:::%/%$month:::%/%$day:::%/bidule/programme.log")
if $hostname == 'machine1' then {
action(type="omfile" dynaFile="chemin-prog" dirCreateMode="0755")
stop
}
Une autre façon de faire est de créer un groupe d'utilisateurs dédiés à la consultation des journaux, genre « log » et de configurer rsyslog pour attribuer les dossiers créés à ce groupe.
C'est légèrement plus propre car ça évite de donner un accès en lecture seule aux journaux à tous les comptes utilisateurs de la machine. Mais ça suppose toujours de changer le mode avec lequel les dossiers sont créés (0700 = le groupe n'a pas d'accès non plus).
Le plugin omfile de rsyslog propose les paramètres « dirGroup » / « dirGroupNum » (« fileGroup » / « fileGroupNum » pour les fichiers).
Exemple :
template (name="chemin-prog" type="string" string="/var/log/distant/%$year:::%/%$month:::%/%$day:::%/bidule/programme.log")
if $hostname == 'machine1' then {
action(type="omfile" dynaFile="chemin-prog" dirGroup="log" dirCreateMode="0750")
stop
}
Il est également possible de modifier l'utilisateur propriétaire du journal ou de l'arborescence : « fileOwner », « dirOwner », « fileOwnerNum », « dirOwnerNum ».
Évidemment, ces paramètres du plugin omfile peuvent être utilisés même quand on n'utilise pas de template. ;)