¿Es seguro cambiar TMPDIR?

1

Recientemente instalé Open MPI, y me estoy quejando

PMIx has detected a temporary directory name that results
in a path that is too long for the Unix domain socket:
Temp dir: /var/folders/**/*****************************/T/openmpi-sessions-501@host*******************************/*****

Esta pregunta sugiere configurar TMPDIR a /tmp . ¿Eso es seguro? ¿Arruinará otros programas?

    
pregunta NoethersOneRing 23.06.2017 - 17:45

1 respuesta

3

Puede haber fallas de seguridad que resultan del uso descuidado de /tmp ; los usuarios locales malintencionados pueden eliminar archivos arbitrarios o, incluso, ejecutar código arbitrario en su cuenta de usuario, dependiendo de qué tan grave sea la falla /tmp . Una solución que permanece dentro de char sun_path[104] límite en los sockets de dominio Unix (vea /usr/include/sys/un.h para la definición) es crear un directorio temporal y usarlo para MPI:

$ mktemp -d /tmp/mpi-XXXXXXXX
/tmp/mpi-zUN9SQo6

que deja 86 caracteres para que use el archivo de socket (104 menos uno para el NUL menos 17).

Dependiendo de dónde y cuándo configure TMPDIR , otros programas podrían desordenarse fácilmente, en particular tmux o screen , por lo que es posible que no puedan ubicar su zócalo de control. Si es posible, alcance la configuración personalizada TMPDIR lo más cerca posible de las llamadas MPI, por ejemplo. con una función de shell o alias a lo largo de las líneas de

alias mpi4py='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) mpi4py'

Esto crearía un directorio temporal único para cada invocación; Los directorios en /tmp se eliminan automáticamente. Si se necesita un directorio compartido o más persistente, /var/tmp suele ser más adecuado

$ mkdir /var/tmp/mympi

y asegúrese de confirmar que el directorio no existía en el caso de que un atacante local demasiado inteligente ya haya creado ese directorio (es poco probable, pero esta es la razón por la que se creó mktemp -d ). Luego, en tu perfil de shell, el alias podría verse algo así como

alias mpi4py='TMPDIR=/var/tmp/mympi mpi4py'

Este formulario es nuevamente más adecuado si hay un estado compartido necesario entre diferentes invocaciones de comandos MPI.

    
respondido por el thrig 23.06.2017 - 18:06

Lea otras preguntas en las etiquetas