Recientemente he estado buscando la posibilidad de pasar información confidencial de un proceso a otro (en el momento del inicio del proceso) sin pasarla a través de la línea de comandos o sin usar una entrada del sistema de archivos. Esto en Linux, pero las preguntas también se aplican a otros sistemas.
En particular, la contraseña para acceder a un servidor MySQL pasará de un script al cliente MySQL. Para hacerlo, puede pasarlo por la línea de comando ( -pPASSWORD
), pero esto es desagradable, ya que un simple proceso de proceso revelará la contraseña a todos los interesados. En este caso preciso, el programa cliente de MySQL es lo suficientemente amigable como para sobrescribir el texto de la línea de comandos, reemplazando la cadena de contraseña visible por XXX
pero esta es una solución maloliente.
Pensé en usar el entorno de proceso en su lugar. El script establece la contraseña en el entorno de proceso, el subproceso iniciado puede leerlo desde allí. De hecho, el cliente MySQL lo permite y busca la variable de entorno MYSQL_PWD
. Esto parece bastante seguro y también elegante, ya que un entorno de proceso no puede ser consultado por nadie más que por root y el propietario del proceso, al menos por lo que sé.
Sin embargo, el manual MySQL 5.1 indica:
Este método para especificar su contraseña de MySQL [a través del entorno] debe considerarse extremadamente inseguro y no debe utilizarse. Algunas versiones de
ps
incluyen una opción para mostrar el entorno de los procesos en ejecución. En algunos sistemas, si estableceMYSQL_PWD
, su contraseña estará expuesta a cualquier otro usuario que ejecute ps. Incluso en sistemas sin una versión deps
, no es prudente suponer que no hay otros métodos por los cuales los usuarios puedan examinar los entornos de proceso ".
La pregunta entonces es: ¿Es realmente inseguro pasar datos confidenciales a través del entorno de proceso? ¿Existen sistemas que permitan consultar el entorno de otro proceso sin verificación de permisos? Claramente, el superusuario puede agarrar la contraseña a voluntad, pero nuevamente, no la necesita en primer lugar.