Solución 1:
El FHS no proporciona un directorio vacío "estándar".
Es común que los sistemas Linux proporcionen un directorio /var/empty
, pero este directorio no está definido en FHS y es posible que en realidad no esté vacío. En cambio, ciertos demonios crearán sus propios directorios vacíos aquí. Por ejemplo, openssh usa el directorio vacío /var/empty/sshd
por separación privilegiada.
Si su necesidad de un directorio vacío es transitoria, puede crear un directorio vacío usted mismo, como un subdirectorio de /run
o /tmp
. Si está haciendo esto fuera del programa, puede usar mktemp -d
para esto, o use el mkdtemp(3)
Función C dentro de su programa. Aunque si siempre necesita que el directorio vacío esté presente, considere crear uno en /var/empty
como lo hace opensh.
Para este caso de uso, crear un directorio bajo /tmp
es probablemente la mejor opción, aunque en la práctica no importa mucho dónde lo coloques.
Solución 2:
Puedes usar mktemp -d
para crear un nuevo directorio temporal vacío con permisos seguros, por defecto en /tmp/
. La utilidad generará la ruta del nuevo directorio en STDOUT
, por lo que es útil en el shell.
De todos modos, es más portátil que un archivo de unidad systemd.
Solución 3:
Esta pregunta de Unix tiene algunas sugerencias para crear un directorio de "agujero negro", incluido un sistema de archivos FUSE nullfs.
Solución 4:
Para servicios, systemd proporciona la opción PrivateTmp
para crear un /tmp
privado y /var/tmp
directorios que no son compartidos por procesos fuera del espacio de nombres para ese servicio y que deben estar vacíos (inicialmente).
[Service]
ExecStart=...
PrivateTmp=yes