51 votes

permettre à un utilisateur d'exécuter les services systemctl/systemd sans mot de passe

Je veux l'utilisateur par défaut, ubuntu pour pouvoir exécuter un service spécifique sans être invité à entrer un mot de passe.

Plus précisément systemctl restart unicorn_my_app.service .

Avoir suivi les instructions aquí pour ajouter un utilisateur ubuntu à un groupe nouvellement créé, LimitedAdmins , ce qui est confirmé par :

$ getent group LimitedAdmins
LimitedAdmins:x:1001:ubuntu

Création d'un nouveau fichier, limitedadmins (en utilisant sudo vim ) dans le /etc/sudoers.d contenant le texte suivant :

%LimitedAdmins ALL=NOPASSWD: /etc/init.d/unicorn_ofn_america restart, /etc/init.d/unicorn_ofn_america start

J'ai également essayé :

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl/unicorn_ofn_america restart, /bin/systemctl/unicorn_ofn_america start

(Et /bin/systemd )

Contenu de /etc/sudoers/ est la valeur par défaut, ce qui a été confirmé par sudo visudo (ou sudo cat /etc/sudoers ) :

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

(Le signe dièse dans #includedir n'est pas un commentaire, mais fait partie de la Syntaxe de la directive #include ).

Cependant, une invite de mot de passe apparaît toujours après l'exécution du programme systemctl restart unicorn_my_app.service

Le service est présent dans les init.d répertoire :

$ ls -l /etc/init.d | grep unicorn
-rwxr--r-- 1 ubuntu ubuntu 1874 Oct 29 06:47 unicorn_my_app

Essai de chmodage 755 sur l'application, mais je ne pense pas que cela devrait faire une différence, puisque ubuntu le possède de toute façon.

J'ai même essayé de redémarrer le système sans résultat. Ai-je oublié une étape, comme un redémarrage/rechargement ?) Ai-je mal configuré quelque chose ?

Je dois également mentionner que j'ai utilisé vim pour créer le nouveau fichier dans /etc/sudoers.d car il semble que le visudo est seulement pour l'édition /etc/sudoers .

MISE À JOUR

Il semble que vous puissiez éditer d'autres fichiers de configuration sudo avec visudo . Voir ci-dessous .

68voto

rosuav Points 795

Le fichier sudoers est assez flexible, ce qui le rend complexe. Ce que vous voulez ici, c'est autoriser l'accès à la commande /bin/systemctl avec des paramètres spécifiques :

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl restart unicorn_my_app.service

En fait, il suffit de prendre la ligne de commande exacte que vous taperiez, de coder en dur le nom du chemin d'accès pour des raisons de sécurité, et de mettre cela dans votre fichier sudoers (ou /etc/sudoers.d ). Et notez que 'start' et 'restart' sont complètement différents en ce qui concerne sudo ; autoriser l'un ne donnera pas accès à l'autre.

4voto

darnold0714 Points 41

Je pensais moi aussi que visudo ne fonctionnait que sur /etc/sudoers mais heureusement, je me suis trompé.

visudo peut être utilisé pour modifier des fichiers existants dans /etc/sudoers.d ou en créer de nouveaux. Le paramètre -f permet de le faire. Si la commande est invoquée comme suit :

visudo -f /etc/sudoers.d/permissions_for_subset_of_users

vous pouvez utiliser les capacités de validation de visudo pour permettre une édition sûre des sudoers.

De plus, si vous utilisez une sorte de CI/CD ou de gestion de configuration, vous pouvez utiliser visudo -cf <name_of_file> pour valider la configuration. (notre principal administrateur système a fourni ce deuxième élément de connaissance).

Référence : https://www.sudo.ws/man/1.8.13/visudo.man.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X