sshfs SFTP सर्वर से सीमलिंक को तोड़ता है


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_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हालांकि 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 हालांकि कोई भी काम करने वाला सहानुभूति नहीं बना पा रहा हूं।

विचित्र रूप से पर्याप्त है, जब मैं एक SSH सर्वर पर एक पथ को माउंट करने के लिए शेल एक्सेस प्रदान करने के लिए sshfs का उपयोग करता है (जैसा कि एक SFTP- केवल सर्वर के विपरीत) सीमलिंक ठीक काम करते हैं - मैं उन्हें सही तरीके से बना सकता हूं। यह केवल SFTP- केवल सर्वर से कनेक्ट होने पर समस्याग्रस्त लगता है।

मैं क्या गलत कर रहा हूं? क्या कोई विशेष विकल्प है जो मुझे sshfs में पास करना है जब मैं एक SFTP सर्वर से जुड़ रहा हूँ ताकि सिम्बलिंक्स काम कर सकें?


मैं आपके प्रश्न को नहीं समझता: sshfs हमेशा SFTP का उपयोग करता है। "Sshp के बजाय ssh के माध्यम से" आपका क्या मतलब है? ऐसा लगता है कि आप एक विशेष SFTP सर्वर से परेशान हैं। यदि आप एक SFTP ग्राहक का उपयोग करते हैं, तो जब आप ls -lअपने टेस्ट सिम्बल पर चलते हैं तो यह क्या दिखाता है ?
गिल्स एसओ- बुराई को रोकना '

क्षमा करें, जब मैं sftpलोअरकेस में कहता हूं तो मेरा मतलब कमांड लाइन SFTP इंटरफेस है /usr/bin/sftp। पोस्ट में मेरा अंतिम उदाहरण यह है कि जब आप अनुरोध करते हैं, तो मैं इस एसएफटीपी क्लाइंट का उपयोग करके सिमलिंक बनाता हूं।
माल्विनस

मुझे अभी भी पता नहीं है कि आपका क्या मतलब है। कृपया यह स्पष्ट करने के लिए अपनी पोस्ट को संपादित करें कि आप स्थानीय स्तर पर क्या कर रहे हैं transform_symlinks, आप विकल्प के बिना sshfs माउंट पर क्या कर रहे हैं, आप transform_symlinksविकल्प के साथ ssh माउंट पर क्या कर रहे हैं , और आप sftp क्लाइंट के साथ क्या कर रहे हैं। Symlinks सामान्य रूप से SSHFS पर काम करते हैं, इसलिए आपके पहले वाक्य का उत्तर "कुछ भी नहीं" है - या तो आप बग का सामना कर चुके हैं या आप सही कमांड टाइप नहीं कर रहे हैं, लेकिन आपकी रिपोर्ट यह जानना अस्पष्ट है कि क्या गलत है।
गिल्स एसओ- बुराई को रोकना '

मैंने स्पष्ट करने की कोशिश की है कि मैं जो सबसे अच्छा कर रहा हूं, उसके लिए मैं क्या पूछ रहा हूं, लेकिन मुझे यकीन नहीं है कि आप क्या हैं क्योंकि प्रश्न मेरे लिए स्पष्ट लगता है। यदि यह अभी भी स्पष्ट नहीं है, तो कृपया मुझे विशेष रूप से बताएं कि किन हिस्सों का कोई मतलब नहीं है और क्यों, और मैं उन बिट्स पर ध्यान केंद्रित करने की कोशिश करूंगा। उम्मीद है कि अब आपके सवालों का जवाब मिल जाएगा।
माल्विनस

जवाबों:


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।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.