J'ai un script qui s'exécute sous un utilisateur non root et qui, dans certaines conditions, devrait redémarrer apache httpd.
Quel serait le moyen le plus simple de permettre à l'utilisateur de le faire ?
J'utilise Ubuntu Server 8.04 LTS.
J'ai un script qui s'exécute sous un utilisateur non root et qui, dans certaines conditions, devrait redémarrer apache httpd.
Quel serait le moyen le plus simple de permettre à l'utilisateur de le faire ?
J'utilise Ubuntu Server 8.04 LTS.
Réponse courte:
En utilisant visudo
, ajoutez ce qui suit à votre fichier sudoers, en remplaçant username par le nom d'utilisateur adéquat :
username ALL = /etc/init.d/apache2
Si vous ne voulez pas avoir à taper un mot de passe avant de le faire, utilisez ce qui suit :
username ALL = NOPASSWD: /etc/init.d/apache2
Après cela, l'utilisateur 'username' peut exécuter sudo /etc/init.d/apache2 start
(ou stop, restart, etc.)
Réponse longue : Il est probable que vous voudrez configurer un utilisateur séparé pour cela si ce n'est pas déjà fait, puis configurer le fichier /etc/sudoers pour permettre à un utilisateur ou à un groupe d'exécuter la commande que vous souhaitez.
Par exemple, pour permettre à l'utilisateur 'ben' d'exécuter toutes les commandes en tant que root en demandant un mot de passe, vous feriez ce qui suit :
ben ALL= ALL
Pour permettre à 'ben' d'exécuter une seule commande (comme par exemple, rm
), vous feriez ce qui suit :
ben ALL= /bin/rm
Si vous exécutez un script en tant qu'utilisateur et ne voulez pas de demande de mot de passe, vous voudrez utiliser l'option 'NOPASSWD' comme ceci :
ben ALL=NOPASSWD: /bin/commandname options
Vous pouvez faire la même chose pour les groupes en préfixant les noms de groupe avec un signe de pourcentage, comme ceci :
%supportstaff ALL= NOPASSWD: /bin/commandname
Vous pouvez également accomplir cela en écrivant un wrapper pour apache2ctl, en attribuant la propriété de groupe à un groupe d'administration web et en définissant le bit suid. Il s'agit d'une solution moins générale que visudo, mais permet des limitations personnalisées sur les capacités de l'utilisateur et la vérification des erreurs.
J'ai écrit cet outil pour mes propres besoins et l'ai partagé sur github : https://github.com/josiahjohnston/ltd_apache2ctl
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.