오타로 인해 이것이 허용되는 것으로 나타났습니다: 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