파일에 대한 하드 링크에 제한이 있나요?

파일에 대한 하드 링크에 제한이 있나요?

파일에 대한 하드 링크 수에 제한이 있습니까? 지정이 있나요? 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개의 링크를 가질 수 있다는 것을 의미한다고 생각합니다.

다른 파일 시스템의 값은 확인하지 않았습니다.

관련 정보