smbnetfs
Прозрачный доступ к samba-ресурсам с помощью smbnetfs
История проблемы
Идеология UNIX
Всё есть файл. Файлы, устройства, процессы и т. п. можно найти в дереве файлов: /path/filename. Правила обращения с каталогами и файлами просты и едины для всех сущностей. Правда, для этого нужно примонтировать новую сущность к общей файловой иерархии.
Альтернативный подход
Всё есть обмен сообщениями между программами по какому-то определенному протоколу. Монтировать ничего никуда не нужно, но для нормального общения, желательно заранее знать, какой именно протокол используется (и, разумеется, обеспечить его поддержку со стороны приложений). Если на каждый протокол имеется отдельная программа, то вопросов нет. А если хочется в одной программе реализовать поддержку нескольких протоколов?
Так появился альтернативный подход: URI: protoname://domain/path/filename?parameters.
smb://
И в KDE и в Gnome просто необходимо было реализовать обзор samba-сетей, наподобие «Обзора сети» в Windows. И он был реализован именно через URI. А заодно была прикручена поддержка целого букета известных и «свежевыдуманных» протоколов. Так появились адреса: smb://, media://, system:// и т. п.
Казалось бы, что наступило полное благоденствие, но… далеко не все приложения поддерживают такую адресацию. И далеко не все разработчики горят желаниям завязывать свои приложения на библиотеки KDE, Gnome.
- Одним из самых известных проблемных приложений является OpenOffice. В интернете вы найдёте огромное количество жалоб, что «файлы не сохраняются в сетевой папке». Причина: неподдерживаемая адресация вида smb://
И ладно бы вещь шла о чём-то действительно несовместимом с идеологией файловой иерархии, но нет — в большинстве случаев, это по-прежнему просто файлы.
Поэтому, часто приходится отказываться от этих новшеств и действовать по-старинке. Монтировать нужные ресурсы.
/etc/fstab
Один раз прописываем монтируемые ресурсы в файле, монтируем при загрузке рабочей станции. Просто, как топор. Недостатки, вытекающие из этой простоты:
- все пользователи системы к конкретному ресурсу будут обращаться от имени одного самба-пользователя.
- пользователи не могут переопределить настройки монтирования, без создания бреши в безопасности системы.
- невозможно одной командой прикрутить все шары самба-сервера и тем более всех серверов домена.
- при изменениях организации шар на сервере, нужно вносить изменения на каждом клиенте.
- на момент начальной обработки /etc/fstab ещё нет сети, поэтому требуется применение методов для монтирования ресурсов после поднятия сети. Для sisvinit надо прочитать man mount на предмет параметра _netdev, для systemd можно посмотреть ссылку на форуме.
Есть две подходящие команды монтирования: mount.smbfs и mount.cifs. Рекомендуется использовать вторую. То есть в /etc/fstab в столбце типа файловой системы указать cifs. Параметры у команд отличаются, будьте бдительны.
pam_mount
Модуль PAM, монтирует нужные ресурсы при логине пользователя, размонтирует при выходе. Очень удобно, когда логин/пароль пользователя Линукс совпадает с логином/паролем пользователя из домена Самбы (Добиться этого не слишком сложно. например, используя авторизацию winbind, но иногда это может быть совсем нежелательно). Часть настроек может переопределяться пользователем с помощью конфигов в его домашнем каталоге. Недостатки:
- Если зайти несколько раз под одним и тем же пользователем, а потом выйти хотя бы из одного сеанса, то ресурсы размонтируются и станут недоступны во всех сеансах (в последних версиях самбы такого эффекта не наблюдается, требуется уточнение).
- невозможно одной командой прикрутить все шары самба-сервера и тем более всех серверов домена.
- при изменениях организации шар на сервере, нужно вносить изменения на каждом клиенте.
строка
<volume user="*" fstype="cifs" server="192.168.0.1" path="all_docs" mountpoint="/mnt/all_doc_%(USER)" options="uid=%(USER)" />
в файле /etc/security/pam_mount.conf.xml примонтирует шару all_docs на сервере 192.168.0.1 в /mnt/all_doc/all_doc_имя_пользователя, точка монтирования создастся автоматически
smbnetfs
Использует технологию FUSE для динамического отображения самба-домена, на файловую систему. Способна по одной команде отобразить целый домен, отдельный сервер, отдельные шары или комбинацию всех трёх вариантов. Авторизация определяется, как на общесистемном уровне, так и каждым пользователем отдельно. Особенности:
- В отличие от перечисленных вариантов, для функционирования этого в памяти должен висеть процесс smbnetfs, который будет перехватывать обращения к точке монтирования.
- На старых версиях самбы возможны утечки памяти, но очень незначительные (читайте документацию к пакету).
- На некоторых операциях появляются заметные глазу тормоза, связанные с поиском главного обозревателя сети и прочим дипломатическим этикетом между сервером и рабочей станцией.