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

Installazione, configurazione e uso di programmi e strumenti.
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: domenica 31 luglio 2011, 12:37
Desktop: Gnome + Cairo Dock
Distribuzione: Ubuntu 20.04.x x86_64 LTS
Località: Carpi (MO)

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

Messaggio 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
Ultima modifica di Dr_Berta il giovedì 14 giugno 2018, 9:13, modificato 1 volta in totale.
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: domenica 31 luglio 2011, 12:37
Desktop: Gnome + Cairo Dock
Distribuzione: Ubuntu 20.04.x x86_64 LTS
Località: Carpi (MO)

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

Messaggio da Dr_Berta »

Ciao,
errata corrige: anche da remoto mi richiede la password se esco da ssh e rientro :muro:

Claudio
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2889
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

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

Messaggio da rai »

posta tutto il codice dello script eprfid
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: domenica 31 luglio 2011, 12:37
Desktop: Gnome + Cairo Dock
Distribuzione: Ubuntu 20.04.x x86_64 LTS
Località: Carpi (MO)

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

Messaggio 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
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: domenica 31 luglio 2011, 12:37
Desktop: Gnome + Cairo Dock
Distribuzione: Ubuntu 20.04.x x86_64 LTS
Località: Carpi (MO)

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

Messaggio 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
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
Avatar utente
Filoteo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1343
Iscrizione: venerdì 28 agosto 2015, 9:38
Desktop: Gnome
Distribuzione: Arch Linux

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

Messaggio 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.
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: domenica 31 luglio 2011, 12:37
Desktop: Gnome + Cairo Dock
Distribuzione: Ubuntu 20.04.x x86_64 LTS
Località: Carpi (MO)

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

Messaggio da Dr_Berta »

Ok faccio subito un double check.
Grazie del suggerimento.

Claudio
Ubuntu user #35116. Linux user #550996 - Il cervello è come un paracadute, funziona solo se si apre [Einstein]
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti