Подключить с помощью sshfs и записать разрешения на файл

Я пытаюсь установить sshfs удаленный каталог, но смонтированные файлы недоступны для записи. У меня закончились идеи или способы отладки этого. Есть ли что-нибудь, что я должен проверить на удаленном сервере?

Я на Xubuntu 14.04. Я монтирую удаленный каталог 14.04 Ubuntu.

local $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty 

Я изменил /etc/fuse.conf

 local $ sudo cat /etc/fuse.conf # /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE) # Set the maximum number of FUSE mounts allowed to non-root users. # The default is 1000. #mount_max = 1000 # Allow non-root users to specify the allow_other or allow_root mount options. user_allow_other 

И мой пользователь находится в группе предохранителей

 local $ sudo grep fuse /etc/group fuse:x:105:MY_LOACL_USERNAME 

И я монтирую удаленный каталог (с помощью / без сочетаний sudo, default_permissions, allow_other):

 local $sudo sshfs -o allow_other,default_permissions -o IdentityFile=/path/to/ssh_key REMOTE_USERNAME@REMOTE_HOST:/remote/dir/path/ /mnt/LOCAL_DIR_NAME/ 

У REMOTE_USERNAME есть права на запись в REMOTE_USERNAME / файлы (на удаленном сервере).

Я попробовал эту команду без sudo, default_permissions и во всех случаях получаю:

 local $ ls -al /mnt/LOCAL_DIR_NAME/a_file -rw-rw-r-- 1 699 699 1513 Aug 12 16:08 /mnt/LOCAL_DIR_NAME/a_file local $ test -w /mnt/LOCAL_DIR_NAME/a_file && echo "Writable" || echo "Not Writable" Not Writable 

Уточнение 0

В ответ на комментарий пользователя3188445:

 $ whoami LOCAL_USER $ cd $ mkdir test_mnt $ sshfs -o allow_other,default_permissions -o IdentityFile=/path/to/ssh_key REMOTE_USERNAME@REMOTE_HOST:/remote/dir/path/ test_mnt/ $ ls test_mnt/ I see the contents of the dir correctly $ ls -al test_mnt/ total 216 drwxr-xr-x 1 699 699 4096 Aug 12 16:42 . drwxr----- 58 LOCAL_USER LOCAL_USER 4096 Aug 17 15:46 .. -rw-r--r-- 1 699 699 2557 Jul 30 16:48 sample_file drwxr-xr-x 1 699 699 4096 Aug 11 17:25 sample_dir $ touch test_mnt/new_file touch: cannot touch 'test_mnt/new_file': Permission denied # extra info: SSH to the remote host and check file permissions $ ssh REMOTE_USERNAME@REMOTE_HOST # on remote host $ ls -al /remote/dir/path/ lrwxrwxrwx 1 root root 18 Jul 30 13:48 /remote/dir/path/ -> /srv/path/path/path/ $ cd /remote/dir/path/ $ ls -al total 216 drwxr-xr-x 26 REMOTE_USERNAME REMOTE_USERNAME 4096 Aug 12 13:42 . drwxr-xr-x 4 root root 4096 Jul 30 14:37 .. -rw-r--r-- 1 REMOTE_USERNAME REMOTE_USERNAME 2557 Jul 30 13:48 sample_file drwxr-xr-x 2 REMOTE_USERNAME REMOTE_USERNAME 4096 Aug 11 14:25 sample_dir 

3 Solutions collect form web for “Подключить с помощью sshfs и записать разрешения на файл”

Не запускайте sshfs с sudo. Если вы это сделаете, ssh будет считать, что файловая система принадлежит root. Запустите его как самостоятельно, затем вы сможете писать в файлы.

осветление

При запуске без sudo вам нужно подключиться к вашему собственному каталогу, поскольку вы, вероятно, не можете писать в / mnt. Итак, вот пример использования sshfs после того, как вы добавили user_allow_other в /etc/fuse.conf:

 $ cd # make sure you are in home directory $ mkdir mnt # create empty directory $ sshfs server.com: mnt # mount my home directory on server.com on ./mnt $ ls mnt [contents of home directory on server] $ touch mnt/new_file # no problem creating a new file $ fusermount -u mnt # unmount file system $ rmdir mnt 

На этот вопрос был дан ответ в списке рассылки linux ; Я отправляю переведенный ответ здесь для полноты.

Решение

Решение не должно использоваться как опциями default_permissions и allow_other (которые я не пытался в своих оригинальных экспериментах).

объяснение

Проблема кажется довольно простой. Когда вы даете опцию default_permissions в fusermount, тогда разрешение на использование плавкого предохранителя на плате плавкого предохранителя обрабатывается ядром, а не плавким предохранителем . Это означает, что uid / gid REMOTE_USER не сопоставлены с LOCAL_USER (sshfs.c IDMAP_NONE). Он работает так же, как простой nfs fs без отображения.

Таким образом, имеет смысл запретить доступ, если номера uid / gid не совпадают.

Если у вас есть опция allow_other то этот allow_other доступен только локальному пользователю с uid 699, если он существует.

Из человека предохранителя:

 'default_permissions' By default FUSE doesn't check file access permissions, the filesystem is free to implement its access policy or leave it to the underlying file access mechanism (eg in case of network filesystems). This option enables permission checking, restricting access based on file mode. It is usually useful together with the 'allow_other' mount option. 'allow_other' This option overrides the security measure restricting file access to the user mounting the filesystem. This option is by default only allowed to root, but this restriction can be removed with a (userspace) configuration option. 

Одна из возможных причин для этого – одна из которых я ударил – заключалась в том, что у меня не было свободного места на диске, который я установил.

  • SSHFS указать ключ
  • установить umask для файловой системы, установленной sshfs
  • Интеграция `afuse` с` sshfs` как (systemd?) User-daemon, порожденная логином или первой оболочкой
  • Невозможно использовать -o allow_other с sshfs (опция включена в файле fuse.conf)
  • Использование списков ACL для чтения / удаленной файловой системы
  • Выполнять команду во всех открытых оболочках
  • Перезагрузите консоль SSHFS без ее удаления
  • Помогите мне заменить sshfs на ssh?
  • Поиск информации по протоколу FISH
  • Есть ли способ отправить команду из удаленного сеанса ssh на ваш локальный компьютер?
  • afuse with sshfs: где есть варианты настройки плавких предохранителей?
  • Interesting Posts

    Проблемы с пылом и джек

    Сценарий оболочки Linux удаляет определенное содержимое в файле

    ls *. * дает: "*. *: Нет такого файла или каталога" сообщение

    Фильтровать файл по номеру строки

    открыть порт 8080 для прослушивания

    Каковы различия между xdotool и xautomation?

    Как перенаправить туннель SSL VPN через HTTP CONNECT-прокси, используя iptables?

    Подстановка команд в качестве цели для перенаправления ввода-вывода

    Что такое XDG_SESSION_COOKIE, кто его использует, и полезно ли для удаленного входа ssh управлять локальной сессией x?

    virtualbox-guest- * установлен на хосте; может ли это быть причиной замерзания системы?

    Как игнорировать файлы, если есть похожий файл с одинаковым размером?

    Какое состояние (состояния) процесса пересчитывается на время процессора?

    неуклюжую работу убивают, слишком большой вклад?

    Не удается mkdir / root (btrfs)

    Когда я пытаюсь запустить комментарий, я получаю ошибку `Команда не может быть найдена, потому что '/ usr / bin' не входит в переменную среды PATH '

    Linux и Unix - лучшая ОС в мире.