Вот, в очередной раз необходимо предоставить виндовым админам доступ к файлам на сервере под управлением FreeBSD. Поскольку сервер находтся в одной локальной сети с остальными компьютерами, доступ решено организовать по протоколу SMB. Что не может не радовать, так это то, что по утверждениям ITLabs, в условиях многопользовательского доступа, скорость работы Samba в качестве файлового и принт-сервера более чем в два раза выше по сравнению с Windows Server 2003 с теми же ролями.
В нашем случае нужна почти минимальная конфигурация: поддержка виндовых шар и разграничение прав доступа...
Итак, начнем установку samba-сервера из портов (за актуальностью которых не забываем следить):
# cd /usr/ports/net/samba3/ |
Рассмотрим доступные опции:
Options for samba 3.0.36,1 [ ] LDAP With LDAP support [ ] ADS With Active Directory support [ ] CUPS With CUPS printing support [ ] WINBIND With WinBIND support [X] ACL_SUPPORT With ACL support [ ] AIO_SUPPORT With Asyncronous IO support [X] FAM_SUPPORT With File Alteration Monitor [X] SYSLOG With Syslog support [X] QUOTAS With Disk quota support [ ] UTMP With UTMP accounting support [ ] PAM_SMBPASS With PAM authentication vs passdb backends [ ] CLUSTER With experimental cluster support [ ] DNSUPDATE With dynamic DNS update(require ADS) [ ] EXP_MODULES With experimental modules [X] POPT With system-wide POPT library [X] PCH With precompiled headers optimization [ ] MAX_DEBUG With maximum debugging [ ] SMBTORTURE With smbtorture |
LDAP - поддержка LDAP. Не использую. Отключаем.
ADS -поддержка Active Directory. Отключаем.
CUPS - поддержка сервера печати CUPS. Не интересно. Отключаем.
WINBIND - обьединение пользвателей Windows/Unix. Почитать можно здесь. Отключаем.
ACL_SUPPORT - поддержка Access Control List. Очень даже нужная фича. Включаем.
AIO_SUPPORT - поддержка возможности асинхронного ввода-вывода. По дефолту оключено... И я включать не буду ;)
FAM_SUPPORT - API для мониторинга за состоянием файла или группы файлов/директорий. Возможно пригодится. Включаем.
SYSLOG - поддержка логирования syslog. Однозначно пригодится :). Включаем.
QUOTAS - поддержка квотирования. Поскольку диски не резиновые, а пользователи жадные до дискового пространства - включаем.
UTMP - включаем поддержку уникального идентификатора для каждого вновь подключенного пользователя. Поскольку понижает производительность - выключаем.
PAM_SMBPASS - поддержка синхронизации системных пользователей и пользователей samba. В нашем случае неактуально, поэтому оставляем выключеным.
DNSUPDATE - поддержка динамического обновления DNS. Поскольку данный вариант работает с поддержкой Active Directory, что нам не нужно, то оставляем отключенным.
EXP_MODULES - поддержка експериментальных модулей. А нам нужна стабильность в работе. Соответственно не включаем ;)
POPT - поддержка системной библиотеки анализа коммандной строки. Авось пригодится ;). Включаем.
PCH - предкомпиляционная оптимизация заголовков. Звучит заманчиво. Включаем.
MAX_DEBUG - включение режима максимальной отладки. На всякий случай включим.
SMBTORTURE - утилита для стресс-тестирования серверов. У нас и так стрессовых ситуаций достаточно, можно обойтись ;). Отключено.
С опциями разобрались... Дождемся завершения установки и перечитаем пути.
# rehash |
Лезем "копаться" в конфиге. В результате нехитрых манипуляций конфигурационный файл приобретает следующий вид:
# cat /usr/local/etc/smb.conf #======================= Global Settings ===================================== [global] # Название рабочей групы. Должно совпадать с названием рабочей групы # на клиентских машинах. # Строка описания сервера. Высвечивается в сетевом окружении. # хочет создать файлообменник, могут воспользоваться опцией share. security = user # Список сетей, которым разрешено коннектиться к серверу. # Куда будут писаться логи, и в каком формате. # Задаем максимальный размер лог-файла (в килобайтах). 10 мегабайт - для среднего сервера # достаточно max log size = 10240 # Если несколько сетевых интерфейсов, указываем, на каких "слушать" запросы пользователей. # Даже если интерфес только один, по привычке указываю. А вдруг что-то поменяется ;) # Если уж есть samba-сервер, то сделаем его мастер-браузером для нашей сети. # "Крутость" операционной системы. Учитывается при выборах мастер-браузера. #Дает дополнительный приоритет во время "голосования" и выборов мастер-браузера. preferred master = yes #============================ Share Definitions ============================== # comment - комментарий к ресурсу # path - путь к каталогу, который необходимо "расшарить" # browseable - будет ли каталог виден в "сетевом окружении", или будет скрытым # writable - возможно ли записывать данные в этот сетевой ресурс # valid users - список пользователей, которым разрешен доступ к данной шаре # hosts allow - перечень IP, которым разрешен доступ к данной шаре # guest ok - разрешаем гостевой доступ [winadmin] [share] |
Как видим, сам файл конфигурации пока минимален. Но мы потом это исправим в случае необходимости.
Добавим поддержку загрузки стартового скрипта samba в /etc/rc.conf:
# echo '### Samba-server' >> /etc/rc.conf |
Далее добавим пользователя winadmin. samba имеет свою базу логинов и паролей. Работать с этой базой можно с помощью утилиты smbpasswd. Однако не стоит забывать про то, что для корректной работы в системе должен присутствовать точно такой же пользователь. Что ж, если должен, значит сделаем. Добавим системного пользователя winadmin, правда доступ к консоли ему давать не будем ;)
# adduser Username: winadmin Full name: Local administrators Uid (Leave empty for default): Login group [admin]: nobody Login group is nobody. Invite admin into other groups? []: Login class [default]: rusian Shell (sh csh tcsh nologin) [sh]: nologin Home directory [/home/admin]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: no Lock out the account after creation? [no]: Username : winadmin Password : <disabled> Full Name : Local administrators Uid : 1003 Class : rusian Groups : nobody Home : /home/admin Home Mode : Shell : /usr/sbin/nologin Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (admin) to the user database. Add another user? (yes/no): no Goodbye! |
Теперь воспользуемся утилитой smbpasswd, чтобы добавить пользователя samba:
# smbpasswd -a winadmin New SMB password: Retype new SMB password: startsmbfilepwent_internal: file /usr/local/etc/samba/smbpasswd did not exist. File successfully created. Added user winadmin. |
Опция -а указывает на то, что пользователь в базе пользователей samba еще не существует, то есть указывает, что мы добавляем нового пользователя. В случае, если вам необходимо просто сменить пароль для пользователя, этот ключ опускаем.
Как вы уже догадались, пароли samba и пароли системных пользователей хранятся в рахных хранилищах, соответственно могут отличатся (и я рекомендую использовать разные пароли). Из вывода видно, что пароли samba хранятся в файле /usr/local/etc/samba/smbpasswd.
У меня еще не созданы папки шар. Нужно создать :). Кстати, samba бережно относится к правам доступа файлов. Доступ будет осуществлятся от имени авторизовавшегося пользователя. Соответственно выставляем необходимые права доступа:
# mkdir -p /var/samba/winadmin |
Пробуем запустить samba.
# sh /usr/local/etc/rc.d/samba start Removing stale Samba tdb files: done Starting nmbd. Starting smbd. # ps -ax | grep smb 97289 ?? Ss 0:00,01 /usr/local/sbin/nmbd -D -s /usr/local/etc/smb.conf 97293 ?? Is 0:00,01 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf 97294 ?? I 0:00,00 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf |
Кажется все заработало... На всякий случай посмотрим, что делается в логах:
# tail - f /var/log/messages Sep 4 10:48:42 mail nmbd[97421]: [2009/09/04 10:48:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396) |
Отлично. Samba даже стала мастер-браузером для рабочей группы LOCALNET в подсети 192.168.0.0/24. После набора в командной строке адреса сервера (\\192.168.0.155), появилось окно запроса логина и пароля доступа к сетевому ресурсу. После ввода логина winadmin и заданого пароля, доступ был разрешен. Это уже неплохо :)
Чтобы ознакомиться с полными возможностями samba, воспользуемся интерфейсом управления.
Немного общей информации... SWAT (Samba Web Administration Tool) - программа, которая позволяет сконфигурировать сервер Samba через web-интерфейс изменяя таким образом конфигурационный файл smb.conf. SWAT является частью набора Samba, поэтому развивается параллельно и не использует устаревшие опции в smb.conf.
SWAT запускается через суперсервер inetd. Чтобы разрешить запуск SWAT, необходимо в конфигурационном файле /etc/inetd.conf раскомментировать такую строку:
swat stream tcp nowait/400 root /usr/local/sbin/swat swat |
Добавляем в rc.conf поддержку inetd и запускаем службу:
# echo 'inetd_enable="YES"' >> /etc/rc.conf |
Открываем любимый браузер и в строке адреса набиваем: http://ip_interface_samba-servera:901. В моем случае это http://192.168.0.155:901. В окне запроса логина и пароля вбиваем рутовый логин и пароль.
Вуаля... Открывается сие чудо:
Выставляем необходимые параметры, применяем. Потом в образовательных целях просматриваем конфигурационный файл, чтобы посмотреть на то, как изменения записываются в конфиг.
Поле деятельности довольно широкое... Но дальше проблем возникать не должно. Более обширную информацию о samba можно получить, например, здесь.
На что еще стоит обратить пристальное внимание, так это на безопасность. Наведу несколько опций контроля доступа, которые могут пригодится:
Последние комментарии
17 недель 3 дня назад
41 неделя 5 дней назад
2 года 42 недели назад
3 года 12 недель назад
3 года 35 недель назад
3 года 50 недель назад
3 года 51 неделя назад
4 года 2 недели назад
4 года 13 недель назад
4 года 17 недель назад