K plné podpoře pro zápis máme dvě možné cesty, jedna vede přes FUSE, což je modul do jádra, který umožňuje implementovat souborové systémy v uživatelském prostoru. Existuje pro něj podpora rozličných filesystémů, jako je SSHFS, který dovoluje přimountovat vzdálený disk skrz SSH, FTPFS, který dovoluje přimountovat FTP adresář, a také NTFS, který nám umožní přimountovat oddíl s NTFS filesystémem. Druhou cestou je použití Captive, který však ke své funkci potřebuje soubor ntfs.sys z Windows a zápis pomocí něho je bezproblémový, avšak moc pomalý (okolo 500 kB/s) a navíc je tento postup zastaralý, takže se jím zde zabývat nebudeme.
Jak již sem říkal, FUSE je jaderný modul, který zprostředkovává možnost implementovat souborový systém v uživatelském prostoru jádra. Pomocí reverzního inženýrství se podařilo implementovat plnou podporu pro čtení i zápis na disky se souborovým systémem NTFS. Zápis už není omezen nemožností vytvářet nové soubory či adresáře, ani nemožností změnit velikost upravovaného souboru. Pro zprovoznění budeme potřebovat balíčky, které obsahují FUSE a modul s podporou NTFS. Nainstalujeme tedy balíčky fuse-utils, libfuse2, libntfs8 a ntfsprogs.
V prvé řadě zajistíme natáhnutí modulu fuse a posléze jeho natažení při každém bootu. Povýšíme svá práva na privilegovaného uživatele, popřípadě budeme u každého příkazu používat sudo. Modul FUSE k jádru připojíme příkazem modprobe fuse, který by měl proběhnout bez jakéhokoli výstupu, pokud se tak stalo, modul je natažen úspěšně, což můžeme ještě ověřit příkazem lsmod | grep fuse. Natažení při každém bootu se zajistí editací souboru /etc/modules buďto ve vašem oblíbeném editoru, nebo příkazem echo fuse >> /etc/modules, který na konec souboru připojí text fuse.
Z důvodů bezpečnostní politiky vytvoříme skupinu s názvem ntfs, která bude mít jako jediná přístup k zápisu do připojovaného adresáře. Skupinu vytvoříme příkazem addgroup ntfs, výstup tohoto příkazu by měl vypadat nějak takto:
root@bigtux:/home/marek# addgroup ntfs Přidávám skupinu "ntfs" (1001)... Hotovo. root@bigtux:/home/marek#
Tímto se nám tedy podařilo přidat skupinu s názvem ntfs, která má GID s hodnotou 1001, avšak u vás se toto číslo může lišit - je uvedeno ve výpisu na druhém řádku v závorce. Nyní do skupiny ntfs přidáme uživatele, kterým chceme umožnit práci s NTFS oddíly. Toto přidání se provede pomocí příkazu adduser uživatelské_jméno ntfs, ve kterém řetězec uživatelské_jméno nahradíme patřičnými uživatelskými jmény a opakujeme jej tolikrát, kolikrát bude potřeba, abychom přidali všechny uživatele, kterým chceme přístup umožnit.
Pokud si budeme přát připojovat tento souborový systém při každém bootu, popřípadě umožnit připojení tohoto filesystému i neprivilegovaným uživatelům, budeme muset editovat soubor /etc/fstab. Pro první možnost, tj. automatické připojení, se musí v souboru /etc/fstab objevit
/dev/hdxn /mnt/ntfs ntfs-fuse auto,gid=1001,umask=0007 0 0
který pozměníme a za /dev/hdxn dosadíme název zařízení, na kterém je tento filesystém, gid je číslo skupiny ntfs a auto značí, že se má oddíl připojovat ihned po startu. Tedy pokud je NTFS na prvním disku a třetím oddílu a zároveň je GID skupiny NTFS 1001, pak bude řádek vypadat následovně:
/dev/hda3 /mnt/ntfs ntfs-fuse auto,gid=1001,umask=0007 0 0
Ještě nesmíme zapomenout vytvořit adresář, do kterého se bude oddíl připojovat, příkazem mkdir /mnt/ntfs. Připojování a odpojování uživatelům povolíte tak, že slovo auto nahradíte slovem user, takže řádek bude vypadat takto:
/dev/hda3 /mnt/ntfs ntfs-fuse user,gid=1001,umask=0007 0 0
Teď se sice adresář nebude připojovat automaticky, ale bude jej moci připojit kterýkoli uživatel v systému, což je řešení výhodné převážně pro výměnná média, jako jsou USB disky a podobně. Nyní si můžeme vyzkoušet, jak jsme byli úspěšní a pokusíme se oddíl připojit příkazem mount /mnt/ntfs - pokud snad dostanete chybovou hlášku mount: unknown filesystem type 'ntfs-fuse', pak nejspíše používáte Ubuntu nebo distribuci z něj vyvozenou, která obsahuje bug. Ten spočívá ve špatném symbolickém odkazu, toto napravíme příkazem rm /sbin/mount.ntfs-fuse && sudo ln /usr/bin/ntfsmount /sbin/mount.ntfs-fuse
.
A nyní by vše už mělo proběhnout bez problémů a oddíl by se měl připojit do patřičného adresáře bez vypsání jakékoli chyby. To si ověříme například tak, že si necháme vypsat obsah adresáře příkazem ls /mnt/ntfs - ten nám vypíše adresáře, které máme na patřičném oddílu. Podporu zápisu můžeme ověřit například vytvořením adresáře na tomto oddílu příkazem mkdir /mnt/ntfs/muj-adresar. Příkaz vytvoří na NTFS oddílu adresář s názvem muj-adresar. Zda-li jej vytvořil, můžeme snadno ověřit příkazem ls -l /mnt/ntfs/ | grep muj-adresar.