Debianシステムでのファイルベースのソケットの慣用的な場所


13

UnixドメインソケットCを使用するDebianシステム用のデーモンプロセスを書いています。

デーモンプロセスの作業ディレクトリがルートディレクトリである場合、ソケットをファイルシステムに配置するための慣用的なディレクトリはありますか?


なぜそれを構成可能にしないのですか?
BatchyX 2013

3
@BatchyXええと、ある種のデフォルト値(すべての管理者が完全に自分で決定するように強制するのではなく)は確かに良いでしょう。:)
CVn 2013

回答:


17

それらは通常、/tmpまたはそのサブディレクトリにあります。のすべてが/tmpシャットダウン時に消去される可能性があることに注意してください。消去されるとは限らないことに注意してください。消去できることに注意してください。それを使用する場合は、毎回サブディレクトリを作成する必要があるかどうかを確認してください。は誰でも/tmp読み取り可能であるため、アクセス権を使用してアクセスを制限する場合は、サブディレクトリを使用します。

/runおよび/var/run(シンボリックリンクされている場合があります)も同様に使用されますが、通常はtmpfsファイルシステムとしてマウントされます。つまり、ブート時に作成され、ディスクではなくメモリに常駐します(そのため、ダンプの場所として使用しないでください)大量のデータ)。実行時ソケットの場合、これはおそらく良い選択です。

/run、およびここで説明され いる他のすべてのディレクトリは、/tmprootのみが書き込み可能であることに注意してください。システムプロセスの場合はこれで問題ありませんが、アプリケーションが非特権ユーザーによって実行される可能性がある場合は、/tmpどこかに永続ディレクトリを使用または作成し、そこにアクセス許可を設定するか、ユーザーの$ HOMEの場所を使用します。

インストール中に/usr/share(または/usr/local/share)にディレクトリを作成することができます。そこにあるディレクトリやコンテンツは、/tmpやのようにブーツを越えて取得される可能性はありません/run。ただし、jordanmがコメントで指摘しているように、/usr読み取り専用でマウントされる場合があり、Linuxファイルシステム階層のガイドラインはこれを反映しています。もちろん、アプリケーションがインストールされている場合は読み取り専用にすることはできません。そのため、そこにソケットを作成してもかまわない場合は、そのままにして後で使用することができます(ただし、ソケットに書き込むことはできます)ファイルは読み取り専用です)。

/etcシステム全体の構成と再構成によく使用されるため、読み取り専用でマウントされないブート間でどこかに永続的にしたい場合は、かなり安全な方法です。OTOH、ルートファイルシステム全体の基礎となるデバイスが読み取り専用であるシステム(たとえば、組み込みシステム)を、/ tmpと/ runを別のデバイスに(おそらく:メモリー内のtmpfs)持つことができます。したがって、2つの最も堅牢な戦略は次のようになります。

  • アプリケーションのインストール時に、ソケットを永続的な場所にインストールします。

  • 実行時/runまたは/var/run実行時にディレクトリを作成し、そこにソケットを配置します。

  • 同じことをでのみ行い/tmpます。

最初のものの利点は、アプリがインストールされると、何に関係なく、使用するソケットがあることです。2番目の利点は、正気なプログラミングに役立つ可能性があることです。3番目の利点は、スーパーユーザー権限を必要としないことです。後で気が変わった場合、ある実装から別の実装に簡単に切り替えることができます。

最後に、BatchyXが登場したので、少なくともこのための構成オプションを提供し、デフォルトの選択にフォールバックする必要があります。


2
/runまたは/var/run、ルートプロセスにもよく使用されます。
BatchyX 2013

正しい。それらは/tmp。よりもさらにtmpです。私はでそれを編集します。
ゴルディロックス

/usr読み取り専用としてマウントできます。実行時にファイルがそこに作成されることはありません。他の提案は良いです。
ヨルダン2013

1
ご意見ありがとうございました。ディスカッションは非常に有益でした。/tmp/.APPNAME/.APPSOCKデーモンは永続的なデータを必要としないため、デフォルトの場所にすることにしました。
recursion.ninja 2013

1
間のもう一つの重要な違い/tmpとは/run、rootだけが上の書き込み権限を持っていることです/run
BatchyX 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.