Afuse — засіб, що дозволяє автоматично монтувати файлові системи fuse — ntfs, sshfs, mysqlfs, спільні папки в samba та інші. Наразі проект на стадії розробки й доступний лише для користувачів Убунту та Debian Unstable. Решта мають зібрати з сирців:
http://afuse.sourceforge.net/Документації наразі нема, є тільки man afuse з переліком опцій, сторінка проекту, та стаття на linux.com:
http://www.linux.com/feature/128103 Власне, там показано приклад для автомонтування sshfs, який ми тут і розглянемо. Afuse має одне обмеження: доступ до файлової системи має бути без пароля.
1. Отже, спершу ви маєте
зробити авторизацію через ключі для ssh і переконатися, що вона працює.
2. Тепер створимо точку монтування. Для кожного типу файлових систем треба зробити окрему точку монтування для уникнення конфліктів. Отже, створюємо папку:
$mkdir sshfs
3. Тепер запускаємо afuse:
afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs/
4. Усе, тепер папка ~/sshfs є не простою папкою, а папкою монтування віддалених файлових систем. Переходимо в цю папку і виконуємо команду:
$ls noddeat@goodserver.com.ua
Afuse автоматично створить папку noddeat@goodserver.com.ua, в якій буде змонтовано вміст папки / на сервері goodserver.com.ua. Звісно, якщо авторизація пройде без проблем. Подібно автоматичне монтування відбудеться при спробі створити папку noddeat@goodserver.com.ua за допомогою команди mkdir.
Ви спитаєте, ну і чим це краще від ручного запуску sshfs чи прописання у fstab відповідних опцій? Ну, по-перше, тим, що afuse виконується від імені користувача, а відтак кожен користувач може монтувати свої віддалені папки, без прав рута й перезавантаження машини. По-друге, погодьтеся, запуск ls noddeat@krutyiserver — це значно менше буков, ніж
sshfs noddeat@krutyiserver:/home/noddeat ~/sshfs/krutyiserver
Автоматизація полягає в тому, що ви задаєте лише шаблон монтування/розмонтування, а afuse сама потурбується створенням точок монтування.
Ну, і третім етапом є автозапуск afuse після залогінення користувача (бо інакше доведеться кожен раз робити запуск afuse самому). Це робиться досить просто:
— вставити виклик команди afuse в .bash_profile (дякую Dalekiy_Obriy за підказку), якщо бажаєте автозапуск afuse після залогінення за ssh чи голою консоллю,,
— вставити виклик команди afuse після залогінення в gdm (GNOME):
sudo -u $LOGNAME $HOME/afuse.sh
у файл /etc/gdm/PostLogin/Default (якщо такого файлу нема, його належить створити).
Тут закладено, що в домашній теці лежить скрипт afuse.sh з вмістом:
afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs/
Звісно, якщо користувачів декілька, ви самі придумаєте, куди цей скрипт зручніше скопіювати. Хоча краще так, як я написав, тоді різні користувачі зможуть використовувати різні шаблони монтування, модифікуючи скрипт у себе. Використання sudo є важливим, інакше скрипт запуститься під рутом, і доступу до папки sshfs з користувача не буде.
У деяких дистрибутивах шлях може бути інший, подивіться в /etc/gdm/gdm.conf значення директиви PostLoginScriptDir
Для kdm, xdm ви вже самі придумайте, як там Autostart зробити, я не тестував цього. Ніби потрібно лише скрипт скопіювати в папку .kde/Autostart, як зазначив Сергій Єгоров.
— після цього після залогінення для доступу на віддалений сервер треба лише звернутися до папки ~/sshfs/login@server, і вуаля!
Можна, вимкнувши afuse, створити папку login@server, щоб відразу отримати до неї доступ (наприклад, з «Місць» наутілуса) після залогінення, після цього запустити afuse з опцією nonempty:
afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs/ [color=#ff0000]-o nonempty[/color]
ця опція каже afuse після запуску монтувати вже створені папки в папці sshfs, не чекаючи, поки юзер до них звернеться.
Перевага над fstab в тому, що постійного з’єднання з інтернетом не потрібне. Якщо не вдалося змонтувати зараз, afuse спробує ще раз тоді, коли юзер звернеться до папки, тому рекомендую цю штуку всім власникам ноутів.