101 votes

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

Lors de la configuration d'une application, vous pouvez souvent utiliser les éléments suivants /dev/null comme fichier de configuration si vous voulez 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 : est-ce que Linux a un répertoire vide par défaut qui peut être utilisé à cette fin ? Je sais qu'OpenSSH a utilisé /var/empty pendant un certain temps, et je peux bien sûr créer un répertoire vide moi-même, mais peut-être que le FHS a spécifié un répertoire standard pour cela ?

74voto

Michael Hampton Points 232226

Le site 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 le FHS et peut ne pas être vide. Au lieu de cela, certains démons vont créer leurs propres répertoires vides à cet endroit. 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, comme un sous-répertoire de /run o /tmp . Si vous faites cela en dehors du programme, vous pouvez utiliser mktemp -d pour cela, ou utiliser le mkdtemp(3) C dans votre programme. Cependant, si vous toujours vous avez besoin que le répertoire vide soit présent, envisagez d'en créer un sous le nom de /var/empty comme le fait openssh.

Pour ce cas d'utilisation, la création d'un répertoire sous /tmp est probablement la meilleure solution, bien qu'en pratique, l'endroit où vous le placez n'a pas beaucoup d'importance.

37voto

oals Points 471

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 d'accès du nouveau répertoire dans le champ STDOUT Il est donc utile dans le Shell.

C'est plus portable qu'un fichier d'unité systemd de toute façon.

30voto

200_success Points 4681

Cette question sur Unix a quelques suggestions pour créer un répertoire "trou noir", y compris une nullfs Système de fichiers FUSE .

12voto

snowdude Points 2790

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

[Service]
ExecStart=...
PrivateTmp=yes

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X