Вопрос: Хорошее значение по умолчанию для XDG_RUNTIME_DIR?


Спецификация базового каталога XDG это очень интересная спецификация для пользовательских каталогов. Он также обеспечивает хорошие значения по умолчанию, за исключением XDG_RUNTIME_DIR,

Теперь я пишу программное обеспечение, которое должно создавать именованные каналы. Это платформа клиент-сервер для каждого пользователя (имеется FIFO для сервера и FIFO для каждого клиента).

Если XDG_RUNTIME_DIR не определен, в настоящее время я использую под-пользовательский подкаталог в /tmp - но он не обеспечивает всех указанных условий (а именно, начиная с «Срок службы каталога ДОЛЖЕН быть привязан к пользователю, входящему в систему ...»)

Является /tmp/myserver-$USER достаточно хорошо?

редактировать

Я видел в другом месте несколько предложений:

  • . является весьма неудовлетворительным (по крайней мере потому, что это не абсолютный путь).
  • Я также видел /var/run/user/$USER - неплохо, но этот каталог не существует (по крайней мере, на моем ящике работает Debian тестирование)

7
2018-05-14 11:35


Источник




Ответы:


/tmp уже используется многими программами аналогичным образом. В моей системе я вижу /tmp/orbit-$USER (используется ORBit2 от Gnome) и /tmp/.X11-unix/ (Xorg и X11) с большим количеством труб, ehm, разъемов, в них. Я уверен, что есть и другие, поэтому я не вижу ничего плохого в том, что вы делаете. Просто будьте готовы к тому, что, поскольку это всемирное место для записи, вредоносный процесс может захватить местоположение (проверьте разрешения, прежде чем писать на него).

Я также могу порекомендовать $TMPDIR для тех, кто использует pam_mktemp, так как этот каталог доступен только пользователю.


4
2018-05-23 18:08



PAM - правильное решение, спасибо! В Debian это называется libpam-tmpdir - cadrian


SystemD делает /run/user/$USER kinda обязательно.

http://www.freedesktop.org/software/systemd/man/file-hierarchy.html

Непривилегированный доступ к записи

Непривилегированные процессы обычно не имеют доступа на запись для большинства   иерархия.

Исключениями для обычных пользователей являются /tmp, /var/tmp, /dev/shm, также   как домашний каталог $HOME (обычно найдено ниже /home) а также   каталог времени выполнения $XDG_RUNTIME_DIR (см. ниже /run/user) из   пользователь, который доступен для записи.

Только для непривилегированных системных процессов /tmp, /var/tmp а также /dev/shm находятся   доступен для записи. Если непривилегированный системный процесс нуждается в приватном, доступном для записи   в каталоге /var или /run, рекомендуется либо создать его   перед сбросом привилегий в коде демона, чтобы создать его через   tmpfiles.d (5) фрагменты во время загрузки или через RuntimeDirectory=   директива единиц обслуживания (подробнее см. systemd.unit (5)).


4
2017-10-09 21:09





Создайте каталог /tmp/service-$USER.id с уникальным идентификатором. Для примера, в оболочке:

mktemp -d /tmp/service-"$USER".XXX

2
2018-05-28 16:40



Как вы обеспечиваете требование о том, чтобы один и тот же каталог использовался от первого входа в систему до последнего выхода из системы пользователя? - cadrian
Хм ... создайте symlink ~ user / .service / tmp_dir. Если связанный каталог не существует, создайте новый - Selivanov Pavel