¿Es seguro escribir en / dev / null?

2

Estoy trabajando en un proyecto criptográfico basado en servicio web en JAVA. La idea básica es que el cliente envíe una solicitud SOAP a un servlet para cifrar los datos. Para la transmisión de datos estoy usando MIME / data-handlers y noté que MIME almacena los datos que se transmiten en un archivo temporal si el tamaño es mayor que una cantidad determinada. A pesar de que este archivo será recolectado como basura, preferiría que no esté en mi sistema. Por lo tanto, he estado escribiendo este archivo temporal en / dev / null. Como esto es solo un proyecto, no es el fin del mundo si alguien todavía pudiera leer el archivo temporal, pero me hizo pensar en un entorno de producción donde este podría ser un gran problema.

¿Es seguro y seguro escribir en / dev / null? ¿Es lo mismo que no escribir el archivo en absoluto? ¿Podría alguien seguir accediendo al archivo temporal de texto sin formato que se está escribiendo, es decir, a medida que se escribe?

    
pregunta Sam 30.06.2015 - 20:05
fuente

2 respuestas

4

¿Es posible reemplazar /dev/null con otra cosa? Pruébalo (como root):

mv /dev/null /dev/null-real
mkfifo /dev/null # Create a FIFO pipe to read/write data
while read line; do echo "Incoming: $line"; done < /dev/null &
echo secretdata > /dev/null

Verás un mensaje que dice Incoming: secretdata en tu terminal. Esto se debe a que el bucle "mientras se lee" está "en segundo plano" (el signo & lo hace). Esto significa que se ejecutará en segundo plano mientras se ejecuta la siguiente línea. Todo lo escrito en nuestra tubería FIFO, ubicado en /dev/null , será recogido y mostrado.

Si lo intentaste en tu computadora, puedes restaurar la situación original simplemente haciendo:

rm /dev/null
mv /dev/null-real /dev/null

Sin embargo, tener un oyente en /dev/null es extremadamente raro. Creo que solo la raíz puede hacer esto. Si realmente te importa, también puedes comprobar si /dev/null es en realidad el dispositivo /dev/null original (puedes ver que en stat /dev/null es un tipo de dispositivo con un inodo determinado). Sin embargo, no creo que valga la pena hacerlo porque:

TL; DR: Si no puede confiar en que el administrador de su servidor deje el dispositivo /dev/null solo, su aplicación no debería estar ejecutándose allí de todos modos.

    
respondido por el Luc 30.06.2015 - 20:22
fuente
2

Escribir en / dev / null es tan seguro como lo permite el sistema operativo. Lo está utilizando para el propósito exacto para el que fue creado, redirigiendo la salida a ninguna parte. / dev / null es parte de la filosofía de UNIX donde todo es un archivo, incluidos los dispositivos. Es un archivo especial reconocido por el kernel, y la salida nunca se escribe en ninguna parte.

Cualquier persona con acceso de nivel raíz aún podría obtener acceso a los datos a través de varios medios diferentes, incluido redireccionar / dev / null en otro lugar. Esto es inevitable ya que el acceso de nivel raíz puede hacer cualquier cosa, incluso leer ubicaciones de memoria arbitrarias y reemplazar partes del sistema operativo o su aplicación.

    
respondido por el Steve Sether 30.06.2015 - 20:36
fuente

Lea otras preguntas en las etiquetas