El script que escribió no coloca la contraseña en ningún almacenamiento a largo plazo de fácil acceso (como un archivo). Incluso si se habilitara la auditoría típica de Linux (que escribiría todas las invocaciones de programas de Unix en un archivo de registro, incluidos los argumentos), la contraseña no es visible, ya que solo se pasa a través de secuencias. La única excepción es el comando "echo", que es un shell incorporado en bash, por lo que no es una "invocación de programa de Unix".
Si la secuencia de comandos finalizó, la memoria asignada a $PASSWORD
se libera, y si ocurre otro proceso para asignar esa memoria, se borrará antes. Pero la memoria utilizada para "$ PASSWORD" (o las copias realizadas dentro de chpasswd, el echo integrado, la biblioteca de gráficos para mostrar la contraseña) no se limpia necesariamente después de la terminación de ese script. Si por casualidad utiliza una GUI con una ventana de consola, obviamente la contraseña está en la memoria siempre que pueda volver a ella. Dependiendo de la configuración de seguridad en el kernel, los procesos de raíz podrían buscar en la memoria física completa o intercambiar espacio por copias de la contraseña, pero cualquier programa que asigne memoria a través del kernel no encontrará la contraseña allí, porque la memoria se borrará antes de que se entregue para otro proceso.
Si su computadora tiene suficiente memoria, o si la contraseña terminó en el espacio de intercambio, puede que esté disponible durante mucho tiempo después de que finalice el script. Al no tener intercambio (o deshabilitar el intercambio y borrar toda la partición / archivo de intercambio) se evita que la contraseña termine en el archivo de intercambio. Asignar y sobrescribir un montón de memoria puede borrar la contraseña de la memoria, pero es algo peligroso de hacer en Linux, ya que el asesino OOM que se activará al igual que usted puede estar seguro de haber sobrescrito toda la memoria que pueda contener la contraseña podría matar a algunos no relacionados proceso.
Si necesita seguridad contra el raspado de la memoria, la generación de la contraseña tendría que asegurarse de que la contraseña nunca se copie en la memoria no controlada y que la memoria controlada se borre antes de que el programa salga. No hay manera de hacer eso en shell. Creo que ni siquiera es una forma de mostrar una contraseña (aparte de escribirla en la memoria de video) que está 100% garantizada de no copiar la contraseña en una memoria aleatoria.