Czy bezpiecznie zmienić TMPDIR?

1

Niedawno zainstalowałem Open MPI i to narzeka

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

To pytanie sugeruje ustawienie TMPDIRna /tmp. Czy to jest bezpieczne? Czy to zepsuje inne programy?

NoethersOneRing
źródło

Odpowiedzi:

3

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 /tmppoważna jest wada. Rozwiązaniem, które pozostaje w char sun_path[104] granicach gniazd domeny unix (patrz /usr/include/sys/un.hdefinicja), 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 NULminus 17).

W zależności od tego, gdzie i kiedy ustawisz, TMPDIRinne programy mogą być łatwo pomieszane, szczególnie tmuxlub screenże wtedy może nie być w stanie zlokalizować ich gniazda sterującego. Jeśli to możliwe, ustaw niestandardowe TMPDIRustawienie 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 /tmpsą przycinane automatycznie. Jeśli potrzebny /var/tmpjest 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 -dzostał 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.

gałązka
źródło
@patrix, który będzie namnażał losowe katalogi tmp dla każdego wywołania; wszystko, co jest naprawdę konieczne, to pojedynczy unikalny katalog zabezpieczony przed lukami w zabezpieczeniach / tmp.
thrig
/private/tmpjest regularnie przycinany. Gdybym chciał tylko jednej ustalonej lokalizacji tmp dla konkretnej aplikacji, prawdopodobnie po prostu ją utworzę /tmp/APPNAME_tempi użyję.
nohillside
W razie potrzeby możesz cofnąć edycję.
nohillside
Tylko dla uogólnienia: Metoda polega na utworzeniu nowego tymczasowego tempdir, użyj go dla mpi, a kiedy mpi zostanie wykonane, TMPDIRpowróci do starej wartości? Więc jeśli chcę użyć mpi4py, mogę zmienić TMPDIR, zrobić cokolwiek, a następnie zamknąć terminal?
NoethersOneRing
1
Ustawiłbyś odpowiedni aliasw swojej konfiguracji powłoki; terminal nie musiałby być zamykany, ponieważ środowisko niestandardowe dotyczyłoby tylko polecenia z aliasem. Nauka podstaw np. bashMoże być korzystna, jeśli wszystko wydaje się tajemnicze.
thrig