Linux가 자체적으로 심볼릭 링크를 허용하는 이유는 무엇입니까?

Linux가 자체적으로 심볼릭 링크를 허용하는 이유는 무엇입니까?

오타로 인해 이것이 허용되는 것으로 나타났습니다: ln -s useless useless.

그런 다음 예상대로 ls useless/*다음 오류 메시지가 트리거됩니다 .

ls: 'useless/*'에 액세스할 수 없습니다: 심볼릭 링크 수준이 너무 많습니다.

이것이 허용되고 ln받아들여지려면 어떤 상황에서 이것이 필요합니까?

나는 그것을 테스트하고 있습니다 SLES 12.4.

답변1

아니요필요fr 이는 허용됩니다. 심볼릭 링크가 가리키는 것이 무엇인지 또는 존재하지 않는 경로(또는 심볼릭 링크 자체)도 상관하지 않습니다.

존재하지 않는 경로에 대한 기호 링크를 비활성화하는 것을 상상할 수 있지만 몇 가지 문제가 발생할 수 있습니다.

  • 심볼릭 링크에 대한 역참조가 없으므로 파일에 대한 심볼릭 링크를 만든 다음 파일을 삭제하여 심볼릭 링크를 그대로 두는 것이 여전히 가능합니다.
  • 기호 링크는 마운트 해제된 다른 파일 시스템을 가리킬 수 있습니다.
  • 기호 링크가 포함된 파일 시스템은 여러 마운트 지점에 동시에 마운트될 수 있으며, 일부 기호 링크는 기존 경로를 가리키고 다른 기호 링크는 존재하지 않는 경로를 가리킵니다.
  • 절대 경로를 가리키는 심볼릭 링크는 일부 프로세스의 경우 기존 경로를 가리키고 다른 프로세스의 경우 매달린 경로를 가리킬 수 있습니다. 프로세스마다 루트 디렉터리가 다를 수 있기 때문입니다.

존재하지 않는 경로를 가리키는 심볼릭 링크가 있으면 심볼릭 링크의 이름을 자신을 가리키는 심볼릭 링크로 바꿀 수 있습니다. 따라서 자신을 가리키는 심볼릭 링크를 허용하지 않으려면 이름 바꾸기를 제한해야 합니다.

답변2

기호는 많은 것, 프로그램/운영 체제/사람을 나타낼 수 있으므로 기호 링크는 무엇이든 될 수 있습니다. 실제 세계의 상징과 마찬가지로 상징은 무엇이든 만들 수 있고 무엇이든 디자인할 수 있습니다. 대상이 이미 시스템에 존재하거나 사용자가 어떤 방법으로든 자신의 권한으로 해당 대상에 액세스할 수 있으므로 인증이 필요하지 않습니다.

정말로 이 행동을 멈추기를 원한다면. 자신을 가리키는지 확인하고, 그렇다면 오류를 반환하고, 그렇지 않으면 링크를 생성하는 스크립트를 만들 수 있습니다. 스크립트를 생성한 후 스크립트를 가리키는 ln에 대한 별칭을 생성할 수 있습니다.

다음과 같이 보일 수 있습니다.

#!/bin/bash
if [ "$1" == "$2" ]
then 
echo "ERROR pointing to self!"
else
ln "$1" "$2"
fi

관련 정보