web-dev-qa-db-fra.com

Comment exécuter un fichier unité en tant que service pour tous les utilisateurs

J'essaie de lancer ssh-agent par chaque session SSH pour chaque utilisateur (disons que j'ai userA avec le privilège root et userB avec ces privilages).

Pour ce faire, j'ai créé un fichier unité basé sur cette réponse de débordement de pile

J'ai placé le service sous /etc/systemd/system/run-ssh-agent.service:

[Unit]
Description=SSH key agent

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=/run/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK

[Install]
WantedBy=multi-user.target

J'ai également ajouté AddKeysToAgent yes à /etc/ssh/ssh_config et export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" à /etc/bash.bashrc

ensuite, bien sûr, j'ai redémarré la session.

Le problème: Cette approche fonctionne pour userA mais pas pour userB .

Débogage:

La variable d'environnement: SSH_AUTH_SOCK semble être définie correctement pour l'utilisateurA

$ echo $SSH_AUTH_SOCK
/run/user/1006/ssh-agent.socket

mais pas pour userB, où j'obtiens:

$ echo $SSH_AUTH_SOCK
/ssh-agent.socket

Je suis sur Ubuntu 16.04.3 LTS, 4.4.0-112-generic, OpenSSH_7.2p2

Merci d'avance pour tout indice.

1
user2804070

Bienvenue sur Ask Ubuntu.

Les unités utilisateur à l'échelle de Systemd doivent être placées dans /etc/systemd/user.

Vous les avez placés dans /etc/systemd/system, où ils ne sont exécutés qu'en tant qu'utilisateur root.

0
Mark Stosberg