web-dev-qa-db-fra.com

Existe-t-il un répertoire équivalent à / dev / null sous Linux?

Lors de la configuration d'une application, vous pouvez souvent utiliser /dev/null comme fichier de configuration si vous souhaitez que l'application lise un fichier vide. Mais, si l'application lit une liste de fichiers à partir d'un répertoire, vous ne pouvez pas utiliser cette astuce. Vous devrez lui donner un répertoire vide à lire.

Je me demandais: Linux a-t-il un répertoire vide par défaut qui peut être utilisé à de telles fins? Je sais qu'OpenSSH a utilisé/var/empty pendant un certain temps, et je peux bien sûr créer moi-même un répertoire vide, mais peut-être que le FHS a spécifié un répertoire standard pour cela?

85
roelvanmeer

Le FHS ne fournit aucun répertoire vide "standard".

Il est courant que les systèmes Linux fournissent 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 utiliser la fonction mkdtemp(3) C dans votre programme. Bien que si vous avez toujours besoin du répertoire vide pour être présent, envisagez d'en créer un sous /var/empty Comme openssh.

Pour ce cas d'utilisation, la création d'un répertoire sous /tmp Est probablement la meilleure solution, bien qu'en pratique, peu importe où vous le placez.

66
Michael Hampton

Vous pouvez utiliser mktemp -d pour créer un nouveau répertoire temporaire vide avec des autorisations sécurisées, par défaut dans /tmp/. L'utilitaire affichera le chemin du nouveau répertoire sur STDOUT, il est donc utile dans le shell.

De toute façon, il est plus portable qu'un fichier d'unité systemd.

37
oals

Cette question Unix a quelques suggestions pour créer un répertoire "blackhole", y compris un système de fichiers nullfs Fuse .

26
200_success

Pour les services, systemd fournit l'option PrivateTmp pour créer des répertoires privés /tmp Et /var/tmp Qui ne sont pas partagés par des processus en dehors de l'espace de noms pour ce service et qui devrait être vide (initialement).

[Service]
ExecStart=...
PrivateTmp=yes 
11
HBruijn