/run/user/$uid
è creato da pam_systemd
e utilizzato per archiviare i file utilizzati dai processi in esecuzione per quell'utente. Queste potrebbero essere cose come il tuo demone portachiavi, pulseaudio, ecc.
Prima di systemd, queste applicazioni in genere memorizzavano i propri file in /tmp
. Non potevano usare una posizione in /home/$user
poiché le home directory sono spesso montate su filesystem di rete e questi file non dovrebbero essere condivisi tra gli host. /tmp
era l'unica posizione specificata dall'FHS che è locale e scrivibile da tutti gli utenti.
Tuttavia, memorizzando tutti questi file in /tmp
è problematico come /tmp
è scrivibile da tutti e, sebbene sia possibile modificare la proprietà e la modalità dei file creati, è più difficile lavorarci.
Così è arrivato systemd e ha creato /run/user/$uid
. Questa directory è locale nel sistema ed è accessibile solo dall'utente di destinazione. Quindi le applicazioni che cercano di archiviare i propri file localmente non devono più preoccuparsi del controllo degli accessi.
Mantiene anche le cose belle e organizzate. Quando un utente si disconnette e non rimangono sessioni attive, pam_systemd
cancellerà il /run/user/$uid
directory fuori. Con vari file sparsi in /tmp
, non puoi farlo.
Secondo l'ultima bozza di FHS (File Hierarchy Standard), /run:
Questa directory contiene i dati delle informazioni di sistema che descrivono il sistema da quando è stato avviato. I file in questa directory devono essere cancellati (rimossi o troncati a seconda dei casi) all'inizio del processo di avvio.
Gli scopi di questa directory una volta erano serviti da /var/run. In generale, i programmi possono continuare a utilizzare /var/run per soddisfare i requisiti stabiliti per /run ai fini della compatibilità con le versioni precedenti. I programmi che sono migrati per utilizzare /run devono interrompere l'utilizzo di /var/run, ad eccezione di quanto indicato nella sezione su /var/run.
I programmi possono avere una sottodirectory di /run; questo è consigliato per i programmi che utilizzano più di un file di runtime. Gli utenti possono anche avere una sottodirectory di /run, sebbene sia necessario prestare attenzione a limitare adeguatamente i diritti di accesso per impedire l'uso non autorizzato della stessa /run e di altre sottodirectory.
Nel caso del /run/user
directory, viene utilizzato dai diversi servizi utente, come dconf, pulse, systemd, ecc. che necessitano di un posto per i loro file di blocco e socket. Ci sono tante directory quanti sono gli UID degli utenti registrati nel sistema.