Solution 1 :
Le FHS ne fournit pas de répertoire vide "standard".
Il est courant pour les systèmes Linux de fournir un répertoire /var/empty
, mais ce répertoire n'est pas défini dans FHS et peut ne pas être vide. Au lieu de cela, certains démons créeront leurs propres répertoires vides ici. Par exemple, openssh utilise le répertoire vide /var/empty/sshd
pour la séparation des privilèges.
Si votre besoin d'un répertoire vide est transitoire, vous pouvez créer vous-même un répertoire vide, en tant que sous-répertoire de /run
ou /tmp
. Si vous faites cela en dehors du programme, vous pouvez utiliser mktemp -d
pour cela, ou utilisez le mkdtemp(3)
Fonction C dans votre programme. Bien que si vous toujours besoin que le répertoire vide soit présent, pensez à en créer un sous /var/empty
comme le fait openssh.
Pour ce cas d'utilisation, création d'un répertoire sous /tmp
est probablement le meilleur ajustement, bien qu'en pratique, l'endroit où vous le mettez n'a pas beaucoup d'importance.
Solution 2 :
Vous pouvez utiliser mktemp -d
pour créer un nouveau répertoire temporaire vide avec des permissions sécurisées, par défaut en /tmp/
. L'utilitaire affichera le chemin du nouveau répertoire sur STDOUT
, il est donc utile dans le shell.
C'est de toute façon plus portable qu'un fichier d'unité systemd.
Solution 3 :
Cette question Unix contient quelques suggestions pour créer un répertoire "trou noir", y compris un système de fichiers nullfs FUSE.
Solution 4 :
Pour les services, systemd fournit l'option PrivateTmp
pour créer un /tmp
privé et /var/tmp
répertoires qui ne sont pas partagés par des processus en dehors de l'espace de noms de ce service et qui doivent être vides (initialement).
[Service]
ExecStart=...
PrivateTmp=yes