ls -a
すらしないようにいくつかのファイルを非表示にしたい それを見つけることができます。ファイル名の前に「。」を追加することについて話しているのではありません。
これらのファイルにアクセスするための個別のシステムコールを作成できるかどうかを考えていました。実際に必要なのは、一部のログファイルをユーザーから隠すことです。一部のファイルのMACデータを保存していますが、ユーザーにそれらのログファイルを表示させたくありません。現在、データを非表示にする方法は1つしかありません。つまり、ファイル名の前に「。」を追加します。ただし、ls -a
を呼び出すだけで、ユーザーはファイルを見ることができます。 。それで、それらのログデータを隠す他の方法があるかどうか知りたいですか?
承認された回答:
他の人が指摘しているように、これの目的が永続ファイルへのアクセスを妨げることである場合、それを隠すことはおそらく間違ったアプローチです。この場合、適切なアクセス制御手段を使用するか、アプリケーションで必要な場合は暗号化を使用することが解決策になる可能性があります。一方、「隠された」一時的なを作成する ファイルは完全に正当なユースケースです。
Linuxでは、カーネルバージョン3.11以降、open()
システムコールはO_TMPFILE
をサポートします 名前のない一時ファイルを作成するために使用できるフラグ。このフラグを使用すると、パス名 open()
への引数 名前のないiノードが作成されるディレクトリを指定するために使用されます。ただし、O_TMPFILE
の主な使用例として 名前が示すように、一時的なの作成です。 ファイルの場合、ファイルに名前が付けられていない限り、ファイルの最後のファイル記述子が閉じられるとファイルが失われるため、これは永続ストレージには適していません。 linkat()
を使用してファイルに名前を付けることができます O_EXCL
でない限り、システムコール O_TMPFILE
に加えてフラグが指定されました 、この場合、ファイルをファイルシステムにリンクすることはできません。
最近追加されたO_TMPFILE
機能は、一時ファイルに次のプロパティを提供するために使用できるため、重要です。
- 競合状態のない作成。
- 閉じたときに自動的に削除されます。
- どのパス名からも到達できません。
- シンボリックリンク攻撃の対象ではありません。
- 発信者が一意の名前を考案する必要はありません。
さらに、この機能を使用して、最初は表示されないファイルを作成できます。このとき、1回のアトミック操作でファイルをファイルシステムにリンクする前に、ファイルの適切なファイルシステム属性を調整できます。これは、特定のTOCTOUの競合状態を回避するために使用できます。
関連:CSVデータをURLからGoogleスプレッドシートにプルしますか?
O_TMPFILE
の欠点 フラグは、ファイルシステムのサブセットのみがサポートを提供することです。当初、サポートはext2、ext3、
ext4、UDF、Minix、およびshmemファイルシステムで提供されていました。 XFSサポートはLinux3.15で追加されました。