Starocie: gmailFS

Posted on Wed 25 March 2020 in Hacks (wannabe), Linux, no_front, Shitz • 3 min read

Kolejny wygrzebany, z czasów gdy nie było chmur.

Znudzony walką z inotify i poruszony myślą, że dziś zaskwierczy coś w domowym dysku i wczoraj uporządkowana kolekcja zdjęć pojedzie na wieczną wycieczkę, poruszony tym więc, postanowiłem sklonować zdjęcia na jakieś backupowe urządzenie.

Płyty DVD (na CD toto się nie mieści) bywają zawodne jak domowe dyski, więc paranoja tylko się powiększyła. I przypomniałem sobie, że ktoś, kiedyś, wymyślił jak używać konta na Gmailu jako dysku na bekapy.

Rzeczywiście, grający w skłosza buddysta, Richard Jones, napisał GmailFS - soft pozwalający na montowanie konta Gmail jak zwykłego filesystemu w Linuksie. GmailFS napisany jest w Pythonie i używa FUSE do tworzenia systemów plików w przestrzeni użytkownika, oraz biblioteki libgmail do komunikacji z Gmailem.

INSTALACJA była trywialna:

  • upewniłem się, że posiadam Pythona 2.3,
  • zainstalowałem najnowszą wersję FUSE,
  • ściągnąłem fuse-python.tar.gz i zainstalowałem jak pan Bóg przykazał,
  • z CVS zdarłem libgmaila i skopiowałem libgmail.py oraz mkconstants.py do /usr/lib/python2.3/site-packages/ (w innych distrach może być inna ścieżka). Zrobiłem link: ln -s /usr/lib/python2.3/site-packages/mkconstants.py /usr/lib/python2.3/site-packages/constants.py, w razie czego bo w dokumentacji była inna nazwa pliku.
  • pobrałem gmailfs-0.4.tar.gz i po rozpakowaniu, skopiowałem pliki: gmailfs.py do /usr/local/bin/gmailfs.py, a mount.gmailfs do /sbin.
UŻYWANIE okazało się równie proste:
aby podmontować konto Gmaila wystarczyło wydać komendę podobną do tej:
mount -t gmailfs /usr/local/bin/gmailfs.py /mnt/dyskgmaila -o username=kajko,password=kokosz,fsname=wK0ssmo-ssie
gdzie:
  • /mnt/dyskgmaila to katalog, pod który podpiąłem konto na Gmailu,
  • kajko to nazwa gmailowego konta,
  • kokosz hasło do tego konta,
  • wK0ssmo-ssie to nazwa systemu plików (fsname), która zapewnić ma mi bezpieczeństwo i dać jeszcze jedną możliwość, o której napiszę później.
Sprawdziłem:
root@gustlik:~# mount | grep fuse
/dev/fuse on /mnt/dyskgmaila type fuse (rw,nosuid,nodev)

DZIAŁA!

W takim razie dodałem wpis do /etc/fstab:
/usr/local/bin/gmailfs.py /mnt/dyskgmaila gmailfs noauto,username=kajko,password=kokosz,fsname=wK0ssmo-ssie
żeby sobie ułatwić życie. Skopiowałem na próbę kilka plików i zadziwiła mnie prędkość - na 2Mb łączu transfer dochodził do 210kB na sekundę! Mniodzio.

Opcja fsname jest równie, jeśli nie bardziej, ważna co nazwa konta i hasło do niego. Jeśliby ktoś zdolny i złośliwy poznał jej brzmienie, mógłby zniszczyć filesystem gmailowy przez "wstrzyknięcie" spreparowanych wiadomości. Dlatego przy jej wyborze trzeba się kierować tymi samymi zasadami co przy wymyślaniu silnych haseł. Jest jeszcze rzecz związana z fsname, otóż dzięki tej opcji możemy utworzyć w naszym gmailowym koncie kilka, niezależych filesystemów. Wystarczy za każdym podmontowaniem konsekwetnie używać różnych fsname. I w ten sposób mogę mieć np. dwa filesystemy, w jednym trzymać zdjęcia o które tak się boję, w drugim dokumenty na których mi zależy. Do mnie należy wybór co w danej chwili chcę mieć podmontowane.

Autor GmailFS zaleca użycie pliku /etc/gmailfs.conf, w którym zapisane są nazwa konta, hasło i fsname. Ma to zapobiec możliwości podejrzenia tych danych przez innych użytkowników w systemie wielodostępowym. W pierwszej chwili popełniłem błąd, pozostawiając w /etc/fstab wpis zawierający nazwę konta, hasło i fsname. Po wpisaniu tych danych do /etc/gmailfs.conf, trzeba koniecznie usunąć te wpisy z fstab-a!

Na koniec JESZCZE TRZY UWAGI:

Ponieważ komunikacja z serwerami Gmail.com odbywa się czystym tekstem, użytkownicy paranoiczni mogą skorzystać z rozszerzenia pyOpenSSL, by transmisje zaszyfrować. Mnie na razie nie chciało się tego robić, może jutro, jutro, jutro....

Kasowanie plików, niestety, nie usuwa ich z konta Gmail lecz przesuwa do Kosza. Usunąć je trzeba ręcznie, logując się na konto za pomocą przeglądarki i czyszcząc zawartość Kosza. Po skopiowaniu plików na GmailFS, na koncie Gmail pojawiają się nowe, odpowiednio spreparowane wiadomości. Aby uniknąć ich wyświetlania, żeby nie mieszały się z normalnymi mejlami, można stworzyć Filtr, który je automatycznie zarchiwizuje. Nie udało mi się tego porządnie zrobić ale tym się nie przejmuję ponieważ na potrzeby GmailFS założyłem sobie oddzielne konto.

PRAWA I ZASADY: w Internecie panuje przekonanie, że używanie GmailFS-a łamie zasady użytkowania kont na Gmail.com. A konkretnie chodzi o zapis:
Accordingly, you agree that you will not copy, reproduce, alter, modify, or create derivative works from the Service. You also agree that you will not use any robot, spider, other automated device, or manual process to monitor or copy any content from the Service.
Oznacza to mniej więcej, że gdy mi opadnie przypadkiem palec na lewym klawiszu myszki, pod X-ami, i niechcący zaznaczę fragment tekstu własnego emaila w otwartym oknie Firefoksa - to właśnie złamałem zasady użytkowania Gmaila, ponieważ skopiowałem tekst do schowka X-ów. Tym samym wykonałem "manual process to monitor or copy any content from the Service". Co za bzdura!