Possono esserci falle di sicurezza risultanti dall'uso incauto di /tmp
; gli utenti locali malintenzionati potrebbero essere in grado di eliminare file arbitrari o persino di eseguire codice arbitrario sotto il proprio account utente, a seconda di quanto sia negativo il difetto /tmp
. Una soluzione che rimane all'interno di char sun_path[104]
limite sui socket di dominio unix (vedere /usr/include/sys/un.h
per la definizione) è quello di creare una directory temporanea e utilizzarla per MPI:
$ mktemp -d /tmp/mpi-XXXXXXXX
/tmp/mpi-zUN9SQo6
che lascia 86 caratteri per il file socket da utilizzare (104 meno uno per il finale NUL
meno 17).
A seconda di dove e quando si imposta TMPDIR
altri programmi potrebbero facilmente essere incasinati, in particolare tmux
o screen
che quindi potrebbero non essere in grado di localizzare il proprio socket di controllo. Se possibile, imposta l'impostazione personalizzata TMPDIR
il più vicino possibile alle chiamate MPI, ad es. con una funzione di shell o un alias lungo le linee di
alias mpi4py='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) mpi4py'
Ciò creerebbe una directory temporanea univoca per ogni invocazione; le directory in /tmp
vengono eliminate automaticamente. Se è necessaria una directory condivisa o più persistente, /var/tmp
è in genere più adatto
$ mkdir /var/tmp/mympi
e assicurati di confermare che la directory non fosse già presente nel caso in cui un aggressore locale troppo intelligente abbia già creato tale directory (improbabile, ma è per questo che è stata creata mktemp -d
). Quindi, nel tuo profilo shell l'alias potrebbe apparire come
alias mpi4py='TMPDIR=/var/tmp/mympi mpi4py'
Questo modulo è di nuovo più adatto se esiste uno stato condiviso necessario tra diverse chiamate di comandi MPI.