Pagina 1 di 1

[Risolto] lanciare da script un altro script con sudo senza

Inviato: mercoledì 13 giugno 2018, 15:05
da Dr_Berta
Ciao,
è un pò che mi sto confrontando senza successo con la necessità di far partire come root uno script da uno script principale che lancio come utente semplice ma senza dover mettere la password.
Lo script principale è questo:

Codice: Seleziona tutto

#!/bin/bash
sudo /etc/init.d/eprfid restart
sleep 1
#wmctrl -r ":ACTIVE:" -b toggle,fullscreen
/usr/bin/mysoftware -p /opt/eps02/conf/mysoftware.properties
exit 0
per fare questo ho modificato il file sudoers come segue:

Codice: Seleziona tutto

myuser    ALL=NOPASSWD: /etc/init.d/eprfid /var/run/eprfid.pid
Lo script eprfid deve essere fatto partire con i permessi di root.

Quello che ottengo è che se lancio lo script da remoto (dal mio pc per esempio dopo essere entrato come utente myuser tramite ssh), questo funziona benissimo
Se invece vado sul pc destinazione e lì apro una shell e lancio lo script, mi viene chiesta comunque la password.

Ho guardato un sacco di forum che mi dicono che così dovrebbe andare, ma non è vero.
Ci deve essere qualcos'altro che non va, ma non saprei cosa.
Avete suggerimenti su come posso fare per evitare che anche nella shell sul pc di destinazione mi venga chiesta la password?

Grazie
Claudio

Re: lanciare da script un altro script con sudo senza passwo

Inviato: mercoledì 13 giugno 2018, 16:50
da Dr_Berta
Ciao,
errata corrige: anche da remoto mi richiede la password se esco da ssh e rientro :muro:

Claudio

Re: lanciare da script un altro script con sudo senza passwo

Inviato: mercoledì 13 giugno 2018, 16:54
da rai
posta tutto il codice dello script eprfid

Re: lanciare da script un altro script con sudo senza passwo

Inviato: mercoledì 13 giugno 2018, 18:36
da Dr_Berta
Eccolo

Codice: Seleziona tutto

#!/bin/sh
### BEGIN INIT INFO
# Provides:          eprfid
# Required-Start:    
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Attivazione eprfid
# Description:       Attivazione eprfid
### END INIT INFO

BASEDIR="/opt/eps02"
RF_NAME="eprfid"

RF_LOGFILE="$BASEDIR/spool/$RF_NAME.log"
RF_PIDFILE="/var/run/$RF_NAME.pid"
RF_PROPERTIES="$BASEDIR/conf/$RF_NAME.properties"
EP_RFID="$BASEDIR/bin/$RF_NAME"

do_start(){
        echo "Starting ${RF_NAME}"

        $EP_RFID -p $RF_PROPERTIES &> "$RF_LOGFILE" &
        PID=$!
        RET=$?
#       echo "$PID" > "$RF_PIDFILE"
        pidof $RF_NAME > $RF_PIDFILE

        # Create export dir for GUI        
        EXPORTDIR="$BASEDIR/export"
        if [ ! -d "$EXPORTDIR/pars" ] ; then
                mkdir -p $EXPORTDIR/pars
        fi
        chmod -R 0770 $EXPORTDIR
        chown -R myuser:myuser $EXPORTDIR
}
case "$1" in
        start)
                do_start
                ;;
        stop)
                echo "Stopping ${RF_NAME}"
                if [ -e $RF_PIDFILE ] ; then
                        pid=`cat $RF_PIDFILE`
                        kill -9 $pid
                        rm "$RF_PIDFILE"
                fi
                ;;
        restart)
                $0 stop;
                $0 start;
                ;;
         *)
             echo "Usage: /etc/init.d/eprfid {start|stop|restart}"
             exit 1
             ;;
esac

exit 0
Ciao

Re: lanciare da script un altro script con sudo senza passwo

Inviato: giovedì 14 giugno 2018, 8:59
da Dr_Berta
Eureka, ho risolto.
Girando su altri forum ho trovato che in questi casi il problema sta nello specificare bene nel file sudoers chi necessita del comando sudo.
Nel mio caso non era solo lo script eprfid, ma anche alcuni comandi al suo interno. In questo caso bisogna specificare nel file sudoers anche tutti i comandi che necessitano di sudo.
In definitiva ho dovuto modificare il file sudoers in questo modo:

Codice: Seleziona tutto

myuser    ALL=NOPASSWD: /etc/init.d/eprfid, /etc/init.d/pidof, /etc/init.d/chmod, /etc/init.d/chown, /etc/init.d/kill, /etc/init.d/rm
Infatti questi sono i comandi che necessitano di sudo all'interno dello script eprfid

Spero questo possa essere utile a qualcun'altro
Ciao

Re: [Risolto] lanciare da script un altro script con sudo se

Inviato: giovedì 14 giugno 2018, 10:27
da Filoteo
Fai molta attenzione a usare il file sudoers in questo modo, potresti introdurre falle di sicurezza.

Assicurati che quegli script siano modificabili solo dall'utente root, altrimenti uno modifica il file e si esegue quello che vuole come root.

Stesso per quegli script con chmod e chown. Permettono di modificare i permessi di un qualsiasi file? Se sì potrei copiarmi bash in una cartella qualunque, impostare il SUID bit e eseguirlo come root.

Se gli script possono ricevere input dall'utente assicurati che questi vengano validati dagli script stessi.

Re: [Risolto] lanciare da script un altro script con sudo se

Inviato: sabato 16 giugno 2018, 16:03
da Dr_Berta
Ok faccio subito un double check.
Grazie del suggerimento.

Claudio