2010-04-16 115 views
39

Quiero asegurar la ejecución de un programa con una contraseña.¿Cómo hacer el script bash para pedir una contraseña?

¿Cómo hago eso en bash?

+1

votación para cerrar como incierto, por favor especificar cómo desea introducción de la contraseña sea diferente de otros insumos. No se preguntó haciéndose eco en: http://stackoverflow.com/questions/3980668/how-to-get-a-password-from-a-shell-script-without-echoing –

Respuesta

48
stty_orig=`stty -g` # save original terminal setting. 
stty -echo   # turn-off echoing. 
read passwd   # read the password 
stty $stty_orig  # restore terminal setting. 
73

Este comando leerá en var pwd de la entrada estándar (con discapacitados eco):

IFS= read -s -p Password: pwd 

desarmado IFS permitirá espacio inicial y final en las contraseñas (que puede ser soportada en algunos entornos , por lo que es mejor apoyarlo durante la entrada de las credenciales de usuario de su secuencia de comandos)

Para validar espacios en blanco iniciales/finales se maneja adecuadamente puede usar:

echo -n "$pwd" | hexdump -C 

Nota: ¡no use contraseñas reales mientras se vuelque en la consola!

HT: Ron DuPlain para obtener esta información adicional sobre la desconexión de IFS.

+3

¿Hay alguna desventaja si usara esto en lugar de la respuesta aceptada? – Triztian

+7

@Triztian sí, lo anterior probablemente solo funcione en Bash. La respuesta aceptada debería funcionar en la mayoría de las (¿todas?) Conchas. – jberryman

4

Si necesita capturar una contraseña para suministrarla como parámetro a un programa, entonces los consejos sobre unicornios para simplemente apagar el eco son buenos.
Tener un cheque passwd en el guión no funciona - si el usuario puede ejecutar el script bash que también tienen permiso para leer y ver los ficheros de contraseñas.

Si solo desea permitir que las personas con una contraseña ejecuten un programa, la forma segura es crear una nueva cuenta de usuario propietaria del programa y tener una secuencia de comandos que use 'sudo' para ejecutar el programa como ese usuario: pedirá a los usuarios que pasen de forma segura.

+1

Se podría calcular previamente la suma de comprobación de la contraseña y tienda * * que en la secuencia de comandos en lugar del texto en claro y poner a prueba la suma de comprobación de la entrada en contra de eso. Sin embargo, aún puede romperse, pero con menos facilidad. –

+1

En cuyo caso, simplemente copie el script en algún lugar donde tenga permiso de escritura y elimine el cheque. –

Cuestiones relacionadas