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)./var/run/user/$USER
- pas mal, mais ce répertoire n'existe pas (au moins sur ma boîte à exécuter un debian test)/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.
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 leRuntimeDirectory=
Directive des unités de service (voir SystemD.Unit (5) pour plus de détails).
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