ファイルへのハードリンクに制限がありますか?

ファイルへのハードリンクに制限がありますか?

ファイルへのハードリンク数に制限はありますか?指定ありますか? Linuxのセキュリティ制限は何ですか?他のPOSIXシステムはどうですか?

答え1

Posixでは、オペレーティングシステムはハードリンクの概念を理解する必要がありますが、特定の状況でハードリンクを実際に使用できる必要はありません。を呼び出して、特定の場所で許可されているハードリンクの数(ファイルシステムの種類によって異なる場合があります)を確認できます。これpathconf(filename, _PC_LINK_MAX)最小限度_POSIX_LINK_MAX)は8ですが意味がありません。link()とにかく、他の多くのエラーが報告されることがあります(許可拒否、ディスクがいっぱいです...)。

これstat構造はタイプフィールドにリンク数を格納します。nlink_tしたがって、このフィールドの種類はシステムの上限を提供します。しかし、それまでは到達できない可能性が高いです。nlink_t多くのファイルシステムには通常32ビットがありますが、16ビットしかありません(Linuxソースコードの高速なgrepを見ると、ext [234]、NTFS、UFS、およびXFSがカーネルデータ構造で16を使用していることがわかります)。ビットリンク数).

答え2

ファイルシステムによって異なります。

ext2/3/4は65,000のリンクに制限されています

ext4ソース643行struct ext4_inode->__le16 i_links_count

答え3

16桁のリンク数をリストするLinuxカーネルソースコード(*include/linux/ext3_fs.h*)で、ext3 inode構造ディスクの形式を確認してください。

struct ext3_inode {
    ... snip ...
    __le16  i_links_count;  /* Links count */

}

私はこれがext3ファイルシステムが最大65535のリンクを持つことができることを意味すると思います。

他のファイルシステムの値は確認されませんでした。

関連情報