ファイルへのハードリンク数に制限はありますか?指定ありますか? 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
答え3
16桁のリンク数をリストするLinuxカーネルソースコード(*include/linux/ext3_fs.h*)で、ext3 inode構造ディスクの形式を確認してください。
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
私はこれがext3ファイルシステムが最大65535のリンクを持つことができることを意味すると思います。
他のファイルシステムの値は確認されませんでした。