Ubuntu
touch: impossible de toucher `/var/run/test.pid ': autorisation refusée
Je démarre start-stop-daemon et j'aime écrire le fichier PID dans/var/run start-stop-daemon est exécuté en tant que my-program-user
/ var/run est drwxr-xr-x 9 root root
J'aime éviter de placer mon utilisateur de programme dans le groupe racine.
Par défaut, vous ne pouvez écrire dans/var/run qu'en tant qu'utilisateur avec un ID utilisateur effectif de 0 (c'est-à-dire en tant que root). C'est pour de bonnes raisons, donc quoi que vous fassiez, n'allez pas changer les permissions de/var/run ... Au lieu de cela, en tant que root, créez un répertoire sous/var/run:
# mkdir /var/run/mydaemon
Changez ensuite de propriétaire pour l'utilisateur/groupe sous lequel vous souhaitez exécuter votre processus:
# chown myuser:myuser /var/run/mydaemon
Précisez maintenant d'utiliser/var/run/mydaemon plutôt que/var/run.
Vous pouvez toujours tester cela en exécutant un test en tant qu'utilisateur en question.
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon
cela ne fonctionnera pas, car il sera perdu au prochain redémarrage (/var/run
est un tmpfs sur Ubuntu).
La seule solution possible consiste à exécuter mkdir et chmod dans le cadre des scripts de démarrage.
Vous pouvez essayer ça. Créez un répertoire/var/run/test /, puis modifiez l'autorisation de ce répertoire pour le même utilisateur que votre programme s'exécute. "chown/var/run/test /". Maintenant, dans votre application, changez l'emplacement du fichier PID en /var/run/test/test.pid. Cela devrait faire fonctionner les choses pour vous.
Qu'en est-il de l'utilisation du bit "collant" sur/var/run?
chmod + t/var/run?
Gâcher probablement d'autres applications, mais il semble que ce serait une autre solution.
Je vais toutefois continuer de créer un dossier/var/run distinct pour l'instant.
Entrées dans le /etc/permissions
sont permanents. Faites-y une entrée pour rendre permanents la propriété et les autorisations d'un répertoire.