sshfs mount, sudo отримує відмову в дозволі


53

Я використовую sshfsдля монтажу папки з деякими проектами python над 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

Те, що я насправді намагаюся досягти, - це протестувати сценарій встановлення пакету python на моїй локальній машині:

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

Відповіді:


93

Я вважаю, що вам потрібно використовувати цю allow_otherопцію для sshfs. Для цього вам слід назвати це судо таким чином:

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

Без цієї опції тільки користувач, який запустив sshfs, може отримати доступ до версії. Це обмеження запобіжника. Більше інформації можна отримати, набравши текст man fuse.

Слід також зазначити, що (принаймні, на Ubuntu) вам потрібно бути членом групи "fuse", інакше команда, подана вище, поскаржиться на неможливість доступу, /etc/fuse.confколи не працює без "sudo".


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команду "raw" 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

то ви можете отримати помилку:

опція enable_other дозволена лише в тому випадку, якщо в /etc/fuse.conf встановлено "user_allow_other", щоб вирішити цю голову в /etc/fuse.conf з улюбленим текстовим редактором і відмітити (видаліть # позаду) user_allow_other

Якщо це вирішило проблему, і ви могли б sshfsуспішно працювати , чудово! Якщо ні, спробуйте додати свого користувача до групи запобіжників за допомогою цієї команди:

$ usermod -a -G mark fuse

і якщо це призведе до помилки, кажучи, що група запобіжників не існує, ви можете легко створити її:

$ sudo groupadd mynewgroup
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.