42 votes

Linux : Comment donner la permission à un utilisateur de redémarrer Apache ?

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.

94voto

epic9x Points 1608

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

1voto

Zayne S Halsall Points 1892

Réponse courte : sudo.

L'appel ressemblerait à ce qui suit : sudo /etc/init.d/apache2 restart

Le plus simple est d'utiliser visudo pour configurer le fichier /etc/sudoers. Voir man sudoers et man visudo pour plus de détails.

0voto

JosiahJohnston Points 1

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

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