Comment dois-je me connecter depuis un démon Linux Debian non-root?
Question
J'écris un nouveau démon, qui sera hébergé sur Debian Linux.
J'ai constaté que / var / log ne dispose que d'autorisations d'écriture sur les droits racine. Mon démon ne peut donc pas y écrire de fichiers journaux.
Cependant, s'il écrit à cet endroit, il apparaît que la rotation des journaux sera automatiquement effectuée et que l'utilisateur pourra s'y attendre.
Quelle est la méthode recommandée pour qu'un démon écrive les entrées de journal apparaissant dans / var / log, sans avoir à s'exécuter en tant que root?
Le démon est un serveur Web. Le trafic de journalisation sera donc similaire à Apache.
La solution
Vous devez créer un sous-répertoire tel que /var/log/mydaemon
la propriété de l'utilisateur du démon
Autres conseils
En tant qu'utilisateur root, créez un fichier journal à cet emplacement et remplacez le propriétaire des fichiers par l'utilisateur du serveur Web:
# touch /var/log/myserver.log
# chown wwwuser /var/log/myserver.log
Ensuite, le serveur peut écrire dans les fichiers s'il est exécuté en tant qu'utilisateur wwwuser
. Cependant, la rotation des journaux ne sera pas automatique. Vous devez ajouter le fichier journal à /etc/logrotate.conf
ou /etc/logrotate.d/...
et obliger votre serveur à rouvrir le fichier journal lorsque logrotate le signale. devrait.
Vous pouvez également utiliser syslog
pour vous connecter, si cela vous convient mieux.
Deux options:
- Commencez par
root
, ouvrez le fichier, puis supprimez les autorisations avecsetuid
. (Je ne me souviens pas des appels système exacts pour la suppression d'autorisations.) Vous devrez le faire si vous souhaitez vous connecter au port TCP 80 ou à tout port inférieur à 1024. - Créez un sous-répertoire tel que / var / log / mydaemon ayant la propriété de l'utilisateur du démon, comme a déclaré WiseTechi .
Les fichiers sous /var/log
ne sont pas automatiquement pivotés; à la place, la rotation est contrôlée par /etc/logrotate.conf
et les fichiers sous /etc/logrotate.d
.
utilisez le " enregistreur " commande