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.
la source
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.
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
username
être limité à un sous-ensemble de paramètres? Disstart
restart
mais nonstop
?visudo
commande effectue des vérifications de sécurité sur vos modifications afin d'éviter de rompre la commandesudo
/su
par accident: unix.stackexchange.com/a/27595/61349Réponse courte: sudo.
L'appel ressemblerait à ceci:
sudo /etc/init.d/apache2 restart
Le plus
visudo
simple consiste à configurer le fichier / etc / sudoers. Voirman sudoers
etman visudo
pour plus de détails.la source
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
la source