Si un programme nécessite une autorisation d'écriture, comment dois-je le définir avec chown? Plus précisément, quelles seraient les autorisations de foo pour résoudre cette erreur?
failed to create pid file '/var/run/bar.pid': Permission denied
permissions
el_pup_le
la source
la source
/var/run
Approche générale: déterminer l'utilisateur et le groupe du processus essayant d'accéder au fichier. Ceci est souvent trouvé dans la configuration du logiciel (tels que les serveurs Web / mailservers / ...), mais si le logiciel est déjà utilisé en cours d'exécution ceci:
Recherchez le processus pour lequel vous souhaitez configurer les droits d'accès. La première colonne vous indique dans les noms d'utilisateur, il est en cours d'exécution.
Cela vous indiquera à quels groupes appartient l'utilisateur.
Modifiez le propriétaire ou le groupe du fichier pour qu'il corresponde au service.
Remarque 1: Comme la question souligne que le fichier se trouve dans / var / run / je suppose qu'un seul processus a besoin d'accès, si ce n'est pas vrai, vous ne devriez pas changer de propriétaire ou de groupe, mais vous pourriez envisager d'ajouter le processus 'utilisateur au groupe ou en créant un nouveau groupe pour ce fichier / dossier.
Remarque 2: des choses amusantes peuvent se produire avec apparmor, qui est un système de sécurité: il peut empêcher les processus d'écrire dans des fichiers et des dossiers sur lesquels ils ont (au niveau du système de fichiers) tous les droits nécessaires. Avec
aa-status
vous pouvez voir si une règle spécifique pour votre service est actif.la source
Ce que je n'est d'ajouter simplement la création d'un dossier juste avant le start-stop-daemon est exécuté. Cela fonctionne parce que le script est généralement exécuté en tant que root lors du démarrage. Il crée simplement le dossier dans / var / run et change immédiatement le propriétaire, donc un PID peut être écrit.
Dans l'exemple ci-dessous, je vérifie l'existence du sous-dossier de / var / run où je mets les PID en tant qu'utilisateur courant, dans ce cas, l'utilisateur 'pi' (puisque je suis sur une framboise).
Vérifiez aussi ce lien , car il a été très instructif pour moi: script Python pour fonctionner comme service , il n'a toutefois pas le problème couverture discuté ici.
Exemple de partie de mon script shell:
la source