web-dev-qa-db-fra.com

Rendre le contrôle de service possible pour un utilisateur particulier à démarrer sans demander de mot de passe sous Ubuntu 16.04

Je souhaite exécuter monit en tant qu’autre utilisateur sous Ubuntu 16.04, mais il demande toujours un mot de passe. Il semble que policykit soit nouveau sur Ubuntu 16.04. Comment pourrais-je mettre ce service dans la liste d'authentification Ignorer?

Mon objectif est que l'utilisateur1 puisse exécuter service monit start et service monit stop sans obtenir d'invite de mot de passe.

L'exécuter en tant que root n'est pas une option

[email protected]:~$ service monit start
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'monit.service'.
Authenticating as: root
Password: 

polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to start monit.service: Access denied
See system logs and 'systemctl status monit.service' for details.
[email protected]:~$ 
[email protected]:~$ systemctl status monit.service 
* monit.service - LSB: service and resource monitoring daemon
   Loaded: loaded (/etc/init.d/monit; bad; vendor preset: enabled)
   Active: active (exited) since Fri 2017-06-30 11:30:51 GMT; 6h ago
     Docs: man:systemd-sysv-generator(8)

Chargé: chargé (/etc/init.d/monit; mauvais; préréglage du fournisseur: activé) <- cette ligne indique qu'il utilise l'ancien fichier init.d au lieu d'un nouveau type de fichier de service. Par conséquent, je ne peux pas simplement modifier le fichier de service et pointez-le vers un utilisateur spécifique.

2
Thomas G. Lau

J'ai trouvé la solution!

Ajouter un fichier, /etc/polkit-1/localauthority/50-local.d/monit.pkla avec ce contenu

[monit service]
Identity=unix-user:user1
Action=org.freedesktop.systemd1.manage-units
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Maintenant, user1 peut commencer à surveiller sans problèmes

3
Thomas G. Lau