「実行可能な」ファイルシステムはありますか?

「実行可能な」ファイルシステムはありますか?

次のことができるUnix / Linuxファイルシステムはありますか?

  1. ファイルが実行可能な場合は、ファイルを実行して生成されたファイルを含むダミーファイルを返しますstdout(書き込みが不可能であるべきだと思います)。
  2. それ以外の場合は、ext4や友達と同じように動作し、ファイル自体を提供します。

最近、プロセスに情報を渡すことはできませんが(複数行)、ファイルをオプションとして渡す必要がある状況が発生しました。このファイルを動的に(ローカルまたはネットワーク経由で)作成できることは私にとっては素晴らしいオプションのようです。

/ tmpにファイルを生成することは、オプションがLDAPエントリの属性にあるためオプションではありません。私のLDAPエントリには、静的に定義された次のような属性値が含まれています。

-fstype=cifs...,rw,credentials=FILENAME,... ://remote

これを評価するプロセスにデータとして渡され、FILENAMEをオプションの引数として期待しますcredentials=。 Bashや他のスクリプトはありません。 LDAPで/ tmpファイルを動的に生成する方法は不明です。

頼まないでくださいなぜ私はこれをしたい:解決策で問題を解決しましたが、それでも基本的な問題に興味があります。

もちろん、この種の仕事には常に追加の質問が伴います。安全に実行できますか?

スティーブ

ベストアンサー1

さて、私が正しいことを見てみましょう。 LDAP には、一部のファイル名を参照するデータがいくつかあります。ファイルがネットワーク共有にあり、LDAPディレクトリを使用しているすべてのホストから読み取ることができ、ファイルの内容を動的に作成したいとします。たとえば、ディレクトリにはが含まれており、credentials=/ldap/foo.cred一部のシステムが開かれると/ldap/foo.cred動的データが取得されます。

というプログラムがあるようです。スクリプトファイル、ㅏFUSE(ユーザー空間のファイルシステム)実装はユーザーが望むものとほぼ正確に一致しますが、ツールに慣れておらず、どのように機能するのかわかりません。 (@KamilMaciorowskiはコメントと記事でこの内容に言及しました。回答スーパーユーザーから。 )

ScriptFSはローカルファイルシステムのみをコピーしますが、実行結果に基づいて「スクリプト」として検出されたすべてのファイルを置き換える新しいファイルシステムです。

名前が示すように、FUSEを使用すると、ユーザー空間プログラムは他のプログラムと同様にファイルシステムを実装でき、カーネルはファイルシステムの処理を担当するプロセスに対するファイルアクセス要求をスケジュールします。これにより、任意の動的コンテンツを生成できます。おそらく、ファイルは通常のファイルとして表示されるため、ネットワーク共有を介しても機能するようですが、それに対する個人的な経験はありません。

より「伝統的な」機能の中で最も近い機能は、名前付きパイプと名前付きソケットです。

を使用して生成された名前付きパイプは、ファイルシステムに名前があり、ここで開くことができることを除いて、mkfifo作成したパイプと似ています。somecmd | grep fooだからあなたは書くことができますmkfifo p; somecmd > p & grep foo < p。あるいは、同様に読者が最初に開くことができます。読者と作家の両方が相手が来るまでブロックします。最初はこれが好きなように行われるようです。パイプに書き込んで、誰かが読み取り用に開いたときに現在の出力を提供するようにプログラムをスケジュールできます。ただし、パイプは一度だけ存在するため、同時ユーザーは同じストリームに接続されます。また、テザリングでどのように機能するのか分かりません。パイプはクライアント側にのみ存在する可能性があるため、両端は同じシステム上になければなりません。

Unixドメインソケットはファイルシステムの名前の下に存在することもできます(systemdを実行している場合は以下にあります/run)。接続時に開かれたプロセスは、TCP接続と同様にソケットでリッスンするプロセスに接続されます。ここでの接続は独立していますが、問題は(私が知っている限り)Unixドメインソケットを開けませんが、open()接続する必要があるということですconnect()。したがって、それを行うことはできず、cat < socket動作しません。

おすすめ記事