Je voudrais démarrer un service en utilisant un fichier d'unité systemd. Ce service nécessite un mot de passe pour démarrer. Je ne veux pas stocker le mot de passe en clair dans le fichier d'unité systemd, car il est lisible par tout le monde. Je ne veux pas non plus fournir ce mot de passe de manière interactive.
Si j'écrivais un script normal pour cela, je stockerais les informations d'identification dans un fichier appartenant à root avec des autorisations restreintes (400 ou 600), puis lirais le fichier dans le cadre du script. Existe-t-il un moyen particulier de style systemd pour ce faire, ou dois-je simplement suivre le même processus que je le ferais dans un script shell normal?
shell-script
permissions
systemd
password
SauceCode
la source
la source
Réponses:
Il existe deux approches possibles ici, selon vos besoins. Si vous ne souhaitez pas être invité à entrer le mot de passe lorsque le service est activé, utilisez la
EnvironmentFile
directive. Deman systemd.exec
:Si vous ne souhaitez être invité, vous devez utiliser l' une des
systemd-ask-password
directives. Deman systemd-ask-password
:la source
ps ajxewww
) pour que quelqu'un puisse ramasser à partir de là.EnvironmentFile
l'entrée avec un chemin absolu vers un fichier avec 400 autorisations fonctionne bien.Je peux vous proposer une alternative supplémentaire qui peut convenir à vos besoins mais qui nécessite plusieurs conditions préalables:
Les étapes suivantes sont les suivantes:
Utilisez
secret-tool
fromlibsecret
pour enregistrer votre mot de passe. Par exemple:Si votre exécutable prend en charge la lecture du mot de passe à partir d'une variable d'environnement, il vaut mieux:
Si votre exécutable accepte le mot de passe comme argument, vous pouvez toujours l'utiliser
secret-tool
comme ceci:Attention : le mot de passe sera bien visible lors de votre exécution
systemctl --user status myUnit.service
car il montre que l'argument est exécuté sur la ligne de commande. Cela signifie que cela sera également visible pour les utilisateurs exécutanttop
oups -aux
.la source
Il y a une troisième alternative à cela ainsi que la suggestion de @jasonwryan.
extrait de la réponse de Michael Hampton à ServerFault - Comment définir la variable d'environnement dans le service systemd?la source