Показаны сообщения с ярлыком fuse. Показать все сообщения
Показаны сообщения с ярлыком fuse. Показать все сообщения

18 Апрель 2007 г.

Чтение-запись NTFS с использованием драйвера ntfs-3g в Debian.

NTFS-3g - это свободный драйвер для работы в режиме чтения и записи с файловой системой NTFS. Это еще одно детище файловой системы в пространстве пользователя - FUSE. По умолчанию (без этого драйвера) в большинстве дистрибутивов Linux поддерживается только чтение, для разделов NTFS и чтение/запись, для разделов FAT. Поэтому, если у вас помимо Linux на компьютере установлена Windows, работающая на NTFS, вам понадобится установка дополнительного драйвера, лучшим из которых является NTFS-3g.

Установка в Debian Sarge, Debian Sid и Ubuntu.

Здесь никаких проблем нет, так как данный драйвер входит в репозитории дистрибутивов.

$ sudo apt-get install ntfs-3g

FUSE и пару дополнительных библиотек установятся, как нужные для работы драйвера.

Установка в Debian Etch.

По причинам безопасности NTFS-3g не был вкючен в Debian Etch (выглядит странно, так как уже вышла стабильная версия драйвера 1.0). О том, чем заменить этот драйвер, я так ничего и не нашел. Поэтому решил ставить из backports.

Добавляем backports в список доступных репозиториев:

$ sudo vi /etc/apt/source.list

и вставляем

deb http://www.backports.org/debian sarge-backports main

(в edgy-backports драйвера пока нет)

Загружаем и добавляем ключи:

$sudo wget -O - http://backports.org/debian/archive.key | sudo apt-key add -

(можно и не добавлять, но в таком случае все время при обновлении списка репозиториев будет выскакивать предупреждение)

Обновляем список репозиториев и устанавливаем NTFS-3g:

$ sudo apt-get update
$ sudo apt-get install ntfs-3g
Альтернативный способ:
$ wget ftp://ftp.ru.debian.org/debian/pool/main/n/ntfs-3g/libntfs-3g0_1.328-2_i386.deb
$ wget ftp://ftp.ru.debian.org/debian/pool/main/n/ntfs-3g/ntfs-3g_1.328-2_i386.deb
$ sudo apt-get install fuse-utils libfuse2
$ sudo dpkg -i libntfs-3g0_1.328-2_i386.deb
$ sudo dpkg -i ntfs-3g_1.328-2_i386.deb

Монтирование.

Создаем точку монтирования:

$ sudo mkdir /mnt/win

Монтируем:

$ sudo mount -t ntfs-3g /dev/sda1 /mnt/win -o umask=0

Вместо /dev/sda1 запишите windows раздел вашего диска (обычно это /dev/hda1). Если у вас локаль отличная от UTF8, выставьте ее значение с помощью опции nls (например nls=koi8-r)

Отмонтировать можно командой:

$ sudo umount /mnt/win

Убедившись в том, что все работает правильно, запись можно добавить в файл /etc/fstab:

$sudo vi /etc/fstab

добавляем:

/dev/sda1 /mnt/win ntfs-3g umask=0,nls=ваша_локаль 0 0

(в случае, если у вас несколько разделов - таким же образом добавьте их все)

Монтируем:

$ sudo mount /mnt/win

После монтирования можно зайти в папку /mnt/win и проверить содержимое. Скорость работы с файловой системой должна быть такой же как и с Linux разделами. Также не должно быть никаких проблем с отображением русских имен файлов.

P.S. Будьте осторожны при удалении файлов из папки windows :).

Читать дальше...

16 Апрель 2007 г.

Gmailfs. Монтируем Gmail как сетевой диск.

Продолжаю играться с виртуальными файловыми системами, построенными на основе fuse (Filesystem in Userspace) - файловой системы в пространстве пользователя. Здесь (SSHFS -монтирование удаленных систем через SSH) я уже писал о sshfs - утилите, позволяющей монтировать разделы удаленного компьютера с помощью fuse. Также существуют еще fuseftp, для монтирования ftp разделов, fusesmb монтирования сетевых директорий Windows, ntfs-3g для монтирования ntfs разделов с возможностью записи, о которых я, надеюсь, напишу позже. Вообще, для желающих создать свою виртуальную файловую систему есть статья Разработка собственной файловой системы с помощью FUSE.


В свою очередь, Gmailfs - это виртуальная файловая система позволяющая пользователям монтировать и использовать дисковое пространство, предоставляемое им с почтовым ящиком от Gmail. На данный момент это приблизительно 3 Гигабайта в ваше личное пользование. Конечно, скорость работы меньше чем с локальными разделами. Главным же преимуществом есть возможность доступа с любой точки земного шара, имеющей выход в Интернет.

