sshfs แบ่ง symlink จากเซิร์ฟเวอร์ SFTP


16

ไม่มีใครรู้วิธีการติดตั้งเส้นทาง SFTP ระยะไกลผ่าน SSHFS เพื่อให้คุณสามารถทำงานกับ symlink ได้หรือไม่ เมื่อฉันทำสิ่งนี้ symlink ทั้งหมดที่ฉันสร้างชี้ไปที่ไฟล์ที่ผิด (ไม่ใช่สิ่งที่ฉันเชื่อมโยงไป) symlink ทั้งหมดที่ฉันสนใจนั้นมีความเกี่ยวข้อง เหมาะ

ใช้ sshfs กับตัวเลือกการเมาท์เริ่มต้นฉันไม่สามารถสร้าง symlink ไปยังไฟล์อื่นในไดเรกทอรีปัจจุบัน:

$ 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_symlinksตัวเลือกเมื่อฉันเมาท์ระบบไฟล์ sshfs ฉันจะได้รับลิงค์สัมพัทธ์แทนด้วยคำสั่งเดียวกัน แต่ก็ยังชี้ไปที่ผิด:

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

ที่นี่ฉันพยายามเชื่อมโยงไปยัง./testในไดเรกทอรีปัจจุบัน แต่ฉันได้รับลิงก์ไปยัง../../../testสามระดับขึ้นไป!

การเชื่อมต่อกับบรรทัดคำสั่งไคลเอนต์ SFTP sftpแทนการติดตั้งด้วย sshfs ทำงานอย่างไร:

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 ระยะไกลทำงานได้ดี (เนื่องจากฉันสามารถสร้าง symlink ด้วยไคลเอนต์ SFTP เฉพาะ) ได้ แต่ด้วยเหตุผลบางอย่างที่ฉันไม่สามารถสร้าง symlink ที่ใช้งานได้แม้ว่า sshfs

ผิดปกติพอเมื่อฉันใช้ sshfs เพื่อกำหนดเส้นทางบนเซิร์ฟเวอร์ SSH ที่ให้การเข้าถึงเชลล์ (ตรงข้ามกับเซิร์ฟเวอร์ SFTP เท่านั้น) symlinks ทำงานได้ดี - ฉันสามารถสร้างได้อย่างถูกต้อง ดูเหมือนว่าจะมีปัญหาเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ SFTP เท่านั้น

ผมทำอะไรผิดหรือเปล่า? มีตัวเลือกพิเศษที่ฉันต้องส่งไปยัง sshfs เมื่อฉันเชื่อมต่อกับเซิร์ฟเวอร์ SFTP เพื่อให้ symlink ทำงานหรือไม่


ฉันไม่เข้าใจคำถามของคุณ: sshfs ใช้ SFTP เสมอ คุณหมายถึงอะไรโดย“ ผ่าน ssh แทน sftp”? ดูเหมือนว่าคุณกำลังมีปัญหากับเซิร์ฟเวอร์ SFTP หนึ่งอัน ถ้าคุณใช้ไคลเอนต์ SFTP มันจะแสดงอะไรเมื่อคุณทำงานls -lบน symlink การทดสอบของคุณ?
Gilles 'SO- หยุดความชั่วร้าย'

ขออภัยเมื่อฉันบอกsftpตัวพิมพ์เล็กผมหมายถึงอินเตอร์เฟซ SFTP /usr/bin/sftpบรรทัดคำสั่งคือ ตัวอย่างสุดท้ายของฉันในโพสต์คือเมื่อฉันสร้าง symlink โดยใช้ไคลเอ็นต์ SFTP นี้ตามที่คุณร้องขอ
Malvineous

ฉันยังไม่รู้ว่าคุณหมายถึงอะไร โปรดแก้ไขโพสต์ของคุณเพื่อชี้แจงสิ่งที่คุณทำในพื้นที่สิ่งที่คุณทำบนเมานต์ sshfs โดยไม่มีtransform_symlinksตัวเลือกสิ่งที่คุณทำกับเมานต์ sshfs พร้อมtransform_symlinksตัวเลือกและสิ่งที่คุณทำกับไคลเอนต์ sftp Symlinks ทำงานได้ดีกับ SSHFS ดังนั้นคำตอบสำหรับประโยคแรกของคุณคือ“ ไม่มีอะไรเลย” ไม่ว่าคุณจะพบข้อบกพร่องหรือคุณไม่ได้พิมพ์คำสั่งที่ถูกต้อง แต่การรายงานของคุณไม่ชัดเจนเกินไปที่จะรู้ว่ามีอะไรผิดปกติ
Gilles 'SO- หยุดความชั่วร้าย'

ฉันได้พยายามอธิบายสิ่งที่ฉันขอให้ดีที่สุดเท่าที่จะทำได้ แต่ฉันก็ไม่แน่ใจว่าคุณจะทำอะไรหลังจากที่คำถามนั้นชัดเจนสำหรับฉัน หากยังไม่ชัดเจนโปรดบอกฉันโดยเฉพาะว่าส่วนใดไม่สมเหตุสมผลและทำไมและฉันจะพยายามเน้นที่ส่วนเหล่านั้น หวังว่าคำถามของคุณจะได้รับคำตอบแล้ว
Malvineous

คำตอบ:


13

หากต้องการแปลง symlink ระยะไกล (เริ่มต้นด้วย/) ให้สัมพันธ์กับsshfsจุดเชื่อมต่อให้ใช้follow_symlinksตัวเลือก:

sshfs -o follow_symlinks ...

transform_symlinksตัวเลือกที่ไม่ทำอะไรเลยสำหรับผมเห็นปัญหานี้


คำตอบที่ถูกต้องในกรณีของฉัน ฉันไม่เห็นไฟล์ / โฟลเดอร์ symlinked มาก่อนและตอนนี้ฉันเห็นแล้วและฉันสามารถติดตามได้
ออกจากระบบ

1

ฉันเคยเห็นพฤติกรรมที่คุณอธิบายมาก่อน แต่การทดสอบตอนนี้ฉันสามารถสร้าง symlink ได้ดีในไดเรกทอรีที่ติดตั้ง 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)

ฉันอัปเกรดsshdบนรีโมทประมาณ 4 เดือนที่ผ่านมา รุ่นเก่าคงมีอายุหลายปี บางทีการอัปเกรดอาจแก้ไขปัญหาได้ นี่อาจเป็นสิ่งที่ฉันใช้:

$ 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 ยกเว้นสิ่งที่ Ubuntu ทำโดยอัตโนมัติ
HTH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.