PermLUG |
Пермская группа пользователей Linux |
|
|
|
||
Вход в систему |
Сетевое окружение в Linux
Grifon, 20.01.2010 — 00:09
В Windows есть совсем мало штук, которым я, как линуксоид, по-доброму завидую. Одной из них, как это ни странно звучит, является реализация сетевого окружения как части файловой системы (ФС) что даёт пользовательским программам в подавляющем большинстве случаев не делать различия между локальными дисками и сетевыми ресурсами. В системах на базе Linux программы вынуждены закачивать исходный файл на локальную ФС, либо использовать так называемые «транспорты» на подобие KIO в KDE, что тоже имеет множество минусов. Помимо этого, есть возможность подмонтировать шары, используя smbfs или cifs, но данный способ требует прав root или наличие записи для каждого расшаренного ресурса записи в /etc/fstab, что может делать только root. Что можно сделать, смотрите дальше... Не так давно (относительно) ядро стало поддерживать FUSE - File System In Userspace. Цитата: Он позволяет пользователям без привилегий создавать их собственные файловые системы без необходимости переписывать код ядра. Это достигается за счёт запуска кода файловой системы в пространстве пользователя, в то время как модуль FUSE только предоставляет «мост» для актуальных интерфейсов ядра. На странице FUSE в вики можно почитать подробнее. Итак, продолжу. На базе FUSE образовалась smbnetfs, о которой я и расскажу. SMBNetFS - это ФС в Linux/FreeBSD, которая позволяет использовать samba или microsoft network в той же манере, как и «Сетевое окружение» в Microsoft Windows. Проверим, поддерживает ли ядро FUSE: $ grep -i fuse /boot/config-smp.samsung-2.6.32.susp2 Если мы видим такую строчку: CONFIG_FUSE_FS=y Или CONFIG_FUSE_FS=m то поддерживает. Во втором случае нам необходимо загрузить модуль: $ modprobe fuse Далее проверим, есть ли smbnetfs в нашем дистрибутиве (gentoo). $ emerge --search smbnetfs Searching... [ Results for search key : smbnetfs ] [ Applications found : 0 ] К сожалению, в портах этого приложения нет. Ничего, соберём его вручную. Для этого мы скачаем с сайта http://ru.wikipedia.org/wiki/Filesystem_in_Userspace исходный код. $ tar xjf ./smbnetfs-0.5.2.tar.bz2 $ cd smbnetfs-0.5.2 $ ./configure $ make $ make install Всё, установили. По сути, сейчас уже можно с ней работать, но мы хотим создать удобство, сравнимое с «сетевым окружением». Поэтому, из папки исходного кода скопируем содержимое папки conf в $HOME/.smb для тех пользователей, которые будут пользоваться smbnetfs. Раскоментарим строки show_$_shares "true" show_hidden_hosts "true" include "smbnetfs.auth" include "smbnetfs.host" в файле ~/.smb/smbnetfs.conf Проверим работу: mkdir ~/network smbnetfs ~/network Смотрим: ![]() Видим в локальном каталоге окружающие нас расшаренные компьютеры. При этом, любое приложение работает с ними как каталогами, а файлами в шарах - как регулярными файлами, что нам и требовалось: $ tail network/CHILD/grifon/myfile.txt splint sqlite sqlite-devel ... Что соответствует файлу \\CHILD\grifon\myfile.txt «А как быть, если ресурсы защищены паролем?» - спросите вы. Очень просто. Например, добавлю доступ на сервер CHILD: echo 'auth CHILD grifon password' >> .smb/smbnetfs.auth chmod 600 .smb/smbnetfs.auth umount ~/network smbnetfs ~/network Наличие/отстутсвие записи авторизации: ![]() «Допустим, авторизовались, а монтировать нам каждый раз?» - вы продолжите. И тут я вам напоминаю про PAM, который был описан в одной из прошлых статей. Сейчас мы будем использовать модуль pam_mount. Этот модуль может монтировать различные тома автоматически на время пользовательской сессии. Первое, что надо сделать, это его установить. Для gentoo это выглядит так: emerge -u -N -D pam_mount Изменяем файл /etc/pam.d/system-auth (для другого дистрибутива может быть немного другим): auth required pam_env.so auth required pam_unix.so try_first_pass likeauth nullok auth required pam_ecryptfs.so unwrap # Здесь: auth optional pam_mount.so account required pam_unix.so password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 password required pam_unix.so try_first_pass use_authtok nullok sha512 shadow session required pam_limits.so session required pam_env.so session required pam_unix.so session optional pam_permit.so session optional pam_ecryptfs.so unwrap # И здесь: session optional pam_mount.so Создаём ссылку для mount: ln -sf /usr/local/bin/smbnetfs /sbin/mount.smbnetfs В файле /etc/security/pam_mount.conf.xml добавляем после строки <!-- pam_mount parameters: Volume-related --> Следующее: <volume fstype="fuse" path="smbnetfs" mountpoint="~/network" options="allow_other,umask=077,nonempty" /> Теперь при входе в систему «сетевое окружение» будет автоматически монтироваться. |
Тэги в ТегиНовые записи в блогах
Активные обсуждения форума
Новости Linux
|
| Пермская группа пользователей Linux, 2003—2011 | ||
До чего network place знакомый. Я, кстати, ставил фьюз на рабочую бубунту но меня дико кошмарило то, что оно неадекватно переживло смерть сети и начинало тупить как конь на барже. Так что я забил и начал делать alt+f2 smb://, тоже неплохой вариант, я и на маке так часто делаю.
То было не так давно, меня это тоже сильно огорчало. Но сейчас smbnetfs исправили.