Установка.

Здесь я рассматриваю установку программы в Debian Etch. Все должно работать и в последних версиях (Edgy и Feisty) Ubuntu/Kubuntu. С Dapper были некоторые проблемы, решение описано здесь.
Бинарные пакеты для других популярных дистрибутивов тоже существуют. Проверьте с помощью менеджера пакетов вашей системы.
Для работы программы в системе должен быть установлен Python версии 2.3 или позже. Также ядро должно быть собрано с поддержкой fuse. В последних версиях ядра он включен по умолчанию. Если в ядро вашего дистрибутива этот модуль не включен, соберите и установите его как описано здесь.

Собственно установка:

$ sudo apt-get install gmailfs

Проверяем, загружен ли модуль fuse (у меня не был):

$ lsmod | grep fuse

Если команда выдает что-нибудь наподобие:

fuse 48944 0

все замечательно, следующий шаг можно пропустить, иначе
подгружаем модуль fuse:

$ sudo modprobe fuse

Модуль должен подгрузиться. Можете проверить опять.

Теперь можно приступить и к знакомой работе, связанной с монтированием.

Монтирование.

Создаем точку монтирования:

$ sudo mkdir -p /mnt/gmail

Монтировать как всегда можно вручную (после перезагрузки все теряется) и прописав опции монтирования в файле /etc/fstab. Все зависит от частоты перезагрузки вашего компьютера и частоты пользования данной утилитой. Рассмотрим оба варианта.

Монтирование вручную:

Наберите в терминале следующее:
$ sudo mount -t gmailfs none /mnt/gmail -o username=account_name@gmail.com,password=password,fsname=xxx
Ignored option :rw

Вставьте соответственно имя своего аккаунта и пароль. Также введите что-нибудь пооригинальней в пункте fsname (вроде пароля).

Для проверки скопируйте файл в созданную директорию и проверьте ее содержимое (только под пользователем root).

$su
#cd /mnt/gmail/
#mc (копируем файлы в папку /mnt/gmail)
#ls
1.png 2.png 3.png 4.png

Закончив работу, отмонтируем:

#umount /mnt/gmail

Монтируем с записью в /etc/fstab/:

Открываем упомянутый файл:

$ sudo nano /etc/fstab

и вносим в него опции монтирования:

/usr/share/pycentral/gmailfs/site-packages/gmailfs.py /mnt/gmail gmailfs username=account_name@gmail.com,password=password,fsname=xxx

Сохраняем изменения и монтируем:

$sudo mount /mnt/gmail

Виртуальная файловая система смонтирована и готова к работе.

В качестве альтернативы все данные (имя, пароль и fsname) можно занести в файл /etc/gmailfs/gmailfs.conf и после этого монтировать без них.

Теперь несколько слов о проблемах:

1. При копировании файла на gmail-disc на ящик приходит 3 письма с такими заголовками:
"v=3 r=1137456558 q=__g__gmail__h__ "

Я эту проблему решил с помощью настройки фильтров на аккаунте gmail и в почтовой программе. В качестве параметра для фильтрования можно задать величину q=__g__123123__h__, где 123123 ваш fsname.


2. Работать можно только от пользователя root
От имени обычного пользователя зайти в примонтированную папку не получается. При попытке просмотреть права доступа выдает следующее:

serhiy@debian:/mnt$ ls -l
итого 6
?--------- ? ? ? ? ? gmail

Пока не знаю как с этим бороться. Добавление пользователя в группу fuse не помогло. Может, кто-нибудь сталкивался?

Монтировать нужно от имени обычного пользователя, а размонтировать с помощью sudo:

serhiy@debian:/mnt$ mount /mnt/gmail/
serhiy@debian:/mnt$ cd gmail/
serhiy@debian:/mnt/gmail$ ls
1.png 2.png 3.png 4.png IMG_0001.JPG
serhiy@debian:/mnt/gmail$ umount /mnt/gmail
serhiy@debian:/mnt/gmail$ cd ..
serhiy@debian:/mnt$ umount /mnt/gmail
umount: /mnt/gmail mount disagrees with the fstab
serhiy@debian:/mnt$ sudo umount /mnt/gmail/
serhiy@debian:/mnt$
Может это выглядит и не очень красиво, но зато работать можно от имени обычного пользователя. В целом, меня все устраивает.

Пока же буду работать только от имени суперпользователя.

Читать дальше...

12 Март 2007 г.

SSHFS -монтирование удаленных систем через SSH.

