sshfs माउंट, सुडो को अनुमति से वंचित कर दिया गया


53

मैं sshfsअपनी ~/निर्देशिका में ssh पर कुछ अजगर परियोजनाओं के साथ एक फ़ोल्डर माउंट करने के लिए उपयोग कर रहा हूं ।

$ mkdir -p ~/mount/my-projects
$ sshfs user@example.com:/home/user/my-projects ~/mount/my-projects

मैं अधिकांश कमांड का प्रदर्शन कर सकता हूं जैसा कि उम्मीद की जा सकती है:

$ ls ~/mount/my-projects
some-python-project

लेकिन अगर मैं कुछ भी करने की कोशिश करता हूं sudo, तो यह अनुमति से वंचित रह जाता है:

$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied

जो मैं वास्तव में पूरा करने की कोशिश कर रहा हूं वह मेरे स्थानीय मशीन पर एक अजगर पैकेज स्थापना स्क्रिप्ट का परीक्षण करना है:

$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install

जवाबों:


93

मेरा मानना ​​है कि आपको allow_othersshfs के विकल्प का उपयोग करने की आवश्यकता है। ऐसा करने के लिए, आपको इसे sudo के साथ कॉल करना चाहिए, इस प्रकार है: -

sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects

इस विकल्प के बिना, केवल उपयोगकर्ता जो sshfs चलाते थे, माउंट तक पहुंच सकते हैं। यह एक फ्यूज प्रतिबंध है। अधिक जानकारी टाइप करके उपलब्ध है man fuse

आपको यह भी ध्यान देना चाहिए कि (कम से कम उबंटू पर) आपको 'फ्यूज' समूह का सदस्य होने की आवश्यकता है, अन्यथा ऊपर की कमान /etc/fuse.conf'सुडो' के बिना चलने पर सक्षम नहीं होने की शिकायत करेगी ।


2
अच्छा पहला जवाब!
SLM

13
केवल allow_rootअनुमति देने का विकल्प भी देखें root। कृपया ध्यान दें कि वे विकल्प डिफ़ॉल्ट रूप से रूट करने के लिए प्रतिबंधित हैं जब तक कि आप एक user_allow_otherपंक्ति नहीं जोड़ते हैं /etc/fuse.conf
स्टीफन चेज़लस

7

sshfsएक उपयोगकर्ता प्रक्रिया है, इसलिए इसे चलाने की कोई आवश्यकता नहीं है sudo

आप sudo के रूप में यह चलाने के लिए और SSH कुंजी प्रमाणीकरण का उपयोग करते हैं, तो कुंजी के अंतर्गत खोज की जाएगी /root/.sshऔर अपने उपयोगकर्ता की तहत /home/myuser/.ssh

वही ~/.ssh/configफाइल पर लागू होता है जो sshfsउपयोग करने में सक्षम है।

यदि आपके पास ऐसा ~/.ssh/configहै:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile ~/.ssh/id_rsa

तब आप अपने दूरस्थ होस्ट को सामान्य उपयोगकर्ता के रूप में माउंट कर सकते हैं:

sshfs remotehost: local_dir

रूट के तहत चलाने के लिए आप -o IdentityFile /home/myuser/.ssh/id_rsa'रॉ' sshfsकमांड को जोड़ सकते हैं , या /root/.ssh/configअपने उपयोगकर्ता के SSH कुंजी के लिए पूर्ण पथ के साथ बना सकते हैं:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile /home/myuser/.ssh/id_rsa

अब sshfs remotehost: local_dirरूट के तहत भी काम करेंगे।

आपके .ssh/configस्थान पर आप मेजबानों के बीच (दूरस्थ से स्थानीय) scp -r remotehost:remotedir localdirया (स्थानीय से दूरस्थ) के बीच पूरे फ़ोल्डर को कॉपी कर सकते हैं scp -r localdir remotehost:remotedir, इसलिए एक एकल-बंद ऑपरेशन के लिए, आपको आवश्यकता भी नहीं हो सकती है sshfs

यदि आप एक रिश्तेदार दूरस्थ पथ का उपयोग करते हैं, remotehost:remotedirतो remotedirउपयोगकर्ता के होम फ़ोल्डर के सापेक्ष होगा, अर्थात remotehost:remotedirके बराबर हैremotehost:/home/myuser/remotedir


1

मेरे लिए इस समस्या का हल क्या है allow_otherजैसे कमांड में विकल्प जोड़ रहा था :

$ sshfs -o allow_other user@example.com:/home/user/my-projects ~/mount/my-projects

तब आपको त्रुटि मिल सकती है:

विकल्प allow_other केवल तभी अनुमति देता है जब 'user_allow_other' को /etc/fuse.conf में सेट किया गया हो, उस सिर को /etc/fuse.conf को अपने पसंदीदा टेक्स्ट एडिटर और अनकंफ़र्ट के साथ हल करने के लिए (# पीछे हटाएं) user_allow_other

अगर वह समस्या हल हो गई और आप sshfsसफलतापूर्वक भाग सकते हैं , तो बढ़िया! यदि आपको इस आदेश द्वारा अपने उपयोगकर्ता को फ्यूज समूह में जोड़ने का प्रयास नहीं करना चाहिए:

$ usermod -a -G mark fuse

और अगर यह त्रुटि का परिणाम है कि फ्यूज समूह मौजूद नहीं है तो आप आसानी से उस समूह को बना सकते हैं:

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