디렉터리 A의 파일 복사본을 디렉터리 B의 심볼릭 링크로 만들었으며 원본 파일에서 심볼릭 링크에 대한 읽기 권한만 유지하면 되었습니다. 이 예와 같습니다. 원본 파일에는 가 있고 –rwx-wxr-x
링크에는 가 있어야 합니다.–r-----r--
명령이 아닌 Linux의 코드 C에서 이 작업을 수행해야 합니다. umask와 관련이 있는 것 같은데 어떻게 작동하는지 모르겠습니다.
답변1
심볼릭 링크에는 권한 개념이 없으므로 심볼릭 링크를 전달할 때 최종 파일에 액세스할 때와 다른 권한을 적용할 수 없습니다. 본질적으로 다른 파일에 대한 경로를 저장합니다(또는 심볼릭 링크가 매달려 있을 수 있으므로 그렇지 않습니다).
심볼릭 링크 자체에 권한 개념이 없는 이유는 이를 수행하는 사용 사례를 생각하기 어렵기 때문입니다. 심볼릭 링크를 역참조하고 최종 파일에 성공적으로 액세스할 수 있으면 readlink
심볼릭 링크에서 (2)를 사용할 수도 있고 원래 권한으로 읽으십시오. 최종 파일을 얻으십시오. 그러므로 가장 간단하고 합리적인 대답은 "당신은 할 수 없습니다"입니다. :-)
이 작업을 수행하기로 결정한 경우 한 가지 옵션은 eBPF, ptrace 또는 이와 유사한 것을 사용하여 파일 경로에 대한 호출을 가로채고 일부 권한을 위조하는 것입니다(단, 프로그램이 올바르게 예상하지 못하는 경우 오류를 피하기 위해 심볼릭 링크가 아닌 척해야 할 수도 있음). 이것이 문제이다). 다시 말하지만, 심볼릭 링크가 있는 경우 사람들은 최종 목적지까지만 이를 해결하므로 여기서 달성하려는 목표가 무엇인지 잘 모르겠습니다.