sshfs - это утилита, основанная на FUSE (Filesystem in Userspace), которая позволяет монтировать удаленные системы и работать с ними так, как будто это файловая система на вашем компьютере (что-то на подобие /proc и /sys). Если вы читали предыдущую статью Установка и настройка NFS сервера и NFS клиента в [K]Ubuntu., то вам это покажется знакомым. В отличии от NFS, в sshfs все данные передаются через зашифрованное SSH–соединения. Но с другой стороны sshfs работает немного медленее. В любом случае, можно выделить несколько положительных сторон sshfs:

  • очень легка в использовании (не нужно ничего делать на сервере);
  • все данные передаются в зашифрованном виде;
  • хорошо работает при медленном и нестабильном соединении (пересоединяется в случае разрыва соединения);

Установка.
Как я уже говорил, ничего дополнительно на сервере делать не нужно. Все что надо, это установленный и настроеный OpenSSH. Поэтому переходим к настройкам на стороне клиента. FUSE был включен в ядро начиная лишь с версии 2.6.14. Если у вас версия ядра 2.6.14 или выше (чтобы узнать, запустите uname -r), можете вздохнуть с облегчением. Если нет, придется скопилировать модуль fuse и подключить его к ядру:

$sudo modprobe fuse
Теперь можно переходить к установке FUSE и sshfs. Если ваша система не предоставляет бинарных пакетов, вам придется скачать исходники и скомпилировать самому. Скачать можно здесь - FUSE и sshfs-fuse.

В Ubuntu или Kubuntu и Debian testing этого делать не нужно. Все сделали за вас. Нужно лишь установить пакеты:

$sudo apt-get install sshfs

(fuse поставится вместе с зависимостями)

Теперь, поскольку sshfs предназначен для использования от имени обычного пользователя (не рута), добавьте себя (возможно и других пользователей) в группу fuse:

$sudo usermod -a -G fuse имя_пользователя

После этого нужно перелогиниться чтобы попасть в группу fuse.

Использование.

Создайте точку монтирования, скажем, папку local в домашней директории

$cd ~
$mkdir local

Монтируем:

$ sshfs alien@10.52.31.1:/home/data /home/serhiy/local

(заметьте, монтирование происходит от имени обычного юзера (нет sudo перед командой монтирования))

здесь:
alien - это имя пользователя на удаленной машине
10.52.31.1 - IP удаленного компьютера
/home/data - директория на удаленном компьютере
/home/serhiy/local - точка монтирования на компьютере пользователя, куда будет монтирована /home/data.

После этого должно появиться приглашение:

The authenticity of host '10.52.31.1 (10.52.31.1)' can't be established.
RSA key fingerprint is 28:a2:c5:8c:93:db:3c:95:1c:e0:90:c8:71:7f:53:43.
Are you sure you want to continue connecting (yes/no)? yes
alien@10.52.31.1's password:

(введите пароль пользователя alien). Все. Заходим в /home/serhiy/local, гды вы должны увидеть содержимое /home/data удаленного компьютера.

Если после ввода пароля Вы увидите запись (у меня она появилась при входе с Kubuntu Edgy Eft на Kubuntu Dapper Drake):

$fusermount: failed to open /dev/fuse: Permission denied

это может быть связано с багом fuse. Для решения этой проблемы измените группу файла /dev/fuse на fuse:

$sudo chgrp fuse /dev/fuse

Поработав, можно и отмонтировать:

$ fusermount -u ~/local

Как я уже упомянул, после запуска команды на монтирование приходится вводить пароль SSH (если вы не настроили доступ по ключам до этого). Это не очень удобно. Поэтому, для большего удобства, настроим соединение с помощью ключей. Для этого на компьютере пользователя:
$cd ~
$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/serhiy/.ssh/id_rsa):ENTER
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /home/serhiy/.ssh/id_rsa.
Your public key has been saved in /home/serhiy/.ssh/id_rsa.pub.
The key fingerprint is:
fa:e7:7c:e1:cb:7b:66:8b:67:07:05:99:7f:05:b9:4a
Все. Ключи были созданы в папке .ssh. После этого нужно добавить ключ id_rsa.pub в список авторизованных ключей на сервер:


$cat ~/.ssh/id_rsa.pub | ssh alien@10.52.31.1 "cat - >> .ssh/authorized_keys"

Замените alien и 10.52.31.1 на имя пользователя и IP удаленного сервера.

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

$ fusermount -u ~/local

и примонтируйте заново.

Источники:
http://linux.inet.hr/sshfs_secure_and_transparent_access_to_remote_filesystems.html
http://www.linuxjournal.com/article/8904
http://iar.spb.ru/ssh/mount

Читать дальше...