ext2/3/4 ファイルシステムのディレクトリにハードリンクを使用できますか?

ext2/3/4 ファイルシステムのディレクトリにハードリンクを使用できますか?

ハードリンクを生成するために使用されたコマンド(およびおそらくシステムコール)がディレクトリへのハードリンク生成を許可しないという内容を読みました。また、ハードリンクがDAC、Linuxセキュリティモジュール、IMA / EVMなどのパスベースのセキュリティに問題を引き起こす可能性があることも学びました。ディレクトリへのハードリンクを作成できない場合は、そのディレクトリで発生する可能性があるセキュリティ問題を解決できます。しかし、ストレージレベルでファイルシステムを編集して、ディレクトリinodeへの複数のハードリンクを作成できますか?

ベストアンサー1

目次するハードリンクがあります...mkdir新しいディレクトリを作成するたびに、..エントリは親ディレクトリと同じinodeへのリンクです。

例えば

$ ls -lid .
23855134 drwxr-xr-x 2 sweh sweh 4096 Sep  8 21:57 .
$ mkdir foo
$ ls -lid . foo/..
23855134 drwxr-xr-x 3 sweh sweh 4096 Sep  8 21:57 .
23855134 drwxr-xr-x 3 sweh sweh 4096 Sep  8 21:57 foo/..

ディレクトリ内のリンク数が1ずつ(2から3に)増加し、インデックスノードが「.」であることがわかります。そして「foo/..」は両方23855134です。 「.」と親ディレクトリのエントリも inode 番号を共有するため、リンク数が 2 で始まることがわかります。

$ ls -lid foo foo/.
23855343 drwxr-xr-x 2 sweh sweh 4096 Sep  8 21:57 foo
23855343 drwxr-xr-x 2 sweh sweh 4096 Sep  8 21:57 foo/.

これで、ファイルシステムを編集して別のリンクを作成できる場合は、簡単に文句を言うことができますfsck

これをしないでください:-)

おすすめ記事