방금 어디서도 찾을 수 없는 문제에 직면했습니다(예: 삼바 문서).
server1에 삼바 공유가 있고 이 공유는 server2에 마운트되었습니다. server1의 공유는 에 대한 심볼릭 링크입니다 /var/container/db
.
문제는 server2에서 이 심볼릭 링크된 폴더를 열려고 하면 해당 경로가 /var/container/db
내 server2에 존재하기 때문에 server2에 내 로컬 파일이 표시된다는 것입니다.
이 문제의 원인은 무엇이며, 이에 대한 해결책은 무엇입니까?
두 서버 모두 데비안에서 실행됩니다.
답변1
Unix 계열 호스트 간에 심볼릭 링크를 공유하는 경우 공유를 마운트하는 시스템은 자체 파일 시스템 트리에 따라 심볼릭 링크를 해석합니다. 이것이 바로 Unix 스타일의 심볼릭 링크가 작동하는 방식입니다.
서버 1의 공유에 심볼릭 링크가 가리키기를 원하는 항목이 포함되어 있는 경우 다음을 사용할 수 있습니다.상대적인절대 링크 대신 심볼릭 링크.
예를 들어, server1의 삼바 공유가 이고 /var
server2에 로 마운트되어 있고 /server1var
심볼릭 링크가 server1에 로 있는 경우 /var/some/directory/link-to-db
현재 심볼릭 링크는 다음과 같습니다.
server1# ln -s /var/container/db /var/some/directory/link-to-db
대신 다음과 같이 할 수 있습니다.
server1# cd /var/some/directory
server1# ln -s ../../container/db link-to-db
server1의 데이터베이스가 Samba 공유 내에 없으면 Samba 서버 매개변수가 필요합니다 wide links = yes
. 이렇게 하면 server1이 심볼릭 링크를 따르고 /var/container/db
심볼릭 링크를 전달하는 대신 server1에 대한 액세스를 제공하게 됩니다.
그러나 서버가 기본 설정으로 실행 중인 경우에는 기본적으로 활성화되어 있습니다. 이는 클라이언트가 Unix 계열 시스템(귀하의 경우처럼)인 경우 unix extensions = yes
비활성화됩니다 .wide links
그러나 설정을 통해 공유 연결에 적용되는 경우에도 매개변수가 작동하도록 allow insecure wide links = yes
허용할 수 있습니다 .wide links
unix extensions
하지만 이는 안전하지 않기 때문에 권장되지 않습니다.server1의 관리자는 공유되는 것과 그렇지 않은 것에 대한 통제력을 잃게 됩니다. 왜냐하면 클라이언트는 쓰기 가능한 경우 공유에 적절한 심볼릭 링크를 생성하여 Samba 공유 외부의 모든 파일에 액세스하려고 시도할 수 있기 때문입니다. 연결에 사용된 사용자 계정에 파일을 읽을 수 있는 권한이 있는지 여부의 문제입니다.
기본적으로 allow insecure wide links
+ wide links
+ unix extensions
+ 클라이언트 쓰기 가능 공유는 /
Samba와 공유하는 것과 실질적으로 동일합니다. 권장되지 않습니다.