나는 이것에 대한 나의 이해가 올바른지 확인하고 싶습니다.
- 하드 링크를 생성하면 동일한 inode를 가리키는 또 다른 dentry가 생성됩니다.
- 심볼릭 링크를 생성하면 다른 인덱스 노드의 디렉터리 항목을 가리키는 완전히 새로운 파일 객체/인덱스 노드가 생성됩니다. 파일 시스템은 특별한 방법으로 파일을 처리합니다(특정 작업을 다른 inode의 dentry로 리디렉션).
답변1
하드 링크의 경우 정확하지만 기호 링크의 경우 올바르지 않습니다. 심볼릭 링크의 내용은 단지 문자열입니다. 예를 들어, 이는 현재 마운트되지 않은 파일 시스템을 가리키는 기호 링크를 허용합니다. 기호 링크는 단지 텍스트일 뿐입니다. 커널이 기호 링크를 만나면 기본적으로 기호 링크를 찾고 있는 경로에 삽입하고 슬래시로 구분된 조각으로 나누고 필요 .
에 따라 ..
찾습니다 . 기호 링크는 추가 권한을 제공하지 않습니다. 기호 링크의 경로 요소로 인한 순회는 마치 애플리케이션이 이러한 경로 요소를 지정한 것처럼 동일한 권한 제약 조건을 따릅니다. 심볼릭 링크에는 자체 inode가 있습니다(또는 적어도 그렇게 보입니다. 배후에서 일부 파일 시스템은 심볼릭 링크가 여러 개의 하드 링크를 갖고 심볼릭 링크를 포함하는 디렉토리에 직접 저장하는 것을 허용하지 않지만 여전히 인덱스를 보고합니다) 노드 기능의 수 lstat
).
시스템 수준에서 기호 링크가 처리되는 방법은 작업 유형에 따라 다릅니다. 디렉터리 항목에 대한 작업(예: 이름 바꾸기, 삭제)은 기호 링크를 다른 파일처럼 처리합니다. 파일 내용(예 open
: chdir
)에 작용하는 작업은 기호 링크를 따라 대상에 작용합니다. 기호 링크 체인이 끊어진 링크로 끝나는 경우 오류가 보고됩니다. 파일 메타데이터(예: inode)에 대해 작동하는 작업의 경우 다음과 같이 달라집니다. 일부 작업에는 한 쌍의 함수(예: stat
/ ) 가 있고 lstat
, 다른 작업에는 심볼릭 링크를 따릅니다(예: Linux chmod
에는 utimes
심볼릭 링크 변형이 없음).