Y a-t-il une limite de nombre de liens physiques pour un fichier? Est-il spécifié quelque part? Quelles sont les limites de sécurité pour Linux? Et pour les autres systèmes POSIX?
la source
Y a-t-il une limite de nombre de liens physiques pour un fichier? Est-il spécifié quelque part? Quelles sont les limites de sécurité pour Linux? Et pour les autres systèmes POSIX?
Posix exige que le système d'exploitation comprenne le concept de liens durs mais pas que les liens durs puissent réellement être utilisés dans des circonstances particulières. Vous pouvez savoir combien de liens physiques sont autorisés à un emplacement particulier (cela peut varier selon le type de système de fichiers) en appelant . La limite minimale ( ) est de 8, mais cela n'a pas beaucoup de sens car il peut quand même signaler de nombreuses autres erreurs (autorisation refusée, disque plein,…).pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
La stat
structure stocke le nombre de liens dans un champ de type nlink_t
, donc le type de ce champ donne une limite supérieure sur votre système. Mais il y a de fortes chances que vous ne puissiez jamais arriver aussi loin: il est courant d'avoir un 32 bits nlink_t
mais seulement 16 bits dans de nombreux systèmes de fichiers (un rapide grep dans la source Linux montre que ext [234], NTFS, UFS et XFS utilise un nombre de liaisons 16 bits dans les structures de données du noyau).
Cela dépend du système de fichiers.
ext2 / 3/4 limite est 65k liens
ligne source ext4 643,
struct ext4_inode
->__le16 i_links_count
la source
Examen du format de disque de la structure d'inode ext3 dans les sources du noyau linux (* include / linux / ext3_fs.h *) qui répertorie le nombre de liens comme étant un nombre de 16 bits
Je suppose que cela signifie qu'un système de fichiers ext3 peut avoir jusqu'à 65535 liens.
Je n'ai pas vérifié les valeurs des autres systèmes de fichiers.
la source