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

Installazione, configurazione e uso di programmi e strumenti.

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

Messaggioda Dr_Berta » mercoledì 13 giugno 2018, 15:05

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: 1847
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS

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

Messaggioda Dr_Berta » mercoledì 13 giugno 2018, 16:50

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]
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1847
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS

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

Messaggioda rai » mercoledì 13 giugno 2018, 16:54

posta tutto il codice dello script eprfid
rai
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2081
Iscrizione: maggio 2008
Località: Palermo
Distribuzione: 16.04

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

Messaggioda Dr_Berta » mercoledì 13 giugno 2018, 18:36

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: 1847
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS

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

Messaggioda Dr_Berta » giovedì 14 giugno 2018, 8:59

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
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1847
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS

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

Messaggioda Filoteo » giovedì 14 giugno 2018, 10:27

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.
Filoteo
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 324
Iscrizione: agosto 2015
Desktop: Gnome
Distribuzione: Manjaro Linux

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

Messaggioda Dr_Berta » sabato 16 giugno 2018, 16:03

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]
Avatar utente
Dr_Berta
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1847
Iscrizione: luglio 2011
Località: Carpi (MO)
Desktop: Gnome fb + Cairo dock
Distribuzione: Ubuntu 18.04 x86_64 LTS


Torna a Applicazioni

Chi c’è in linea

Visualizzano questa sezione: daniphone, Ribolux e 16 ospiti