SAMBA - впроваджуємося в офісну мережу
Ось, у черговий раз необхідно надати віндовим адміністраторам доступ до файлів на сервері під керуванням FreeBSD. Оскільки сервер знаходиться в одній локальній мережі з рештою комп'ютерів, доступ вирішено організувати за протоколом SMB. Що не може не радувати, так це те, що за твердженнями ITLabs, в умовах розрахованого на багато користувачів доступу, швидкість роботи Samba в якості файлового і принт-сервера більш ніж в два рази вище в порівнянні з Windows Server 2003 з тими ж ролями.
У нашому випадку потрібна майже мінімальна конфігурація: підтримка віндової кулі та розмежування прав доступу.
Отже, почнемо встановлення samba-сервера з портів (за актуальністю яких не забуваємо стежити):
#cd /usr/ports/net/samba3/ #make install clean
Розглянемо доступні опції:
Options for samba 3.0.36,1
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 - утиліта для стрес-тестування серверів. У нас і так стресових ситуацій достатньо, можна обійтися;). Вимкнено.
З опціями розібралися. Дочекаємося завершення встановлення та перечитаємо шляхи.
Ліземо "копатися" в конфізі. В результаті нехитрих маніпуляцій конфігураційний файл набуває наступного вигляду:
# cat /usr/local/etc/smb.conf
#======================= Global Settings ======================== ============= # У розділі global задаються всі основні налаштування (голбальні для сервера Samba)
# Назва робочої групи. Має збігатися з назвою робочої групи
# на клієнтських машинах. workgroup = LOCALNET
хоче створити файлообмінник, можуть скористатися опцією share.
# Список мереж, яким можна коннектуватися до сервера. hosts allow = 192.168.0. 127.
# Куди будуть писатись логи, і в якому форматі. log file =/var/log/samba/log.%m
# Задаємо максимальний розмір лог-файлу (у кілобайтах). 10 мегабайт – для середнього сервера
max log size = 10240
# Якщо кілька мережевих інтерфейсів, вказуємо на які "слухати" запити користувачів.
# Навіть якщо інтерфес тільки один, за звичкою вказую. А раптом щось зміниться;) interfaces = 192.168.0.155/24
Якщо вже є samba-сервер, то зробимо його майстер-браузером для нашої мережі. local master = yes
# "Крутість" операційної системи. Враховується під час виборів майстер-браузера. os рівень = 255
#Дає додатковий пріоритет під час "голосування" та виборів майстер-браузера.
preferred master = yes
#============================ Share Definitions =================== =========== # Тут починається опис розшарованих ресурсів
# path - шлях до каталогу, який необхідно "розшарити"
# browseable - чи каталог буде видно в "мережевому оточенні", або буде прихованим
# writable - чи можна записувати дані до цього мережного ресурсу
# valid users - список користувачів, яким дозволено доступ до цієї кулі
# hosts allow - перелік IP, яким дозволено доступ до цієї кулі
# guest ok - дозволяємо гостьовий доступ
[winadmin] comment = Share for admins path = /var/samba/admin browseable = yes writable = yes valid users = winadmin hosts allow = 192.168.0.2
[share] comment = Share for all users path = /var/samba/share browseable = yes writable = yes guest ok = yes
Як бачимо, сам конфігураційний файл поки мінімальний. Але ми потім це виправимо у разі потреби.
Додамо підтримку завантаження стартового скрипта samba в /etc/rc.conf:
#echo '### Samba-server'>> /etc/rc.conf #echo 'samba_enable="YES"' >> /etc/rc.conf
Далі додамо користувача winadmin. samba має свою базу логінів та паролів. Працювати з цією базою можна за допомогою утиліти smbpasswd. Однак не варто забувати про те, що для коректної роботи в системі повинен бути присутнім такий самий користувач. Що ж, якщо маєш, значить зробимо. Додамо системного користувача winadmin, правда, доступ до консолі йому давати не будемо ;)
Тепер скористаємося утилітою smbpasswd, щоб додати користувача samba:
Опція-а вказує на те, що користувач бази користувачів samba ще не існує, тобто вказує, що ми додаємо нового користувача. Якщо вам потрібно просто змінити пароль для користувача, цей ключ опускаємо.
Як ви вже здогадалися, паролі samba та паролі системних користувачів зберігаються в рахних сховищах, відповідно можуть відрізнятися (і я рекомендую використовувати різні паролі). З висновку видно, що паролі samba зберігаються у файлі /usr/local/etc/samba/smbpasswd.
#mkdir -p /var/samba/winadmin #mkdir /var/samba/share #chown winadmin:nobody /var/samba/winadmin / #chmod 777 /var/samba/share
Пробуємо запустити samba.
Здається, все запрацювало. Про всяк випадок подивимося, що робиться в логах:
# 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) Sep 4 10:4 97421]: ***** Sep 4 10:48:42 mail nmbd[97421]: Sep 4 10:48:42 mail nmbd[97421]: Samba for workgroup LOCALNET on subnet 192.168.0.155 Sep 4 10:48:42 mail nmbd[97421]: Sep 4 10:48:42 mailnmbd[97421]: *****
Щоб ознайомитися з повними можливостями samba, скористаємося інтерфейсом керування.
Небагато загальної інформації. SWAT (Samba Web Administration Tool) - програма, яка дозволяє конфігурувати сервер Samba через web-інтерфейс, змінюючи таким чином конфігураційний файл smb.conf. SWAT є частиною набору Samba, тому розвивається паралельно і не використовує застарілі опції smb.conf.
Додаємо в rc.conf підтримку inetd та запускаємо службу:
# echo 'inetd_enable="YES"' >> /etc/rc.conf# sh /etc/rc.d/inetd start Starting inetd.
Вуаль. Відкривається це диво:

Виставляємо необхідні параметри, застосовуємо. Потім в освітніх цілях переглядаємо файл конфігурації, щоб подивитися на те, як зміни записуються в конфіг.
Поле діяльності досить широке. Але далі проблем виникати не має. Більш докладну інформацію про samba можна отримати, наприклад, тут.
На що ще варто звернути пильну увагу, то це на безпеку. Наведу кілька опцій контролю доступу, які можуть стати в нагоді: