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

35

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

Quel serait le moyen le plus simple pour moi de permettre à l'utilisateur de le faire?

J'utilise Ubuntu Server 8.04 LTS.

Itsadok
la source

Réponses:

84

Réponse courte:

En utilisant visudo, ajoutez ce qui suit à votre fichier sudoers, en remplaçant le nom d’utilisateur par le nom d’utilisateur approprié:

username ALL = /etc/init.d/apache2 

Si vous souhaitez ne pas avoir à entrer de mot de passe avant cela, utilisez ce qui suit:

username ALL = NOPASSWD: /etc/init.d/apache2 

Après cela, l'utilisateur 'nom d'utilisateur' peut s'exécuter sudo /etc/init.d/apache2 start(ou arrêter, redémarrer, etc.)

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

Par exemple, pour autoriser l'utilisateur 'ben' à exécuter toutes les commandes en tant qu'invite d'un mot de passe root, procédez comme suit:

ben ALL= ALL

Pour permettre à 'ben' d'exécuter une seule commande (comme par exemple, rm), procédez comme suit:

ben ALL= /bin/rm 

Si vous exécutez un script en tant qu'utilisateur et que vous ne voulez 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 suit:

%supportstaff          ALL= NOPASSWD: /bin/commandname 
epic9x
la source
2
Peut usernameêtre limité à un sous-ensemble de paramètres? Dis start restartmais non stop?
ThorSummoner
la visudocommande effectue des vérifications de sécurité sur vos modifications afin d'éviter de rompre la commande sudo/ supar accident: unix.stackexchange.com/a/27595/61349
ThorSummoner
1

Réponse courte: sudo.

L'appel ressemblerait à ceci: sudo /etc/init.d/apache2 restart

Le plus visudosimple consiste à configurer le fichier / etc / sudoers. Voir man sudoerset man visudopour plus de détails.

Zayne S Halsall
la source
OP a expliqué que le script ne lui permettrait pas de saisir un mot de passe et que cette réponse n'aurait aucun sens.
Matt Fletcher
@MattFletcher, sauf si vous utilisez NOPASSWD
Robin Kanters
0

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. Ceci est une solution moins générale que visudo, mais autorise 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

JosiahJohnston
la source