Хороший за замовчуванням для XDG_RUNTIME_DIR?


10

Специфікація базового каталогу XDG - дуже цікава специфікація для каталогів користувачів. Він також забезпечує хороші значення за замовчуванням, за винятком XDG_RUNTIME_DIR.

Зараз я пишу програмне забезпечення, яке потрібно створити з назвою pipe. Це рамка клієнт-сервер для кожного користувача (є FIFO для сервера і FIFO на клієнта).

Якщо XDG_RUNTIME_DIRце не визначено, я зараз використовую підкаталог користувача для користувача /tmp- але це не забезпечує всі зазначені умови (а саме абзац, що починається з "Термін служби каталогу ОБОВ'ЯЗКОВО прив’язаний до входу користувача ..." )

Чи /tmp/myserver-$USERдостатньо добре?

Редагувати

Я побачив десь кілька пропозицій:

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

Відповіді:


4

/tmpвикористовується багатьма програмами вже подібним чином. У моїй системі я бачу /tmp/orbit-$USERкаталоги (використовувані ORBit2 Gnome) та /tmp/.X11-unix/(Xorg та X11) з великою кількістю труб, ehm, sockets. Я впевнений, що є й інші, тому я не бачу нічого поганого в тому, що ти робиш. Будьте готові, що оскільки це місце, де можна записати у всьому світі, зловмисний процес може викрасти місцезнаходження (перевірте дозволи, перш ніж писати на нього).

Я також можу рекомендувати $TMPDIRтим, хто використовує pam_mktemp , оскільки цей каталог доступний лише користувачеві.


PAM - це правильне рішення, дякую! На Debian його називають libpam-tmpdir
кадріан

5

SystemD робить /run/user/$USERсвого роду обов'язковим.

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)).


2

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

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

1
Як ви забезпечите вимогу того, що той самий каталог використовується від першого входу до останнього виходу користувача?
Кадріан

Хммм ... створити символьну посилання ~ user / .service / tmp_dir. Якщо пов'язаного каталогу не існує, створіть новий
Селіванов Павло,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.