понедельник, 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$
Может это выглядит и не очень красиво, но зато работать можно от имени обычного пользователя. В целом, меня все устраивает.

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

18 коммент.:

Анонимный комментирует...

2. Работать можно только от пользователя root
В опциях монтирования можно попробовать добавить user или users, это разные опции, но смысл у них похожий, подробнее man mount. Можно будет монтировать диски без su (XFCE4 mount plugin - очень удобная штука ;) и после монтирования работать с файлами от имени обычного пользователя.
А работать из-под root - это совсем неправильно. Только для настроек и тестирования сети. А все остальное в правильно настроенной системе может обычный пользователь - просто надо разобраться, как ему дать права это делать ;)

Avari

serhiy cherevko комментирует...

Да я и сам понимаю, что работать из под рута это не хорошо. Можно правда пользоваться утилитой sudo, но тоже не очень удобно. Пошел рыться в опциях монтирования.

serhiy cherevko комментирует...

Немного разобрался. Теперь монтировать и работать можно от имени обычного пользователя. Права рута нужны только для того, чтобы отмонтировать данный раздел.

libc6 комментирует...

Интересно, как просисходит монтирование, ведь страрт сетевых сервисов и соединение с нетом происходят после монтировнаия разделов в соответствии с /etc/fstab.

serhiy cherevko комментирует...

to_lib6

Пока не могу ответить на этот вопрос.
А как монтируется NFS?

olly комментирует...

Вообще для того что бы отмонтировать fuse-файловые системы не от рута, надо пользоваться fusermount -u. ;) Во всяком случае у меня это прекрасно работает для siefs (только ее юзаю под fuse) под обычным юзером.

serhiy cherevko комментирует...

Вообще для того что бы отмонтировать fuse-файловые системы не от рута, надо пользоваться fusermount -u. ;)

Вот спасибо!!! Действительно работает :).

Анонимный комментирует...

drwxr-xr-x 2 root root 48 2007-04-21 14:13 ds2
drwxr-xr-x 2 root root 48 2007-04-21 14:13 ds3
?--------- ? ? ? ? ? gmailfs
drwxr-xr-x 2 root root 48 2007-04-21 13:28 loop1

вроде все сделал правильно, монтируется не выдает никаких ошибок, только после монтирования каталог становится недоступен, ниот юзера ни от рута.

Siado комментирует...

Еще нашел проблему, если в пароле содержатся запятые(или не только запятые)
при вводе пароля типа PaSs,wd
получаем вывод:
Ignored option : wd
И далее пароль считается неверным.

Пробовал такими способами:
"PaSs,wd"
'PaSs,wd'
PaSs\,wd

pass="PaSs,wd"
password=$pass

Эффект тот же. Не знаю, что и делать, а пароль менять не по джентльменски.

Прокладка СКС комментирует...

Я сам не линуксоид, но идея мапировать gmail как сетевой диск мне понравилась! Люблю креатив. Спасибо за свежую идею.

ns-keip комментирует...

если монтировать прямо так:

sudo mount -t gmailfs none /mnt/gmail -o username=account_name@gmail.com,password=password,fsname=xxx

то любой желающий увидит ваш пароль и логин, использовав ps aux | grep gmail.com

просветите, как складывать опции в отдельный файл?

virtul комментирует...

Монтировать-то монтирует и даже вроде копирует что-то. Только вот почему-то файлы после этого не появляются (вывод ls пустой), хотя в вебинтерфейсе файлы есть. Это только у меня так или это нормальное поведение такое?

mrvisor комментирует...

Я вообще знал, что такое можно делать с Gmail-ом. Но знал я только как это делается в винде...
Спасибо большое за статью, обязательно попробую.

ЗЫ: предлагаю обмен ссылками!
http://mrvisor.wordpress.com/
на вас ссылку я уже добавил :)

Георгий Виноградов комментирует...

Что-то не получается у меня от обычного пользователя монтировать...

Keip комментирует...

что-то вообще работать отказывается

eddy комментирует...

существуют fuseftp, для монтирования ftp разделов, fusesmb монтирования сетевых директорий Windows.
подскажите плиз как в win xp создать виртуал hdd с фтп-источником? эти фусе я искал но вроде всё для линукс

Larisa комментирует...

а вот это вот!!!
-
приходить в контакт, iCQ, allnight первыми и после удаляться не прощаясь с напускным безразличием и видом жутко занятых особ, которые случайно опустились с небес до нас смертных,
Generic Viagra
Viagra Online
Buy Viagra

三重古天樂 комментирует...

酒店經紀 酒店打工 酒店工作 酒店上班 酒店兼差 酒店兼職 打工兼差 打工兼職 台北酒店 酒店應徵 禮服店 酒店 經紀 打工 兼差便服店 台北酒店經紀 酒店薪水 酒店工作內容 酒店時間 酒店經濟 美式餐廳 台北咖啡廳 永康街咖啡廳

酒店經紀 酒店小姐 酒店經紀公司
台北酒店工作 台北酒店經紀人 酒店兼差 台北酒店上班 酒店打工 酒店工作內容 酒店pt 台北酒店 便服店 禮服店 酒店 酒店工作 酒店上班時間 酒店上班薪水 酒店上班內容 現領 當日領
打工兼職 打工兼差 酒店營業時間
酒店經濟 酒店面試
酒店兼職 酒店公關 酒店上班2015/08/27