web-dev-qa-db-fra.com

Bonne valeur par défaut pour xdg_runtime_dir?

Le Spécification du répertoire de base xdg est une spécification très intéressante pour les annuaires d'utilisateurs. Il fournit également de bonnes valeurs par défaut, sauf pour XDG_RUNTIME_DIR.

Maintenant, j'écris un logiciel qui doit créer des tuyaux nommés. C'est un cadre client-serveur par utilisateur (il y a un FIFO pour le serveur et A FIFO par client).

Si XDG_RUNTIME_DIR n'est pas défini, je suis actuellement en train d'utiliser un sous-répertoire par utilisateur dans /tmp - mais cela ne garantit pas toutes les conditions spécifiées (VIZ. Le paragraphe commençant par "La durée de vie du répertoire doit être liée à l'utilisateur étant connecté ...")

Est /tmp/myserver-$USER assez bien?

Edit

J'ai vu ailleurs quelques suggestions:

  • . est assez insatisfaisant (au moins parce que ce n'est pas un chemin absolu).
  • J'ai aussi vu /var/run/user/$USER - pas mal, mais ce répertoire n'existe pas (au moins sur ma boîte à exécuter un debian test)
10
cadrian

/tmp est utilisé par de nombreux programmes de la même manière déjà. Sur mon système, je peux voir le /tmp/orbit-$USER (utilisé par l'orbite de Gnome2) et /tmp/.X11-unix/ (Xorg et x11) répertoires avec de nombreux tuyaux, EHM, des prises, en eux. Je suis sûr qu'il y en a aussi d'autres, alors je ne vois rien de mal à ce que vous faites. Il suffit d'être préparé que puisqu'il s'agit d'un lieu écrit mondial, un processus malveillant peut détourner l'emplacement (vérifiez les autorisations avant d'y écrire).

Je peux aussi recommander $TMPDIR Pour ceux qui utilisent PAM_MKTEMP , car ce répertoire n'est accessible que par l'utilisateur.

4
chutz

SystemD fait /run/user/$USER un peu obligatoire.

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

Accès écriture non privilégié

Les processus non privilégiés manquent généralement d'un accès en écriture à la majeure partie de la hiérarchie.

Les exceptions pour les utilisateurs normaux sont /tmp, /var/tmp, /dev/shm, ainsi que le répertoire domestique $HOME (généralement trouvé ci-dessous /home) et le répertoire d'exécution $XDG_RUNTIME_DIR (trouvé ci-dessous /run/user) de l'utilisateur, qui sont tous écrits.

Pour les processus système non privilégiés uniquement /tmp, /var/tmp et /dev/shm sont écrits. Si un processus système non privilégié a besoin d'un répertoire d'écriture privé /var ou /run, il est recommandé de le créer avant de supprimer les privilèges dans le code du démon, de la créer via TMPFiles.d (5) fragments pendant la démarrage, ou via le RuntimeDirectory= Directive des unités de service (voir SystemD.Unit (5) pour plus de détails).

5
go2null

Créer un répertoire /tmp/service-cepter.id avec une pièce d'identité unique. Par exemple, en shell:

mktemp -d /tmp/service-"$USER".XXX
2
Selivanov Pavel