解決策 1:
FHS には「標準の」空のディレクトリはありません。
Linux システムでは、ディレクトリ /var/empty
を提供するのが一般的です。 ですが、このディレクトリは FHS で定義されておらず、実際には空ではない可能性があります。代わりに、特定のデーモンが独自の空のディレクトリをここに作成します。たとえば、openssh は空のディレクトリ /var/empty/sshd
を使用します。 特権分離のために。
空のディレクトリが一時的に必要な場合は、 /run
のサブディレクトリとして空のディレクトリを自分で作成できます または /tmp
.プログラム外でこれを行う場合は、 mktemp -d
を使用できます これには、または mkdtemp(3)
を使用します プログラム内の C 関数。ただし、常に 空のディレクトリが存在する必要があるため、/var/empty
の下に作成することを検討してください openssh と同じです。
このユース ケースでは、/tmp
の下にディレクトリを作成します。
解決策 2:
mktemp -d
を使用できます /tmp/
で、デフォルトで安全なアクセス許可を持つ新しい空の一時ディレクトリを作成します .ユーティリティは STDOUT
に新しいディレクトリのパスを出力します であるため、シェルで役立ちます。
とにかく、systemd ユニット ファイルよりも移植性があります。
解決策 3:
この Unix の質問には、nullfs FUSE ファイルシステムを含む「ブラックホール」ディレクトリを作成するためのいくつかの提案があります。
解決策 4:
サービスの場合、systemd はオプション PrivateTmp
を提供します プライベート /tmp
を作成する そして /var/tmp
そのサービスのネームスペース外のプロセスによって共有されず、(最初は) 空であるべきディレクトリ。
[Service]
ExecStart=...
PrivateTmp=yes