Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Na przykładzie katalogu z konfiguracją pidgina. Dzięki temu możemy np. synchronizować kilka instancji komunikatora pomiędzy komputerami.
1. Wyłaczamy pidgina, backupujemy konfigurację:
$ pkill pidgin && mv /home/user/.purple /home/user/.purple.bak
2. Tworzymy pusty folder w którym będziemy montować nasz odszyfrowany zasób:
$ mkdir -p /home/user/.purple
3. Tworzymy pusty folder na Dropboxie z którego będziemy montować zaszyfrowane dane:
$ mkdir -p /home/user/Dropbox/pidgin
4. Instalujemy encfs-a:
$ apt-get update && apt-get install encfs
5. Montujemy encfs-a
$ encfs /home/user/Dropbox/pidgin /home/user/.purple ?>#[enter] New Encfs Password: tajne_haslo Verify Encfs Password: tajne_haslo
6. Weryfikujemy czy dobrze zamontowaliśmy zasób:
$ mount | grep purple encfs on /home/user/.purple type fuse.encfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
7. Kopiujemy pliki konfiguracyjne Pidgina:
$ cp /home/user/.purple.bak/* /home/user/.purple -R
8. Monitorujemy, czy Dropbox zsynchronizował wszystkie pliki:
$ dropbox status Idle
9. Sprawdzamy czy dane faktycznie są szyfrowane:
$ ls /home/user/Dropbox/pidgin/ 2667jhX5,NnUIFpg4JMp69R, mTUN8bFH8Hv9CCcY4lBwAPov 6nAws8S9i1fj4cEniqcj,w,P NDCme3UnSxVqle7R4fmX1T-v 75bUcv3T6LCX1n9Iaxcnn-vK oWH5y3oLBIuyojl4Z9UrxjWu 9cXnkPknTG,N0Pshvq-Gq3lh pu51Dal3LG6aYXM8iQV5334W HZJuqzNzSVVMsKZHVXid2jmA u7x,Ge80kcDlCrXtq7pYHelhO7g-2xlYl5tK4XOO6EqmB, ,ILrW7iBYDJ-bYGxGirbccFD V2RUpnC5s3NbLsVjOjglPW0Q jXRnl7,u3kidvlK40BodH6hl WhbcfnYyE5txresL0HnyYDEU m12yJPMZAsTWqTApDJUFENngYSFMuCk9e,P0XcRtw6AiR- ,YVva6eVCS27VVXCgi81MJFQ
10. Odmontowujemy zasób:
$ fusermount -u /home/user/.purple
11. Do automatycznego montowania przy starcie, potrzebny będzie wrapper, który zapisujemy w /root/bin/encfs:
#!/bin/sh grep -q "encfs $2 fuse.encfs" /etc/mtab || grep "$1" /root/bin/encfs_password | sed "s/.*://g" | /usr/bin/encfs -S --public $@
12. Plik z hasłem w poniższym formacie zapisujemy w /root/bin/encfs_password:
$ cat /root/bin/encfs_password /home/michal/Dropbox/pidgin:tajne_haslo
13. Do /etc/fstab dopisujemy:
/root/bin/encfs#/home/user/Dropbox/pidgin /home/user/.purple fuse defaults 0 0
14. Montujemy szyfrowany zasób przez fstab-a:
# mount -a
15. Uruchamiamy pidgina, cieszymy się z działającej i bezpiecznej synchronizacji danych przez Dropboxa:
$ pidgin &
16. Warto zapoznać się z działaniem narzędzia encfsctl. Dzięki niemu można: uzyskać informacje o rodzaju szyfrowania zadanego kontenera, zmienić hasło zaszyfrowanego zasobu, zaszyfrować/zdeszyfrować zadany plik w locie.
$ man encfsctl
Ostatnio edytowany przez megabajt (2013-11-23 16:10:32)
Offline
Jedyny problem, jaki zauważyłem a korzystam już od dłuższego czaso, to trzeba pilnować aby była włączona zawsze tylko jedna instancja Pidgina. Gdy są dwie lub więcej, pidgin non stop zapisuje do tego samego pliku (np. prefs.xml lub blist.xml) przez co Dropbox tworzy kolejne kopie tego samego pliku. Trzeba tego pilnować i/lub wrzucić coś takiego do crona:
* * * * * root find /home/user/Dropbox/pidgin -name "*conflicted\ copy*" -exec rm -rf {} \;
Offline
To standard, tak samo się dzieje przy używaniu kontenera truecrypt na dropboxie przez 2 osoby w tym samym czasie. Przy czym jeśli zaczniesz tworzyć takie pliki przez tego typu zachowanie to każdy z nich ma inną treść, w zależności od zmian wprowadzonych w każdej instancji i chyba wiesz co niesie ze sobą takie działanie oraz usuwanie tych plików. Dlatego lepiej pilnować by była otwarta tylko jedna instancja w tym samym czasie, inaczej możesz mieć np. dziury w historii rozmów itp.
Offline
Tworzę właśnie sobie setup ale:
morfik:~/Desktop$ encfs /media/Server/Dropbox/zaszyfrowane_sync/ /home/morfik/Desktop/testowe_zaszyfrowane/ Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode. ?> x Manual configuration mode selected. The following cipher algorithms are available: 1. AES : 16 byte block cipher -- Supports key lengths of 128 to 256 bits -- Supports block sizes of 64 to 4096 bytes 2. Blowfish : 8 byte block cipher -- Supports key lengths of 128 to 256 bits -- Supports block sizes of 64 to 4096 bytes Enter the number corresponding to your choice: 1 Selected algorithm "AES" Please select a key size in bits. The cipher you have chosen supports sizes from 128 to 256 bits in increments of 64 bits. For example: 128, 192, 256 Selected key size: 256 Using key size of 256 bits Select a block size in bytes. The cipher you have chosen supports sizes from 64 to 4096 bytes in increments of 16. Or just hit enter for the default (1024 bytes) filesystem block size: 4096 Using filesystem block size of 4096 bytes The following filename encoding algorithms are available: 1. Block : Block encoding, hides file name size somewhat 2. Null : No encryption of filenames 3. Stream : Stream encoding, keeps filenames as short as possible Enter the number corresponding to your choice: 1 Selected algorithm "Block"" Enable filename initialization vector chaining? This makes filename encoding dependent on the complete path, rather then encoding each path element individually. The default here is Yes. Any response that does not begin with 'n' will mean Yes: yes Enable per-file initialization vectors? This adds about 8 bytes per file to the storage requirements. It should not affect performance except possibly with applications which rely on block-aligned file io for performance. The default here is Yes. Any response that does not begin with 'n' will mean Yes: yes Enable filename to IV header chaining? This makes file data encoding dependent on the complete file path. If a file is renamed, it will not decode sucessfully unless it was renamed by encfs with the proper key. If this option is enabled, then hard links will not be supported in the filesystem. The default here is No. Any response that does not begin with 'y' will mean No: yes Enable block authentication code headers on every block in a file? This adds about 12 bytes per block to the storage requirements for a file, and significantly affects performance but it also means [almost] any modifications or errors within a block will be caught and will cause a read error. The default here is No. Any response that does not begin with 'y' will mean No: yes Add random bytes to each block header? This adds a performance penalty, but ensures that blocks have different authentication codes. Note that you can have the same benefits by enabling per-file initialization vectors, which does not come with as great of performance penalty. Select a number of bytes, from 0 (no random bytes) to 8: 0 Enable file-hole pass-through? This avoids writing encrypted blocks when file holes are created. The default here is Yes. Any response that does not begin with 'n' will mean Yes: yes Configuration finished. The filesystem to be created has the following properties: Filesystem cipher: "ssl/aes", version 3:0:2 Filename encoding: "nameio/block", version 3:0:1 Key Size: 256 bits Block Size: 4096 bytes, including 8 byte MAC header Each file contains 8 byte header with unique IV data. Filenames encoded using IV chaining mode. File data IV is chained to filename IV. File holes passed through to ciphertext. -------------------------- WARNING -------------------------- The external initialization-vector chaining option has been enabled. This option disables the use of hard links on the filesystem. Without hard links, some programs may not work. The programs 'mutt' and 'procmail' are known to fail. For more information, please see the encfs mailing list. If you would like to choose another configuration setting, please press CTRL-C now to abort and start over. Now you will need to enter a password for your filesystem. You will need to remember this password, as there is absolutely no recovery mechanism. However, the password can be changed later using encfsctl. New Encfs Password: Verify Encfs Password: fuse: failed to exec fusermount: Permission denied fuse failed. Common problems: - fuse kernel module not installed (modprobe fuse) - invalid options -- see usage message
To dziwne, bo:
$ lsmod | grep -i fuse fuse 61026 1 $ id uid=1000(morfik) gid=1000(morfik) groups=1000(morfik),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),115(fuse),122(vboxusers),5001(dane)
Ale fusermount wyskakuje tylko na root.
root:~# ls -al /bin/fusermount -rwsr-xr-- 1 root pulse 31K Mar 10 2013 /bin/fusermount*
WTF? Co tam robi grupa pulse? xD Też tak masz? Tam chyba powinno być fuse w grupie, to nie bug to ficzer. :]
Dociągnąłem w każdym razie wersję z experimentala i tam już jest normalnie, nie wiem czy to problem lokalny czy też tej wersji pakietu, jak coś to daj znać. I dodaj też wzmianki o instalacji fuse + dodaniu usera do grupy fuse, inaczej będzie musiał robić wszystko z roota.
Ale już mi się podoba:
morfik:~/Desktop$ ls -al /media/Server/Dropbox/zaszyfrowane_sync/ /home/morfik/Desktop/testowe_zaszyfrowane/ /home/morfik/Desktop/testowe_zaszyfrowane/: total 12K drwxr-xr-x 2 morfik morfik 4.0K Nov 23 02:11 ./ drwxr-xr-x 8 morfik morfik 4.0K Nov 23 01:45 ../ -rwxr-xr-x 1 morfik morfik 896 Jul 4 12:02 skrypt* /media/Server/Dropbox/zaszyfrowane_sync/: total 16K drwxr-xr-x 2 morfik morfik 4.0K Nov 23 02:11 ./ drwx------ 8 morfik morfik 4.0K Nov 23 01:33 ../ -rw-r--r-- 1 morfik morfik 1.1K Nov 23 01:43 .encfs6.xml -rwxr-xr-x 1 morfik morfik 912 Jul 4 12:02 CNdpIAJkpe0bPsDjemJ-8986*
Kilka uwag:
Linijka w pliku powinna wyglądać tak:
/media/Server/Dropbox/zaszyfrowane_sync/:haslo
bez [ ] inaczej wyrzuci:
# mount -a Error decoding volume key, password incorrect
Druga sprawa, czemu w fstab musi być # między ścieżkami?
/home/morfik/Desktop/mount_fuse#/media/Server/Dropbox/zaszyfrowane_sync /home/morfik/Desktop/testowe_zaszyfrowane fuse defaults 0 0
I chyba ostatnia jaka mi przychodzi do głowy — jeśli zsynchronizuję sobie drugą maszynę to część kroków trzeba powtórzyć na każdej podłączonej maszynie. Trzeba mieć skrypt hasło i wpis w /etc/fstab , inaczej nic z tym się nie zrobi/ xD
Mi wpadł inny ciekawy pomysł jak to ogarnąć i może tego nie będę używał do komunikatora, ale porównam sobie to z kontenerem luksa i zobaczę które jest wygodniejsze, bo truecrypt trochę był niedorobiony jakby nie patrzeć ale jeśli będzie to wyglądało tak jak myślę, że będzie, to uprości sporo robotę i bardziej zabezpieczy dane, bo nie będzie potrzeba zewnętrznych plików z hasłami i skryptów by automatycznie otworzyć kontener. Całość będzie zaszyfrowana, montowana na starcie bez dodatkowego hasła (o ile ma się zaszyfrowany system) i nie będzie żadnych przecieków informacji, bo w tym przypadku jakby nie patrzeć jest znana liczba plików, dobrze chociaż, że nazwy są zaszyfrowane i pliki nieco zmienione (przynajmniej w moim setupie). :)
Co do samego encfs jeszcze — istnieją dwa inne sposoby na montowanie i do tego prostsze. Jeden wykorzystuje gnome-keyring — więcej do poczytania tutaj https://bitbucket.org/obensonne/gnome-encfs/src , a drugi mechanizm pam — paczka libpam-encfs, tego drugiego jeszcze nie obadałem, ale gnome-keyring działa wyśmienicie.i montuje automatycznie po zalogowaniu się usera.
Udało mi się też wykorzystać pam, choć tutaj trochę dziwacznie to działa. Bo jeśli katalog ma to samo hasło, wtedy przy logowaniu np w lightdm się podaje jedno hasło i ono nas loguje i do systemu i otwiera katalog, ale jak katalog ma inne hasło, to trzeba w okienku logowania do systemu podawać dwa hasła, przy czym nie wiadomo które a i tak po podaniu właściwego wyrzuca, że jest niewłaściwe. xD Ale po tym podanie drugiego hasła, loguje do systemu.
Gdzieś mi się tam przez oczy przewineło gnome-keyring, da radę jakoś pam nauczyć by korzystał z keyringa, tak by to działało na takiej zasadzie, wpisujemy hasło do logowania, włazimy do systemu, wyrzuca okienko, blabla potrzebne hasło by zamontować zaszyfrowany katalog, klikamy zapisz hasło (w keyringu) i mamy z głowy? Od tej pory automatycznie sobie system otworzy katalog korzystając z pam i gnome-keyringa, da radę coś takiego?
Ostatnio edytowany przez morfik (2013-11-23 05:28:12)
Offline
[quote=morfik]WTF? Co tam robi grupa pulse? xD Też tak masz? Tam chyba powinno być fuse w grupie, to nie bug to ficzer. :][/quote]
ls -la `which fusermount` -rwsr-xr-x 1 root fuse 30864 Jan 2 2013 /bin/fusermount
U mnie jest ok, na wszystkich komputerach
[quote=morfik]Dociągnąłem w każdym razie wersję z experimentala i tam już jest normalnie, nie wiem czy to problem lokalny czy też tej wersji pakietu, jak coś to daj znać. I dodaj też wzmianki o instalacji fuse + dodaniu usera do grupy fuse, inaczej będzie musiał robić wszystko z roota.[/quote]
Wyszedłem z założenia, że trzeba edytować fstab-a więc root i tak jest potrzebny :)
[quote=morfik]Linijka w pliku powinna wyglądać tak:
/media/Server/Dropbox/zaszyfrowane_sync/:haslo
[/quote]
Poprawione
[quote=morfik]Druga sprawa, czemu w fstab musi być # między ścieżkami?[/quote]
Bo inaczej nie działa :)
Jeżeli chodzi o inne sposoby montowania, to wydaje mi się, że fstab jest najbardziej uniwersalny. Gnome-keyring zadziała, ale na tylko na gnomo-podobnych tworach i pod warunkiem, że masz x-y w ogóle :)
Ostatnio edytowany przez megabajt (2013-11-23 10:22:41)
Offline
[quote=megabajt]Gnome-keyring zadziała, ale na tylko na gnomo-podobnych tworach i pod warunkiem, że masz x-y w ogóle :)[/quote]
Jakby nie patrzeć, dziś wszyscy mają x-y, a gnome-keyring nie jest też znowu tylko dla gnome. Mi na openboxie bardzo dobrze się sprawuje i sporo ułatwia życie.
A co do samego fusermount, zainstalowałem ponownie wersję z testinga i teraz jest ok, nie mam pojęcia czemu wtedy tam była grupa pulse. xD
I jeszcze taka sprawa. Napisz coś o narzędziu encfsctl , za jego pomocą można zmienić hasło do katalogu itp.
Ostatnio edytowany przez morfik (2013-11-23 15:10:41)
Offline
[quote=morfik]Jakby nie patrzeć, dziś wszyscy mają x-y, a gnome-keyring nie jest też znowu tylko dla gnome. Mi na openboxie bardzo dobrze się sprawuje i sporo ułatwia życie.[/quote]
Na xfce też go używam, ale posiadacze KDE będą niepocieszeni ;)
Offline
Oni tam chyba mają jakieś własne kwalety czy coś, nie szukałem info o tym, pewnie też się da jakoś to ogarnąć.
Ja sobie teraz pracuję nad luksem, i póki co wszystko idzie zgodnie z planem. xD
Offline
A jeżeli kontener będzie duży i zapełnimy go duża ilością danych, to czy zmiana pojedynczego pliku w nim, będzie powodować długą synchronizację do chmury?
Offline
Już raz o tym pisałem. :)
Dropbox dzieli pliki na kawałki 4 MiB i tworzy ich sumy kontrolne, które przechowuje w bazie danych. Zatem nasz kontener będzie miał 1000 części po 4 MiB. W przypadku modyfikacji którejkolwiek części, zostanie ona przesłana przez sieć. Nasuwa się pytanie - co w przypadku gdy wrzucimy do kontenera plik, powiedzmy, 1 MiB? Na dobrą sprawę zostanie przesłane nieco ponad 1 MiB danych. Czemu nie 4 MiB? Faktyczne dane zajmują 1 MiB, reszta części zostanie wypełniona zerami, a następnie wszystko zostanie skompresowane. Część części pliku - zawierającego zera (3 MiB) - po kompresji będzie zawierać mniej więcej tyle samo miejsca. Temu też zostanie przesłane przez sieć 1 MiB a nie 4 MiB, co bardzo odciąża łącza. Więcej na ten temat można poczytać na forum dropboxa - https://forums.dropbox.com/topic.php?id=97843.[/quote]
Offline
Time (s) | Query |
---|---|
0.00016 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00118 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.219.207.115' WHERE u.id=1 |
0.00075 | UPDATE punbb_online SET logged=1732893621 WHERE ident='18.219.207.115' |
0.00044 | SELECT * FROM punbb_online WHERE logged<1732893321 |
0.00052 | SELECT topic_id FROM punbb_posts WHERE id=246535 |
0.00172 | SELECT id FROM punbb_posts WHERE topic_id=24648 ORDER BY posted |
0.00085 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24648 AND t.moved_to IS NULL |
0.00012 | SELECT search_for, replace_with FROM punbb_censoring |
0.00152 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24648 ORDER BY p.id LIMIT 0,25 |
0.00087 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24648 |
Total query time: 0.00819 s |