SFTP 서버에서 sshfs가 심볼릭 링크를 끊음


16

누구나 SSHFS를 통해 원격 SFTP 경로를 마운트하여 심볼릭 링크를 사용하는 방법을 알고 있습니까? 이 작업을 수행 할 때 내가 만든 모든 심볼릭 링크가 잘못된 파일 (내가 링크 한 파일이 아님)을 가리 킵니다. 관심있는 모든 심볼릭 링크는 상대적인 (절대적이지 않음) 원격 컴퓨터에서와 동일하게 표시됩니다. 이상적입니다.

기본 마운트 옵션과 함께 sshfs를 사용하면 현재 디렉토리의 다른 파일에 대한 심볼릭 링크를 만들 수 없습니다.

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:11 test2 -> /test

링크 대상이 현재 디렉토리 ( ./test)에 있으므로 분명히 올바르지 않습니다. 그러나 여기에서 sshfs /test가 잘못된 링크를 작성 함을 알 수 있습니다 . 링크 대상이 /mnt/path/to/sshfs/mount/test아닙니다 /test.

transform_symlinkssshfs 파일 시스템을 마운트 할 때 옵션 을 추가하면 동일한 명령으로 상대 링크를 얻을 수 있지만 여전히 잘못된 위치를 가리 킵니다.

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> ../../../test

여기서 나는 ./test현재 디렉토리에서 링크를 시도 했지만 대신 ../../../test3 레벨까지 링크를 얻었 습니다!

sftp그러나 sshfs로 마운트하는 대신 명령 행 SFTP 클라이언트로 연결하면 작동합니다.

sftp> open ...
sftp> symlink test test2
...
$ cd /mnt/path/to/sshfs/mount
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> test

따라서 이것은 원격 SFTP 서버가 제대로 작동하고 있음을 나타냅니다 (전용 SFTP 클라이언트로 심볼릭 링크를 만들 수 있기 때문에) 어떤 이유로 sshfs를 통해 작동하는 심볼릭 링크를 만들 수 없습니다.

이상하게도 sshfs를 사용하여 (SFTP 전용 서버가 아닌) 쉘 액세스를 제공하는 SSH 서버에 경로를 마운트하면 심볼릭 링크가 올바르게 작동합니다-올바르게 만들 수 있습니다. SFTP 전용 서버에 연결된 경우에만 문제가있는 것 같습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까? SFTP 서버에 연결하여 심볼릭 링크를 작동시킬 때 sshfs에 전달해야하는 특수 옵션이 있습니까?


귀하의 질문을 이해하지 못합니다 : sshfs는 항상 SFTP를 사용합니다. "sftp 대신 ssh를 통해"는 무슨 뜻입니까? 특정 SFTP 서버에 문제가있는 것 같습니다. SFTP 클라이언트를 사용하는 경우 ls -l테스트 심볼릭 링크에서 실행할 때 무엇이 ​​표시 됩니까?
Gilles 'SO- 악마 그만해'

죄송합니다, sftp소문자로 말할 때 커맨드 라인 SFTP 인터페이스를 의미 /usr/bin/sftp합니다. 게시물의 마지막 예는 요청 한 것처럼이 SFTP 클라이언트를 사용하여 symlink를 만들 때입니다.
Malvineous

나는 아직도 당신이 무엇을 의미하는지 전혀 모른다. 로컬에서 수행중인 작업, transform_symlinks옵션 없이 sshfs 마운트를 통해 수행중인 작업, 옵션을 사용하여 ssh 마운트를 통해 수행중인 작업 transform_symlinks및 sftp 클라이언트 로 수행중인 작업을 명확히하려면 게시물을 편집하십시오 . 심볼릭 링크는 SSHFS를 통해 정상적으로 작동하므로 첫 번째 문장에 대한 대답은 "아무것도 없습니다"입니다. 버그가 발생했거나 올바른 명령을 입력하지 않았지만보고 내용이 명확하지 않아서 무엇이 잘못되었는지 알 수 없습니다.
Gilles 'SO- 악한 중지'

나는 내가 할 수있는 한 최선을 요구하는 것을 분명히하려고 노력했지만 질문이 나에게 분명해 보이기 때문에 당신이 무엇을하는지 확실하지 않습니다. 여전히 확실하지 않은 경우, 어떤 부분이 이해가되지 않는 이유와 이유를 구체적으로 알려주십시오. 그런 부분에 중점을 둘 것입니다. 바라건대 질문에 대한 답변이 되었기를 바랍니다.
Malvineous

답변:


13

원격 절대 (으로 시작 /) 심볼릭 링크를 sshfs마운트 지점을 기준으로 변환하려면 다음 follow_symlinks옵션을 사용하십시오 .

sshfs -o follow_symlinks ...

transform_symlinks옵션은 나를 위해 아무것도하지 않는, 볼 이 문제를 .


내 경우에는 정답입니다. 이전에 심볼릭 링크 된 파일 / 폴더를 보지 못했지만 이제 볼 수 있으며 따라갈 수 있습니다.
로그 오프

1

앞에서 설명한 동작을 보았지만 지금 테스트하면 sshfs 마운트 디렉토리에서 심볼릭 링크를 만들 수 있습니다.

$ touch T
$ ln -s T L
$ ls -l T L
lrwxrwxrwx 1 user user 1 Apr  9 16:10 L -> T
-rw-rw-r-- 1 user user 0 Apr  9 16:10 T

$ echo hello >> L
$ cat T
hello
$ pwd
/home/user/oak/tmp
$ mount | grep oak
user@oak: on /home/user/oak type fuse.sshfs (rw,nosuid,nodev,user=user)

약 4 개월 전에 리모컨에서 sshd 를 업그레이드했습니다 . 이전 버전은 몇 년이되었을 것입니다. 업그레이드로 문제가 해결되었을 수 있습니다. 이것은 내가 지금 무엇을 사용하고 있는지에 대한 힌트를 줄 수 있습니다.

$ ssh oak 'ident $(which sshd)' | grep ssh
/usr/sbin/sshd:
 $NetBSD: sshd.c,v 1.13.4.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshpty.c,v 1.2.26.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshlogin.c,v 1.4.22.1 2015/04/30 06:07:31 riz Exp $

우분투가 자동으로하는 것을 제외하고는 sshfs를 변경하기 위해 아무것도하지 않았습니다.
HTH.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.