2013-11-14 4 views
12

Я хотел бы установить удаленный каталог через sshfs на моем компьютере Debian, скажем в /work. Поэтому я добавил мой пользователь fuse группе и я бегу:Sshfs как обычный пользователь через fstab

sshfs [email protected]:/remote/dir /work 

и все работает отлично. Однако было бы очень приятно, чтобы каталог был установлен при загрузке. Так что я попробовал /etc/fstab запись ниже:

sshfs#[email protected]:/remote/dir /work  fuse  user,_netdev,reconnect,uid=1000,gid=1000,idmap=user 0 0 

sshfs запрашивает пароль и монтирует почти правильно. Почти, потому что мой регулярные user не имеют доступа к смонтированному каталогу и когда я бег ls -la /, я получаю:

d????????? ? ?  ?    ?   ? work 

Как я могу получить его с правом доступа корыта Fstab?

ответ

26

Использование опции allow_other в /etc/fstab позволяет другим пользователям, кроме тех, кто делает фактический монтаж для доступа к смонтированной файловой системе. Когда вы загружаете свою систему и монтируете свои sshf, это делается пользователем root вместо обычного пользователя. Когда вы добавляете allow_other других пользователей, кроме того, что root может получить доступ к точке монтирования. Разрешения для файлов в точке монтирования остаются такими же, как и раньше, поэтому, если у вас есть каталог с маской 0700, он недоступен никому другому, кроме root и владельца.

Таким образом, вместо

sshfs#[email protected]:/remote/dir /work  fuse  user,_netdev,reconnect,uid=1000,gid=1000,idmap=user 0 0 

использования

sshfs#[email protected]:/remote/dir /work  fuse  user,_netdev,reconnect,uid=1000,gid=1000,idmap=user,allow_other 0 0 

Это сделал трюк для меня по крайней мере. Я не тестировал это, загрузив систему, но вместо этого просто выпустил команду mount в качестве пользователя root, а затем попытался получить доступ к установленным sshfs в качестве обычного пользователя.

+0

Он работал, спасибо очень! Я предположил, что параметры 'uid' и' gid' должны устанавливать принадлежность к каталогу после mount, но, возможно, они делают что-то еще. Не могли бы вы так любезно объяснить, что? – Sventimir

+2

Параметры uid и gid устанавливают uid/gid вещей под монтировкой, однако они являются вторичными по отношению к тому, что sshfs по умолчанию разрешает доступ к файлам под монтированием только пользователю, выполнившему mount.Сама точка монтирования доступна только пользователю, выполняющему монтирование, за исключением случаев, когда это разрешено другим пользователям (= -o allow_other) или корню (= -o allow_root). В вашем случае пользователь установки был root, таким образом, доступ к другим пользователям, чем root, должен был быть предоставлен исключительно с -o allow_root. –

+0

Параметр allow_other mount предоставляет [неразрешенную ошибку безопасности] (https://github.com/libfuse/libfuse/issues/15) в ядре Linux: если опция mount_permissions mount НЕ используется вместе с allow_other, результаты первая проверка разрешений, выполняемая файловой системой для записи в каталоге, будет повторно использоваться для последующего доступа до тех пор, пока inode доступной записи присутствует в кеше ядра - даже если разрешения с тех пор были изменены и даже если последующий доступ производится другим пользователем. – MountainX

1

Кроме того, чтобы дополнить предыдущий ответ:

  1. Вы должны предпочесть [пользователь] @ [хост] синтаксис над SSHFS # [пользователь] @ [хост] один.

  2. Убедитесь, что позволяет пользователям некорневыми указать allow_other опции монтирования в /etc/fuse.conf

  3. Убедитесь, что вы используете каждый SSHFS установить по крайней мере один раз вручную в то время как корень, так добавляется подпись хозяина в файл .ssh/known_hosts.

    $ Суд SSHFS [пользователь] @ [хост]: [remote_path] [local_path] -о allow_other, IdentityFile = [path_to_id_rsa]

REF: https://wiki.archlinux.org/index.php/SSHFS

 Смежные вопросы

  • Нет связанных вопросов^_^