Mogą wystąpić wady bezpieczeństwa wynikające z nieostrożnego korzystania z/tmp
; złośliwi użytkownicy lokalni mogą być w stanie usunąć dowolne pliki lub nawet uruchomić dowolny kod na koncie użytkownika, w zależności od tego, jak /tmp
poważna jest wada. Rozwiązaniem, które pozostaje w char sun_path[104]
granicach gniazd domeny unix (patrz /usr/include/sys/un.h
definicja), jest utworzenie katalogu tymczasowego i użycie go dla MPI:
$ mktemp -d /tmp/mpi-XXXXXXXX
/tmp/mpi-zUN9SQo6
co pozostawia 86 znaków do użycia przez plik gniazda (104 minus jeden dla końcowego NUL
minus 17).
W zależności od tego, gdzie i kiedy ustawisz, TMPDIR
inne programy mogą być łatwo pomieszane, szczególnie tmux
lub screen
że wtedy może nie być w stanie zlokalizować ich gniazda sterującego. Jeśli to możliwe, ustaw niestandardowe TMPDIR
ustawienie jak najbliżej wywołań MPI, np. Za pomocą funkcji powłoki lub aliasu wzdłuż linii
alias mpi4py='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) mpi4py'
Stworzyłoby to unikalny katalog tymczasowy dla każdego wywołania; katalogi w /tmp
są przycinane automatycznie. Jeśli potrzebny /var/tmp
jest współużytkowany lub bardziej trwały katalog, zwykle jest bardziej odpowiedni
$ mkdir /var/tmp/mympi
i upewnij się, że katalog jeszcze nie istniał w przypadku, gdy zbyt sprytny lokalny atakujący już utworzył ten katalog (mało prawdopodobne, ale właśnie dlatego mktemp -d
został utworzony). Następnie w profilu powłoki alias może wyglądać mniej więcej tak
alias mpi4py='TMPDIR=/var/tmp/mympi mpi4py'
Ta forma jest ponownie bardziej odpowiednia, jeśli istnieje potrzeba współdzielenia różnych wywołań komend MPI.