Como déjà répondu ce message provient du Gestionnaire d'autorisation Polkit qui est, en termes simples, un moyen pour systemd de contrôler qui peut faire quoi, y compris la gestion des services systemd.
Pour OP, la bonne solution est de configurer le service pour être une au niveau de l'utilisateur service systemd.
Mais en cas de au niveau du système services voici ce que vous devez faire :
Ajoutez une règle pour Polkit qui permettrait à votre utilisateur de gérer le service, comme ceci :
cat > /etc/polkit-1/rules.d/10-some-daemon.rules << POLKIT
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "some-daemon.service" &&
subject.user == "bob") {
return polkit.Result.YES;
}
});
POLKIT
... buuuuuut avec systemd v219 dans Centos 7, action
n'a pas accès à la unit
! Cela a été ajouté dans la v226... Il faudrait donc permettre à l'utilisateur de gérer toutes les unités, ce qui n'est probablement pas ce que vous devriez faire...
Je vous suggère donc de passer au bon vieux sudo
pour permettre à vos utilisateurs de gérer les services, par exemple :
cat > /etc/sudoers.d/some-daemon << SUDO
bob ALL= NOPASSWD: /bin/systemctl restart some-daemon.service
bob ALL= NOPASSWD: /bin/systemctl stop some-daemon.service
bob ALL= NOPASSWD: /bin/systemctl start some-daemon.service
SUDO
Sources principales :
0 votes
À quoi ressemble le fichier de configuration du service ?
0 votes
@JennyD : Où se trouve le fichier de la configuration ?
0 votes
Qu'est-ce que tu veux ? Vous voulez créer votre propre service de copie pour chaque utilisateur ? Par exemple, démarrer un démon VNC pour chaque utilisateur. alice et son propre VNC-daemon pour bob ?
0 votes
@AlexanderT : Chaque utilisateur doit avoir son propre vncserver, c'est comme ça que c'est conçu, donc oui - c'est plus ou moins ça. Bob n'exécute pas un serveur vnc cependant, il exécute quelque chose qui n'a rien à voir, mais quand il essaie de le démarrer, systemctl demande le mot de passe d'Alice... ( shrug ).
0 votes
@JackO'Leary, vous pourriez essayer d'utiliser
systemd --user
comme il décrite dans cet article . Sinon, vous pouvez donner sudo à chaque utilisateur pour les services requis.0 votes
@AlexanderT : L'article que vous avez lié semble assez approfondi, donc j'espère que quelque chose en ressortira. Merci pour les informations supplémentaires !
0 votes
Je pense que ce que le PO cherche est
sudo apt-get remove libpolkit-agent-1-0
.0 votes
Peut-être que ceci peut aider à comprendre un peu plus. Un service peut être configuré pour être exécuté par un utilisateur spécifique (ex :
start-stop-daemon -u alice
). Toutefois, si l'utilisateur n'est pas unsudoer
il faut une autorisation. Même si vous êtes connecté en tant que sudoer (par exemple : bob), le service tente de s'exécuter avec le non-sudoer configuré. Comme solution de contournement, vous pouvez vous exécuter à partir du sudoer, avecsu <non-sudoer>
par exemple :sudo su alice service alices-service status
0 votes
Parce que vous n'avez pas exécuté la commande avec sudo.
0 votes
Pour ceux qui suivent le message d'erreur ici : dans mon cas, j'étais en train de me connecter en ssh à l'ordinateur portable linux où je voulais redémarrer un service et je n'ai même pas réalisé qu'il montrait une invite de mot de passe graphique à mon (même) utilisateur sur cette machine, jusqu'à ce que j'ouvre le couvercle et le voie. Depuis ma session client ssh, il semblait juste qu'il échouait de manière répétée après un "timeout" d'attente de "connexion" (ce qui n'avait aucun sens puisque j'étais déjà connecté par ssh et que je n'essayais pas de me reconnecter) et j'ai obtenu l'erreur ci-dessus dans les journaux, ce qui n'avait aucun sens non plus.