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.
/private/tmp
jest regularnie przycinany. Gdybym chciał tylko jednej ustalonej lokalizacji tmp dla konkretnej aplikacji, prawdopodobnie po prostu ją utworzę/tmp/APPNAME_temp
i użyję.TMPDIR
powróci do starej wartości? Więc jeśli chcę użyćmpi4py
, mogę zmienićTMPDIR
, zrobić cokolwiek, a następnie zamknąć terminal?alias
w swojej konfiguracji powłoki; terminal nie musiałby być zamykany, ponieważ środowisko niestandardowe dotyczyłoby tylko polecenia z aliasem. Nauka podstaw np.bash
Może być korzystna, jeśli wszystko wydaje się tajemnicze.