XDG_RUNTIME_DIRの固定ビットおよびソケットファイル

XDG_RUNTIME_DIRの固定ビットおよびソケットファイル

下のサブディレクトリにいくつかのUnixソケットファイルを保存します。$XDG_RUNTIME_DIR。ドキュメントから以下を読むことができます。

このディレクトリのファイルは定期的にクリーンアップする必要があります。ファイルが削除されないようにするには、ファイルのアクセスタイムタイムスタンプを少なくとも6時間ごとに変更するか、ファイルに「固定」ビットを設定する必要があります。

定期的なクリーンアップを避けるために、各ソケットファイルに固定ビットを設定する必要があるのか​​、それともすべてのソケットファイルを格納するサブディレクトリに固定ビットを設定するのに十分なのか疑問に思います。

答え1

部分XDGの基本ディレクトリ仕様固定ビット設定について引用しました。ファイルに:

このディレクトリのファイルは定期的にクリーンアップする必要があります。ファイルが削除されないようにするには、ファイルのアクセスタイムタイムスタンプを少なくとも6鍛造時間ごとに変更するか、「固定」ビットを設定する必要があります。ファイルに

ここの仕様は少しあいまいです。文書意味できるファイルシステムエンティティごとディレクトリではなくファイルシステムエンティティまたは一般ファイル状況によって異なります。ただし、ディレクトリの固定ビットはLinuxに特別な影響を与え、ディレクトリで使用されるときに名前が異なるように指定されることもあります。chmod(1) マンページ:

制限された除去フラグまたは固定ビットは、ファイル形式によって解釈が異なる単一ビットである。ディレクトリの場合、権限のないユーザーがファイルまたはディレクトリを所有していない限り、ディレクトリからファイルを削除または名前変更することを防ぎます。これはディレクトリの削除制限フラグと呼ばれ、/tmpのような誰でも書き込むことができるディレクトリにあります。

したがって、仮定するのが妥当です。文書XDG文書では、この文脈は次のことを意味します。ディレクトリではなくファイルシステムエンティティ

ただし、仕様が完全には明確ではないため、ディストリビューションのクリーンアップメカニズムの実装によって異なります。少なくともFedoraとLinux Mintには現在このようなスケジュールされたクリーンアップがないようですが、これは将来変更される可能性があり、ディストリビューションが仕様のこの部分をどのように解釈するかを知ることができないため、設定する方が安全です。除外された各ファイル/ソケットのスケジュールされたクリーンアップから削除したい場合。

編集するsystemd以下に基づく分布の場合pam_systemd$XDG_RUNTIME_DIR 管理を担当します。現在は、最初のログイン時に作成のみが行われ、最後のログアウト時に削除が行われます。ソケットは$ XDG_RUNTIME_DIRのサブディレクトリにもsystemd生成され、固定ビットは何も設定されません。これは、少なくともsystemd基本的なディストリビューションがまだ定期的なクリーンアップを実装していないことを強く示唆しています。

答え2

粘り強いビットは、ディレクトリではなくファイルには何の影響も与えないので、クリーンアップを実行するプログラムの問題だと思います。

プログラムがこれらのファイルを無視するように指示するには、固定ビットを使用する必要があります。したがって、文書に不明な場合は、次のことを行う必要があります。

  • どのプログラムがクリーニングを実行しているかを見つけて、ソースコードを読んでください。
  • 実験してみてください。いくつかのファイル/ソケットをディレクトリに配置し、一部は固定ビットが設定されており、一部は設定されていない状態で何が起こるかを確認してください。 (ダミーファイルの使用:どの目的にも使用されないファイルです。)

関連情報