Est-il possible de donner à sudo un accès uniquement à une commande particulière?


24

Contexte: J'ai une machine de développement avec une configuration LAMP. Plusieurs développeurs accédaient de temps en temps à la machine. Chaque fois qu'ils effectueront des modifications dans un fichier de configuration, ils devront redémarrer le serveur apache en utilisant sudo service apache restartousudo /etc/init.d/apache2 restart

La question:

Ce que je veux maintenant, c'est que chaque développeur qui accède à la machine ne dispose pas d'un accès sudo à tout. Au contraire, il / elle ne devrait pouvoir exécuter la servicecommande qu'en utilisant sudo et rien d'autre. Est-il possible de faire ça?

Réponses:


35

Oui.

Créez un nouveau groupe, Web (appelez-le comme vous le souhaitez)

sudo addgroup web

Ajoutez vos développeurs au groupe Web (utilisez leur nom de connexion).

sudo adduser your_developer_user web

Exécutez ensuite sudo visudo -f /etc/sudoers.d/somefile(utilisez un nom significatif au lieu de somefile).

Ajoutez une ligne (utilisez le chemin complet de la commande):

%web ALL=(ALL) /usr/bin/service apache2 *

Les développeurs peuvent ensuite exécuter

sudo service apache

en utilisant leur mot de passe de connexion.

N'ajoutez PAS votre utilisateur administrateur au groupe Web.

Voir man sudoers pour plus d'informations


1
@Ankit: de cette façon, les utilisateurs du webgroupe peuvent démarrer / arrêter n'importe quel service, et ce n'est pas ce que vous voulez, je pense. La solution devrait être de mettre la commande exacte (également avec des paramètres) dans /etc/sudoers.
enzotib

@enzotib puis-je faire cela pour dire que la nouvelle commande serait /usr/bin/service apache2-elle?
Ankit

3
@Ankit:/usr/bin/service apache2 *
enzotib

Cela devrait aussi être probablement/usr/sbin/service
Erfan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.