Il peut y avoir des failles de sécurité qui résultent de l'utilisation négligente de /tmp
les utilisateurs locaux malveillants peuvent être en mesure de supprimer des fichiers arbitraires ou même d'exécuter du code arbitraire sous votre compte d'utilisateur, en fonction de la gravité de l'attaque. /tmp
Le défaut est. Une solution qui reste dans le char sun_path[104]
limite sur les sockets de domaine unix (voir /usr/include/sys/un.h
pour la définition) est de créer un répertoire temporaire et de l'utiliser pour MPI :
$ mktemp -d /tmp/mpi-XXXXXXXX
/tmp/mpi-zUN9SQo6
ce qui laisse 86 caractères à utiliser par le fichier de socket (104 moins un pour la fin de ligne NUL
moins 17).
Selon l'endroit et le moment où vous mettez TMPDIR
d'autres programmes pourraient facilement être perturbés, notamment tmux
o screen
qui pourraient alors ne pas être en mesure de localiser leur prise de contrôle. Dans la mesure du possible, étendez le champ d'application du TMPDIR
aussi proche que possible des appels MPI, par exemple avec une fonction shell ou un alias du type
alias mpi4py='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) mpi4py'
Cela créerait un répertoire temporaire unique pour chaque invocation ; les répertoires dans le répertoire /tmp
sont élaguées automatiquement. Si un répertoire partagé ou plus persistant est nécessaire /var/tmp
est généralement plus adaptée
$ mkdir /var/tmp/mympi
et assurez-vous de confirmer que le répertoire n'existe pas déjà dans le cas où un attaquant local bien trop intelligent aurait déjà créé ce répertoire (peu probable, mais c'est pourquoi mktemp -d
a été créé). Ensuite, dans votre profil shell, l'alias pourrait ressembler à quelque chose comme
alias mpi4py='TMPDIR=/var/tmp/mympi mpi4py'
Cette forme est encore plus adaptée si un état partagé est nécessaire entre différentes invocations de commandes MPI.