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