2015-04-29 18 views
5

Ho creato un utente denominato samX con privilegio di root (sono stati aggiunti "samX ALL = (TUTTI: TUTTI) TUTTI" in visudo).Come posso applicare la password a sudo in un comando di riga ed eseguire su root?

Sto tentando di applicare la password a sudo, quindi su root ed eseguire whoami in sequenza in un comando di riga. Il mio attuale comando è un po 'come segue, ma si lamenta di errore: sudo: su root; whoami: command not found

echo 'CbEYKFKt' | sudo -S 'su root; whoami' 

In cui, 'CbEYKFKt' è la password per l'utente samX.

Esiste comunque una soluzione per risolvere questo problema? Molte grazie.

+0

Non passarei la password tramite stdin. Invece consentirei all'utente di eseguire i comandi necessari tramite sudo senza password. È possibile configurarlo in '/ etc/sudoers' – hek2mgl

risposta

2
echo 'CbEYKFKt' | sudo -S su -c whoami 

dovrebbe funzionare - -c specifica un comando per su, mentre nel tuo esempio ti sembra di essere in esecuzione una radice comando'; whoami 'che non esiste - non esiste una shell per suddividerla in due comandi separati.

+0

per quanto riguarda questo comando:' echo 'CbEYKFKt' | sudo -S su -c /etc/init.d/iptables -L -vn', lamenta ** su: opzione non valida - 'L' **. – Judking

+0

Ho trovato che le citazioni risolveranno bene. Grazie ancora! – Judking

+0

grazie. ha funzionato perfettamente e ha risolto il mio problema – Nani

4

Si dovrebbe davvero aggiungere una riga al tuo sudoers file come

samX ALL=(ALL:ALL) NOPASSWD: /sbin/su 

invece di salvare la password nella storia bash o qualsiasi altro file. Con questo, non è necessario inserire la password.

Se si desidera eseguire un comando diverso, aggiungerlo.

+0

Come puoi vedere, la mia versione include la tua versione, quindi non ho bisogno di fornire la password di root, è necessaria solo la password di samX. – Judking

+0

@Judking con questa linea, non è nemmeno necessario fornire la password di samX. – martin

+0

Lo farò sparare! Grazie!! – Judking

0

Invece di mettere tutti i comandi in una sola riga, è possibile scrivere i codici normalmente viene suddiviso in diverse linee:

#!/bin/bash 
echo "CbEYKFKt" | sudo -S echo && sudo -s <<EOF 
#put your code here 
#All codes will be executed as sudo 
EOF 

Nota: passando la password del genere è una cattiva idea.

0

Questo dovrebbe funzionare.

echo CbEYKFKt | sudo -S; whoami 
Problemi correlati