2012-08-14 24 views
41

Me gustaría ejecutar sudo con mi contraseña como parámetro para poder usarla como script. ProbéUse sudo con contraseña como parámetro

sudo -S mypassword execute_command 

pero sin éxito. ¿Alguna sugerencia?

+0

debe comprobar si su secuencia de comandos se ejecuta mediante "raíz". No está de acuerdo con la contraseña, se encontrará en el historial ... – kbdjockey

+0

Es mucho mejor configurar 'sudo' correctamente para que no pida contraseña a ciertos programas/usuarios/grupos para evitar esos hacks sucios. – rush

Respuesta

16
echo -e "YOURPASSWORD\n" | sudo -S yourcommand 
+0

Esto no funciona cuando tengo un argumento para mi comando. por ejemplo. 'echo -e" YOURPASSWORD \ n "| sudo -S "ejecutar -x" '. Dice 'sudo: run -x: command not found'. ¿Alguna idea de como solucionar esto? – Bee

+0

@Bhathiya simplemente no use "comillas", por ejemplo: echo -e "YOURPASSWORD \ n" | sudo -S ls -l/root – matteomattei

+0

Genial, gracias ... – Bee

99

El interruptor -S hace sudo leer la contraseña de STDIN. Esto significa que puede hacer

echo mypassword | sudo -S command 

para pasar la contraseña para sudo

Sin embargo, las sugerencias de los demás que no implican pasar la contraseña como parte de un comando como la comprobación de si el usuario es root son probablemente mucho mejores ideas para razones de seguridad

+0

que funcionó, ¡Muchas gracias! – normalUser

+0

me salvó el día, ¡muchas gracias! – AdrianES

+0

¿Qué le parece ponerlo en una carpeta dedicada que le otorgue a la carpeta y a la carpeta permisos de solo ejecución: 'sudo chmod -R 0100 myScriptFolder'? ¿Eso no resolvería los problemas de seguridad (siempre que nadie use su computadora como root sino usted)? – Shule

34

se puede establecer el bit s para su script para que no necesita sudo y se ejecuta como root (y usted no tiene que escribir la contraseña de root en el guión):

sudo chmod +s myscript 
+0

+1. Esto es mucho mejor (y más seguro) que los otros métodos. – Burkhard

+1

poco pegajosa es una mala práctica, ¿no? – kbdjockey

+0

@kbdjockey - '+ s' es el bit de setuid. '+ t' es el bit adhesivo. –

2

Una opción es usar la bandera -A para sudo. Esto ejecuta un programa para pedir la contraseña. En lugar de preguntar, podrías tener un script que simplemente escuche la contraseña para que el programa pueda continuar.

0
# Make sure only root can run our script 
if [ "$(id -u)" != "0" ]; then 
    echo "This script must be run as root" 1>&2 
    exit 1 
fi 
+0

Esto no responde la pregunta de OP. – codeforester

Cuestiones relacionadas