Quería escribir un demonio que los usuarios puedan iniciar y que, cada 2 horas, monta automáticamente un recurso compartido de red autenticado. El demonio le pedirá al usuario la contraseña solo la primera vez, y la mantendrá mlock()
ed entonces.
Mi idea fue llamar de alguna manera al programa linux mount(1)
(notación de página de manual). El protocolo para el montaje (en mi caso samba) solo permite dar la contraseña a través de las opciones de montaje -o
[1]. Sin embargo, pasar la contraseña como parámetro a un script de shell la hace visible en la tabla ps.
Luego, descubrí que hay una llamada al sistema linux mount(2)
que toma los mismos parámetros. ¿Es seguro simplemente pasar la contraseña como texto sin formato a los parámetros de mount(2)
?
Cosas de las que me preocupo:
-
mount(2)
podría implementarse llamando a un proceso donde pasa los argumentos, incluida la contraseña. Esto dejaría la contraseña en la tabla ps. Sin embargo, creo que las llamadas al sistema no lo harán. -
mount(2)
podría tener sus parámetros en una memoria que no seamlock()
ed, por ejemplo. Si el sistema se intercambia, la contraseña de texto sin formato se puede leer en el disco. No sé si se puede intercambiar una memoria de llamadas del sistema, pero como la llamada de montaje solo está activa por un corto tiempo, supongo que no es un problema real. -
mount(2)
podría (tal vez dependiendo del tipo de sistema de archivos) imprimir un error o registrar los mensajes exponiendo sus parámetros. (por ejemplo, en archivos del sistema como/var/log/messages
o la salidadmesg
). Al menos, acabo de probarmount(2)
con el indicadorMS_SILENT
y no encontré ningún registro del sistema, incluso en caso de error.
En definitiva, ¿qué tan segura es mi solución?
Notas: [1] Samba también permite archivos de autenticación de texto sin formato o escribir la contraseña en un aviso, pero no fue útil en mi caso.