Quel est ce dossier / run / user / 1000?

85

Quel est ce dossier: /run/user/1000sur mon système Fedora et que fait-il?

~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.2G   20K  1.2G   1% /run/user/1000

EDIT: 7 juin 2019.

Mes deux réponses ne concordent pas sur le répertoire ou l'emplacement des fichiers stockés à cet endroit:

Patrick :

Avant systemd, ces applications stockaient généralement leurs fichiers dans /tmp.

Et encore ici:

/tmpétait le seul emplacement spécifié par le FHSqui est local et accessible en écriture pour tous les utilisateurs.

Braiam :

Les objectifs de cet annuaire ont déjà été desservis par /var/run. En général, les programmes peuvent continuer à être utilisés /var/runpour répondre aux exigences définies dans un /runbut de compatibilité ascendante.

Et encore ici:

Les programmes qui ont migré vers l’utilisation /rundoivent cesser de les utiliser /var/run, sauf indication contraire dans la section /var/run.

Alors, de qui s'agit-il qui est le père de /run/user/1000, pourquoi n'y a-t-il aucune mention dans les réponses à ce que l'autre dit à propos du répertoire utilisé auparavant /run/user.

quelque chose quelque chose
la source
Aucune réponse dans les deux réponses ne dit ce que l'autre dit à propos du répertoire utilisé avant / run / user, car un seul en discute. La réponse de Braiam décrit le répertoire utilisé avant / run plutôt que / run / user.
David Yockey
1
Une réponse à la question "Le père de / run / user / 1000" est présentée comme une déclaration motivée mais non étayée de Patrick. Braiam ne répond pas à cette question. Il est probable que, par le passé, l'emplacement de stockage des fichiers utilisés par les processus en cours, à savoir les fichiers temporaires, était simplement supposé être le répertoire standard / tmp. Si tel est le cas, il serait difficile de justifier, car peu de personnes fournissent une trace écrite de ce qui est conventionnel ou évident. Pour fournir une réponse corroborée, il faudrait probablement creuser de concert l’histoire de l’informatique.
David Yockey
Merci pour votre contribution
Quelque chose de particulier

Réponses:

94

/run/user/$uidest créé par pam_systemdet utilisé pour stocker les fichiers utilisés par les processus en cours d'exécution pour cet utilisateur. Celles-ci peuvent être des choses telles que votre démon de trousseau de clés, pulseaudio, etc.

Avant systemd , ces applications stockaient généralement leurs fichiers dans /tmp. Ils ne peuvent pas utiliser un emplacement /home/$usercar les répertoires de départ sont souvent montés sur des systèmes de fichiers réseau, et ces fichiers ne doivent pas être partagés entre les hôtes. /tmpétait le seul emplacement spécifié par la FHS, qui est local et accessible en écriture pour tous les utilisateurs.

Cependant, stocker tous ces fichiers /tmpest problématique car /tmptout le monde peut l'écrire, et bien que vous puissiez changer la propriété et le mode des fichiers en cours de création, il est plus difficile de travailler avec.

Alors systemd est venu et créé /run/user/$uid. Ce répertoire est local sur le système et uniquement accessible à l'utilisateur cible. Ainsi, les applications cherchant à stocker leurs fichiers localement n'ont plus à se soucier du contrôle d'accès.
Il garde aussi les choses bien et organisé. Lorsqu'un utilisateur se déconnecte et qu'il ne reste aucune session active, pam_systemdle /run/user/$uidrépertoire sera effacé . Avec divers fichiers éparpillés /tmp, vous ne pouviez pas faire cela.

Patrick
la source
18
Devrait mentionner qu'il s'appelle $ XDG_RUNTIME_DIR, documenté à standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
o11c
Que se passe-t-il si: j'ai démarré un processus de calcul "en arrière-plan" nohupet qu'il enregistre ses résultats / données intermédiaires dans un fichier temporaire. Puis-je compter sur le fait qu'il ne soit pas effacé pendant l'exécution du processus, sinon il sera effacé et le processus démarré nohupperdra ses données?
imz - Ivan Zakharyaschev
Il est peu probable que le fichier soit effacé, mais / run / user est un système de fichiers tmpfs dans fedora, de sorte qu'il sera limité à la quantité d'espace allouée. Voir la sortie df ci-dessus.
jsbillings
Que se passe-t-il si le fichier pid est un service qui s'exécute sous root? Est-ce que c'est PID aller sous / var / run ou / var / run / user / 0? Si comme il n'y a pas de sessions actives, sera-t-il supprimé?
TSG
11

Selon le dernier projet de FHS (File Hierarchy Standard) , / run:

Ce répertoire contient des informations sur le système décrivant le système depuis son démarrage. Les fichiers de ce répertoire doivent être effacés (supprimés ou tronqués selon le cas) au début du processus de démarrage.

Les fonctions de ce répertoire ont déjà été desservies par / var / run. En général, les programmes peuvent continuer à utiliser / var / run pour répondre aux exigences définies pour / run à des fins de compatibilité en amont. Les programmes qui ont migré vers / run doivent cesser d’utiliser / var / run, sauf mention contraire dans la section relative à / var / run.

Les programmes peuvent avoir un sous-répertoire de / run; cela est encouragé pour les programmes qui utilisent plusieurs fichiers d'exécution. Les utilisateurs peuvent également avoir un sous-répertoire de / run, bien qu'il faille veiller à limiter de manière appropriée les droits d'accès afin d'empêcher l'utilisation non autorisée de / run lui-même et d'autres sous-répertoires.

Dans le cas du /run/userrépertoire, est utilisé par les différents services utilisateurs, tels que dconf, pulse, systemd, etc., qui ont besoin d’une place pour leurs fichiers de verrouillage et leurs sockets. Il y a autant de répertoires que différents UID d'utilisateurs sont enregistrés dans le système.

Braiam
la source