いくつかのファイルを、見つけられないように隠したいですls -a
。ファイル名の前に「.」を追加することではありません。それらのファイルにアクセスするための別のシステム コールを作成できるかどうか考えていました。実際に必要なのは、いくつかのログ ファイルをユーザーから隠すことです。いくつかのファイルの MAC データを保存しており、ユーザーにそれらのログ ファイルを見せたくないのです。現在、データを隠す方法は、ファイル名の前に「.」を追加することしか知りません。しかし、単純な呼び出しでユーザーはファイルを見ることができますls -a
。そこで、それらのログ データを隠す他の方法があるかどうかを知りたいのです。
答え1
他の人が指摘しているように、永続ファイルへのアクセスを妨害することが目的であれば、ファイルを隠すのはおそらく間違ったアプローチです。この場合、適切なアクセス制御手段や、アプリケーションがそれを正当化するのであれば暗号化を使用することが解決策になるかもしれません。一方、「隠し」ファイルを作成することは、一時的ファイルは完全に正当な使用例です。
Linuxでは、カーネルバージョン3.11以降、open()
システムコールはO_TMPFILE
フラグをサポートしており、これを使用して名前のない一時ファイルを作成できます。このフラグを使用すると、パス名の引数はopen()
、名前のないinodeを作成するディレクトリを指定するために使用されます。ただし、の主な使用例はO_TMPFILE
、名前が示すように、一時的ファイルに名前を付けないと、ファイルの最後のファイル記述子が閉じられるとファイルが失われるため、永続的なストレージには適していません。ファイルに名前を付けるには、linkat()
システム コールは、O_EXCL
に加えてフラグが指定されていない限り実行されません。フラグが指定されているO_TMPFILE
場合は、ファイル システムへのファイルのリンクは防止されます。
最近追加されたO_TMPFILE
機能は、一時ファイルに次のプロパティを提供できるため重要です。
- 競合状態のない作成。
- 閉じると自動的に削除されます。
- いかなるパス名でも到達できません。
- シンボリックリンク攻撃の影響を受けません。
- 発信者が固有の名前を考案する必要はありません。
さらに、この機能は、最初は見えないファイルを作成し、その時点で適切なファイルシステム属性をファイルに調整してから、1回のアトミック操作でファイルシステムにリンクすることができます。これにより、特定のトクトウ競合状態。
このフラグの欠点O_TMPFILE
は、一部のファイルシステムのみがサポートしている点です。当初は、ext2、ext3、ext4、UDF、Minix、shmem ファイルシステムでサポートされていました。XFS のサポートは Linux 3.15 で追加されました。
答え2
どのような分離を行ったとしても、ルートは依然としてアクセス可能なので、隠蔽によるセキュリティしか確保できず、実際には安全とは言えません。他のユーザーからのアクセスを隠したい場合は、権限を使用できます。ファイルまたはディレクトリへの読み取り権限を拒否すると、目的を達成できます。
答え3
セキュリティ研究者のグルグ氏は「フィスティング「ファイルシステムの挿入と Subversion テクニック」。彼のプレゼンテーションを読むと、EXT3 ジャーナル ファイル、ディレクトリ ファイル、および「不良ブロック」ファイルなど、奇妙な場所にファイルシステムを配置しているように見えます。これは、隠蔽によるセキュリティを推奨しているように見えますが、そのようなことはできるのでしょうか。
答え4
他のユーザー (root を含む) がファイルを読み取れないようにしたい場合は、ファイルを暗号化することができます。ファイル名も隠したい場合は、偽の名前を付けるか、TrueCrypt などの暗号化ファイル コンテナを使用します。その場合、ファイル システムがマウントされているときは、root がファイルにアクセスすることができます。