3 votes

Peut-on changer le TMPDIR ?

J'ai récemment installé Open MPI, et il se plaint

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*******************************/*****

Cette question suggère de mettre en place TMPDIR a /tmp . Est-ce sûr ? Cela va-t-il perturber d'autres programmes ?

4voto

thrig Points 777

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.

0 votes

@

0 votes

N'hésitez pas à annuler la modification si nécessaire.

0 votes

Juste pour généraliser : La méthode consiste à créer un nouveau tempdir temporaire, l'utiliser pour mpi, puis lorsque mpi est terminé TMPDIR est revenue à l'ancienne valeur ? Ainsi, si je veux utiliser mpi4py Je peux changer TMPDIR et fermer le terminal ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X