web-dev-qa-db-fra.com

Linux: comment donner à un utilisateur la permission de redémarrer apache?

J'ai un script exécuté sous un utilisateur non root qui, dans certaines conditions, devrait redémarrer Apache httpd.

Quelle serait la manière la plus simple pour moi de permettre à l'utilisateur de le faire?

J'utilise Ubuntu Server 8.04 LTS.

35
itsadok

Réponse courte:

À l'aide de visudo, ajoutez ce qui suit à votre fichier sudoers, en remplaçant username par le bon nom d'utilisateur:

username ALL = /etc/init.d/Apache2 

Si vous ne souhaitez pas avoir à taper un mot de passe avant cela, 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 arrêter, redémarrer, etc.)

Réponse longue: vous voudrez probablement configurer un utilisateur distinct pour cela si vous ne l'avez pas déjà fait, puis configurer le fichier/etc/sudoers pour permettre à un utilisateur ou à un groupe d'exécuter la commande souhaitée.

Par exemple, pour permettre à l'utilisateur "ben" d'exécuter toutes les commandes en tant que root demandant un mot de passe, vous devez procéder comme suit:

ben ALL= ALL

Pour autoriser 'ben' à exécuter une seule commande (comme disons, rm), vous devez procéder comme suit:

ben ALL= /bin/rm 

Si vous exécutez un script en tant qu'utilisateur et que vous ne souhaitez pas demander 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 
84
epic9x

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.

1
Zayne S Halsall

Vous pouvez également accomplir cela en écrivant un wrapper dans Apache2ctl, en attribuant la propriété du 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 des utilisateurs 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

0
JosiahJohnston