SMB: теория

Семейство протоколов SMB, оно же CIFS (англ. Common Internet File System --- единая файловая система для Internet), изначально разрабатывалось фирмой IBM для операционной системы OS/2, но потом пошло в народ. (Как рассказывал один из разработчиков этого семейства из IBM, в названии нет ни слова правды --- не Common, не только Internet, и отнюдь не только File System.)

Было бы величайшей ошибкой думать, что SMB --- это тяжёлое наследие Windows и несёт с собой все ужасы этой операционной системы.

В семейство протоколов CIFS, помимо собственно файловой системы, входит система авторизации пользователей, система доступа к принтерам, собственная реализация службы доменных имён под названием WINS, и это, кажется, ещё не всё. Если говорить о файловой системе --- основное достоинство реализации CIFS по сравнению с NFS (по крайней мере, версии 3) --- это авторизация по логину-паролю, а не host-based, которая предполагает, что вся система администрируется единым образом. То есть для использования такой системы необходимо, чтобы на клиенте и на пользователе был одинаковый набор пользователей, которые получают доступ к NFS, и мы предполагаем, что если пользователь авторизовался на своей машине, и она идёт за файлами на сервер от имени пользователя, то это правильный пользователь и ему можно отдать файлы. Это порождает опрелелённые проблемы с безопастностью и ограничениями доступа. В случае же неанонимного доступа к файловой системе по протоколу CIFS пользователь авторизует себя логином и паролем непосредственно при соединении с сервером. Однако при этом могут возникнуть некоторые проблемы, связанные с тем, что в таком случае изменяетя вся классическая система прав доступа к файлам, так как при авторизации пользователю выдаётся некий временный UID.

В принципе, при помощи CIFS можно даже сделать так, что Linux-машины будут авторизовывать пользователей на NT4-домене, сервер которого работает под Windows, но это тема отдельного разговора.

Как было упомянуто выше, в POSIX-совместимых системах, в частности, GNU/Linux, пакет программных продуктов, реализующий семейство протоколов CIFS, называется samba. Этот пакет очень прост в настройке, во многом потому, что из-за его больших размеров документация к нему содержит не только общие случаи использования, но и множество конкретных примеров. Также основные конфигурационные файлы хорошо откомментированы, что зачастую убирает всякую необходимость в чтении документации.

Основной конфигурационный файл пакета samba называется smb.conf, и хранится обычно в /etc/samba/smb.conf. Для настройки того, что в Windows называется "Общий доступ к каталогу" (??), достаточно раскомментировать в этом файле несколько строк и перезапустить samba, выполнив команду service samba restart. Одна из таких опций --- имя домена (то есть, рабочей группы), в которую входит данная машина. Весьма важным является параметр security, который определяет, каким образом пользователи авторизуются для доступа к ресурсам. При уровне доступа user, который включен по умолчанию, авторизация происходит по внутренней базе пользователей samba, которая хранится в каталоге /etc/samba/smbpasswd и имеет некоторые отличия от классической shadow. Иными словами, следует иметь в виду, что в общем случае пользователи системы не имеют ничего общего с пользователями samba. Одно из ключевых различий в том, что samba в smbpasswd хранит восстановимые хэши от паролей пользователей.

Это необходимо из-за особенностей механизма аутентификации, который выглядит где-то так: сначала клиент стучится к серверу, который посылает клиенту некоторую "соль", то есть небольшое количество случайных данных. Клиент хэширует свой пароль совместно с солью, и отправляет серверу, который, зная соль и пароль, восстанавливает хэш и проверяет, совпадает ли пароль.

Для добавления пользователей в базу пользователей samba существует утилита smbpasswd, у которой, в частности, есть возможность синхронизировать добавление с добавлением пользователя в систему. Это необходимо, например, для того, чтобы отдавать через CIFS домашние каталоги пользователей системы --- необходимо, чтобы соответствующий пользователь в системе существовал.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

37

1

1

1

1

MaximByshevskiKonopko, ОльгаТочилкина, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex