È possibile dare a sudo l'accesso solo a un comando particolare?


24

Sfondo: ho una macchina di sviluppo con installazione LAMPADA. Diversi sviluppatori accedono alla macchina di volta in volta. Ogni volta che apportano alcune modifiche in un file di configurazione, dovranno riavviare il server Apache usando sudo service apache restartosudo /etc/init.d/apache2 restart

La domanda:

Quello che voglio ora è che ogni sviluppatore che accede alla macchina non abbia un accesso sudo a tutto. Piuttosto, dovrebbe essere in grado di eseguire il servicecomando solo con sudo e nient'altro. è possibile farlo?

Risposte:


35

Sì.

Crea un nuovo gruppo, web (chiamalo come desideri)

sudo addgroup web

Aggiungi i tuoi sviluppatori al gruppo web (usa il loro nome di accesso).

sudo adduser your_developer_user web

Quindi eseguire sudo visudo -f /etc/sudoers.d/somefile(utilizzare un nome significativo anziché somefile).

Aggiungi in una riga (usa il percorso completo del comando):

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

Gli sviluppatori possono quindi eseguire

sudo service apache

usando la loro password di accesso.

NON aggiungere il tuo utente amministratore al gruppo Web.

Vedi man sudoers per ulteriori informazioni


1
@Ankit: in questo modo gli utenti del webgruppo possono avviare / interrompere qualsiasi servizio, e questo non è quello che vuoi, penso. La soluzione dovrebbe essere quella di inserire il comando esatto (anche con parametri) /etc/sudoers.
enzotib,

@enzotib posso fare questo per dire che il nuovo comando sarebbe, /usr/bin/service apache2vero?
Ankit,

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

Probabilmente dovrebbe essere anche questo/usr/sbin/service
Erfan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.