Buona impostazione predefinita per XDG_RUNTIME_DIR?


10

La specifica della directory di base XDG è una specifica molto interessante per le directory degli utenti. Fornisce anche buoni valori predefiniti, ad eccezione di XDG_RUNTIME_DIR.

Ora sto scrivendo un software che deve creare named pipe. È un framework client-server per utente (esiste un FIFO per il server e un FIFO per client).

Se XDG_RUNTIME_DIRnon è definito, sto attualmente utilizzando una sottodirectory per utente in /tmp- ma non garantisce tutte le condizioni specificate (vale a dire il paragrafo che inizia con "La durata della directory DEVE essere vincolata all'utente che ha effettuato l'accesso ..." )

È /tmp/myserver-$USERabbastanza buono?

modificare

Ho visto altrove alcuni suggerimenti:

  • . è abbastanza insoddisfacente (almeno perché non è un percorso assoluto).
  • Ho anche visto /var/run/user/$USER- non male, ma quella directory non esiste (almeno sulla mia scatola che esegue un test Debian )

Risposte:


4

/tmpè già utilizzato da molti programmi in modo simile. Sul mio sistema posso vedere le directory /tmp/orbit-$USER(usate da ORBit2 di Gnome) e /tmp/.X11-unix/(Xorg e X11) con molte pipe, ehm, socket. Sono sicuro che ce ne sono anche altri, quindi non vedo nulla di sbagliato in quello che stai facendo. Basta essere preparati che, poiché si tratta di un luogo scrivibile in tutto il mondo, un processo dannoso può dirottare il luogo (verificare le autorizzazioni prima di scriverlo).

Posso anche raccomandare $TMPDIRa coloro che usano pam_mktemp , poiché questa directory è accessibile solo dall'utente.


PAM è la soluzione giusta, grazie! Su Debian si chiama libpam-tmpdir
cadrian il

5

SystemD rende /run/user/$USERun po 'obbligatorio.

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

Accesso in scrittura senza privilegi

I processi senza privilegi generalmente non dispongono dell'accesso in scrittura alla maggior parte della gerarchia.

Le eccezioni per gli utenti normali sono /tmp, /var/tmp, /dev/shm, così come la home directory $HOME(di solito si trova al di sotto /home) e la directory di runtime $XDG_RUNTIME_DIR(che si trova al di sotto /run/user) dell'utente, che sono tutti scrivibili.

Per il sistema non privilegiato elabora solo /tmp, /var/tmpe /dev/shmsono scrivibili. Se un processo di sistema senza privilegi necessita di una directory privata o scrivibile in /varo /run, si consiglia di crearlo prima di eliminare i privilegi nel codice daemon, di crearlo tramite frammenti tmpfiles.d (5) durante l'avvio o tramite la RuntimeDirectory= direttiva delle unità di servizio (vedere systemd.unit (5) per i dettagli).


2

Crea la directory /tmp/service-$USER.id con ID univoco. Per esempio, in shell:

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

1
Come garantire il requisito che la stessa directory venga utilizzata dal primo accesso all'ultimo logout dell'utente?
cadrian,

Hmmm ... crea symlink ~ user / .service / tmp_dir. Se la directory collegata non esiste, creane una nuova
Selivanov Pavel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.