Встановлення та конфігурування Samba
Тут описано мій досвід в установці та конфігуруванні Samba. Я постарався описати
всі процедури для отримання працюють конфігурацій. Звичайно це не user manual
- Швидше інформація для роздумів. Додатковий опис настройок можна знайти
у документації до вихідних текстів.
Не претендуючи на абсолютну істину, з нетерпінням чекаю зауважень та описи
помилок, допущених мною. Буду радий обмінюватися досвідом по конфігурації Samba.
Чому мені знадобилася Samba
Перший дзвінок
Приблизно 2 роки тому я встановив машину під Linux для забезпечення
корпоративного виходу в Internet. Відразу постала проблема резервного копіювання.
Справа в тому, що файл-сервер з встановленим стримерів працював під керуванням
Windows NT. Треба було вибирати: шукати клієнт NFS для Windows NT або намагатися
знайти інший спосіб. Тоді ж я почув назву Samba.
Горезвісна сумісність продуктів Microsoft
У червні 1998 наша компанія купила мережевий принтер HP4000N. Сервером друку був
обраний PDC під WindowsNT3.51sp5. Windows 95 чудово працював з цим
принт-сервером, але в мережі, як на гріх, були дві Windows NT 4.0 Workstation.
Може бути через незнання (не думаю, що все так погано насправді), але протягом
місяці, я безуспішно намагався налаштувати друк з під Windows NT Workstation
4.0sp3. Система наполегливо вимагала наявності драйверів на принт-сервер. Насильно
установка мережевого принтера викликала зависання системи. Втомившись від марної
витрати нервів, я налаштував принт-сервер (використовуючи Linux Slakware 3.5 і Samba
1.9p18-10). Вже кілька місяців весь офіс (приблизно 30 комп'ютерів) чудово
друкує незалежно від операційної системи на комп'ютері користувача.
SysAdmin їде у відпустку (або мрії, які БУДУТЬ реальністю)
Так чи інакше, але навіть комп'ютерник має іноді відпочивати чи просто повболівати.
Прекрасно, якщо він має супер-кваліфікацією і досить суворий, щоб
натренували користувачів. Тоді один раз налаштувавши систему, він може
звільнятися.
Але я до таких не належу, і хотів би мати можливість час від часу
перевіряти працездатність системи, знаходячись поза межами офісу, і якщо треба,
вносити виправлення. Як це зробити, якщо на сервері стоїть WindowsNT (і не
використовувати Remote Access, не зручно телефонувати на модем з іншого міста або
країни нарімер - адже є Internet)?
Можна використовувати BackOrifice ;-) або скористатися Microsoft Unix AddOn
Pack.
Це прекрасне рішення наштовхується на фінансові труднощі. Дуже важко
переконати начальство витратити ~ 900 $ на upgrade Windows NT3.51 до Windows NT4.0 і
ещее трохи на AddOn Pack (не впізнавав точно, але думаю не мало), щоб
АДМИНИСТРАТОР комп'ютерному МЕРЕЖІ поїхав у відпустку. При цьому потрібно враховувати, що в
цей комплект входить демон Телнет, паролі по мережі передаються plain-text. При
наявності у зловмисника зацікавленості і snifer всі ваші хитрощі по
безпеки будуть зведені до нуля.
Чи варто городити город, якщо можливість віддаленого управління давно закладена
в усі UNIX-подібні системи, а розвиток засобів криптографії дозволяє вільно
поширюваним продуктів (я маю на увазі SSH) забезпечити гарантію тривалих
витрат часу і машинних ресурсів для розшифровки мережевого трафіку? Можна було
використовувати Samba, але не можна применшувати зручність Windows NT DOMAIN system
(особливо якщо робочі станції в мережі суцільний Wintel). І ось з'явилася Samba
2.0, з ще не повною, але досить потужною підтримкою WINDOWS NT DOMAIN. Всі
йде до того, що всі сервери в нашій компанії поступово будуть переведені на
UNIX-подібні системи. Прошу вибачення за такий довгий передмову.
Що таке Samba
Samba - вільно розповсюджується програмне забезпечення (GPL), що дозволяє:
а) створювати фото-і принт-серверів (для клієнтів підтримують одну з
реалізацій протоколу SMB) на базі відкритих систем (OpenVMS, Digital Unix, AIX,
IRIX, HPUX, Solaris, FreeBSD, NetBSD, Linux, і т.д.);
б) підтримувати (не повністю) доменну структуру NT DOMAIN;
1) функції первинного контролера NT DOMAIN (з деякими обмеженнями, більш
докладно - "NT DOMAIN support" на сайті Samba Team;
2) функції учасника NT DOMAIN; (з деякими обмеженнями, більш докладно -
"NT DOMAIN support" на сайті Samba Team;
в) забезпечувати сервіси WINS (клієнт і сервер), TIME-server і т.д. ;
Розглядалися дві конфігурації:
а) Linux-Samba - Primary DOMAIN Controller з клієнтами Windows 9x, Windows NT
4.0;
б) Linux-Samba - учасник NT DOMAIN з Primary DOMAIN Controller під Windows NT
Server 3.51 sp5.
Також були розглянуті випадки застосування encrypted і plain-text passwords і
випробувана конфігурація з підтримкою квотування дисків. На даний момент
випробувані конфігурації використовуються в роботі (файл-та принт-сервери).
Мій досвід в установці та налаштування пакету обмежений системами на базі Linux
Slakware. Самостійно були встановлені останні стабільні версії версії
automake, autoconf, make, binutils, egcs. Використовувалися libc5 стандартної
поставки Linux Slakware. Пакет shadow був перезібраний з підтримкою md5crypt.
Системи будувалися з використанням ядер версій 2.0.35 і 2.2.x. Як
Система друку використовувався пакет LPRng. Останню версію samba-latest.tar.gz
можна отримати на сайті Samba Team.
Установка
Можна скопіювати з ftp-сервера бінарні файли, скомпільовані під Вашу
систему або вихідні тексти.
При використанні вихідних текстів
Конфігурування та складання з підтримкою syslog:
hostname:/usr/src # tar-xvzf samba-2.0.4b.tar.gz
hostname:/usr/src # cd samba-2.0.4b/source
hostname:/usr/src/samba-2.0.4b/source #./configure - prefix =/usr/local/samba
- with-syslog
hostname:/usr/src/samba-2.0.4b/source # make
hostname:/usr/src/samba-2.0.4b/source # make install
Конфігурування та складання з підтримкою syslog і quota:
(повинен бути встановлений пакет quota з розділу ap1)
hostname:/usr/src # tar-xvzf samba-2.0.4b.targz
hostname:/usr/src # cd samba-2.0.4b/source
hostname:/usr/src/samba-2.0.4b/source #./configure - prefix =/usr/local/samba
- with-syslog - with-quota
host:/usr/src/samba-2.0.4b/source # make
host:/usr/src/samba-2.0.4b/source # make install
Опція
- prefix =/usr/local/samba
задає шлях установки. Для отримання повного списку опцій:
host:/usr/src/samba-2.0.4b/source #./configure - help more
Після цього копіюється файл smb.conf c установками за замовчуванням:
host:/usr/src/samba-2.0.4b/source # cp ../examples/smb.conf.default
/ usr/local/samba/lib/smb.conf
Далі конфігурується SWAT (Samba Web-based Administrative Tool):
- У файл/etc/inetd.conf добавляеться рядок:
#
swat stream tcp nowait.400 root/usr/local/samba/bin/swat swat
#
- У файл/etc/services добавляеться рядок:
#
swat 901/tcp # Samba web-based administrative tool
#
Потім перезапускаетя daemon inetd. При зверненні до http://host:901 за допомогою
браузера, після введення login & password (root), Ви отримуєте web-інтерфейс
конфігурування Samba (наскільки я знаю - можлива робота з SSL).
Конфігурації
Primary DOMAIN controller.
Сценарій установки створює наступну структуру:
host:/usr/local/samba # ls-la
total 6
drwxr-xr-x 8 root root 1024 Jun 16 10:34.
drwxr-xr-x 26 root root 1024 Jun 8 17:06 ..
drwxr-xr-x 2 root root 1024 Jun 10 09:31 bin
drwxr-xr-x 3 root root 1024 May 10 17:24 lib
drwxr-xr-x 6 root root 1024 May 7 13:26 man
drwxr-xr-x 5 root root 1024 May 12 21:16 swat
drwxr-xr-x 3 root root 1024 May 7 14:27 var
host:/usr/local/samba # cd lib
host:/usr/local/samba/lib # ls-la
total 3
drwxr-xr-x 3 root root 1024 May 10 17:24.
drwxr-xr-x 8 root root 1024 Jun 16 10:34 ..
drwxr-xr-x 2 root root 1024 May 7 13:26 codepages
-rw-r - r - 1 root root 971 Jun 8 17:06 smb.conf
Додаткові дірректоріі
Потрібно створити кілька дірректорій (дані шляху за замовчуванням, вибір залишається за
Вами - все можна описати в smb.conf:
host:/usr/local/samba/lib # mkdir netlogon
host:/usr/local/samba/lib # chown root: root netlogon; chmod 751 netlogon
host:/usr/local/samba/lib # cd .. /; mkdir profiles
host:/usr/local/samba # chown root: root profiles; chmod 751 profiles
host:/usr/local/samba #
При використанні в якості клієнтів Windows NT Workstation або Windows 98,
має сенс створювати [profiles] на квотовано розділі диска. Windows 95 (без
додаткових правок до Registry) зберігає в [profiles] лише user.dat
Також слід звернути увагу, що logon-scripts треба створювати з
використанням Dos-або Windows-редактора тексту.
Plaintext Password
Слід визначитися з типом security. Хост, сконфігурованих як PDC, несе
функцію авторизації. Значення ключа [security] можуть приймати значення [share],
[user], [server], [domain]. Для кожної з нижче наведених конфігурацій можна
вказати різний тип [security].
Ключ [encrypt password] визначає який механізм авторизації буде включений.
Якщо ключу [encrypt password] присвоєно значення "No", то авторизація
користувачів здійснюється виходячи з облікових записів у passwd і shadow. У цьому
випадку, паролі прередаются по мережі PlainText. Windows 95OSR2, Windows 98,
Windows NT вимагають змін у registry:
(не рекомендується для Windows NT)
Windows 95 OSR2
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]
"EnablePlainTextPassword" = dword: 00000001
Windows 98
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]
"EnablePlainTextPassword" = dword: 00000001
Windows NT
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRdrParameters]
"EnablePlainTextPassword" = dword: 00000001
Encripted Password
Всі подальші конфігурації рассматріваються для значення ключа [encrypted
password] = Yes.
При значенні ключа [encript passwords] = Yes, авторизація проходить з
використанням файлу smbpasswd. Місце розташування за замовчуванням:
/ usr/local/samba/private/smbpasswd
За замовчуванням інсталяційний скрипт не створює private/smbpasswd. Для внесення
облікового запису користувача в файл smbpasswd, потрібно:
1. створити smbpasswd
host:/usr/local/samba # ls-la
total 6
drwxr-xr-x 8 root root 1024 Jun 16 10:34.
drwxr-xr-x 26 root root 1024 Jun 8 17:06 ..
drwxr-xr-x 2 root root 1024 Jun 10 09:31 bin
drwxr-xr-x 3 root root 1024 May 10 17:24 lib
drwxr-xr-x 6 root root 1024 May 7 13:26 man
drwxr-xr-x 5 root root 1024 May 12 21:16 swat
drwxr-xr-x 3 root root 1024 May 7 14:27 var
host:/usr/local/samba # mkdir private
host:/usr/local/samba # echo>/private/smbpasswd; cd private
host:/usr/local/samba/private # chown root: root smbpasswd; chmod 600 smbpasswd;
cd ../
host:/usr/local/samba/# chown root: root private; chmod 500 private
2. повинна існувати обліковий запис Unix:
Потрібно відзначити, що файли passwd і shadow повинні містити облікові записи
користувачів. При значенні ключа [encrypt password] = Yes, облікові записи
можуть мати вигляд:
passwd:
...
username: x: 1016:100: MYGROUP User ,,,:/ home/user_name:/dev/null
...
shadow:
...
username: *: 10666:0:99999:7:::
...
3. використовувати smbpasswd для створення облікового запису в
/ usr/local/samba/private/smbpasswd
host: ~ #/usr/local/samba/bin/smbpasswd-a user_name
Added interface ip = xxxx broadcast = xxx255 netmask = 255.255.255.0
New SMB password:
Retype New SMB password:
Addedd user user_name
Password changed for user user_name
host: ~ #
4. активувати обліковий запис (за замовчуванням виставляється ключ [account
disabled]):
host: ~ #/usr/local/samba/bin/smbpasswd-e user_name
Added interface ip = xxxx broadcast = xxx255 netmask = 255.255.255.0
User user_name enabled
host: ~ #
При початковій установці можна використовувати скрипт mksmbpasswd.sh, що входить в
комплект поставки.
host: ~ # chmod + x/usr/src/samba-2.0.4b/source/script/mksmbpasswd.sh
host: ~ # cat/etc/passwd/usr/src/samba-2.0.4b/source/script/mksmbpasswd.sh>
/ usr/local/samba/private/smbpasswd
host: ~ #
Приклад робочої конфігурації Primary Domain Controller (клієнти Windows 9x):
використовується тип security = user
# Samba config file created using SWAT
# Global parameters
workgroup = MYGROUP
netbios name = ASERVER
server string = DOMAIN Controller
security = user
encrypt passwords = Yes
passwd program =/usr/bin/passwd
log file =/usr/local/samba/var/log.% U
max log size = 50
nt acl support = Yes
time server = Yes
socket options = SO_KEEPALIVE SO_BROADCAST TCP_NODELAY SO_RCVBUF = 4096
SO_SNDBUF = 4096
load printers = No
character set = KOI8-R
client code page = 866
logon script =% U.bat
logon path =% NProfiles% U
domain logons = Yes
os level = 33
preferred master = Yes
domain master = Yes
dns proxy = Yes
wins proxy = Yes
wins support = Yes
hosts allow = x.x.x.
[homes]
comment = Home Directories
read only = No
create mask = 0600
browseable = No
[netlogon]
comment = Network Logon Service
path =/usr/local/samba/lib/netlogon
guest ok = No
public = No
locking = No
share modes = No
browseable = Yes
[Profiles]
comment = Users 'Profiles
path =/usr/local/samba/profiles
read only = No
browseable = No
[Public]
comment = Public
path =/usr/pub
read only = No
create mask = 0650
Все! Можна запускати:
host: ~ #/usr/local/samba/bin/smbd-D-d2
host: ~ #/usr/local/samba/bin/nmbd-D-d2
host: ~ #
Провівши відповідні настройки в Network Neighbrohood (такі як enable NT
Domain logon і т.д), можна спробувати зайти в мережу. Для збереження настройок
user.dat (для Windows 95) або повного User Profile (для Windows 98) потрібно
зробити:
host: ~ # cd/usr/local/samba/profils
host:/usr/local/samba/profiles # mkdir user_name
host:/usr/local/samba/profiles # chown-R user_name: root user_name; chmod-R 751
user_name
host:/usr/local/samba/profiles #
Додавання учасників Samba PDC
Якщо в мережі є клієнти Windows NT, необхідно зробити деякі зміни в
конфігурації Samba. Також станція з Windows NT, повинна бути включена в Samba
DOMAIN, тобто в smbpasswd повинна бути внесена обліковий запис mashine account.
Перш за все створюємо Unix-обліковий запис (вносимо користувача з user_name =
[netbios_name що включається в NT DOMAIN робочої станції ]+[$], щось типу
nt_ws_1 $):
host: ~ # adduser
Login name for new user (8 characters or less) []: netbios_name $
User id fot netbios_name [defaults to next available]:
Initial groups for netbios_name [users]: nobody
netbios_name $ 's home directory [/ home/netbios_name]:/dev/null
netbios_name $ 's shell [/ bin/bash]:
netbios_name $ 's account expiry date [MM/DD/YY]:
Ok, I'm about to make a new account. Here's what you entered so far:
New login name: netbios_name $
New UID: [Next available]
Initial group: nobody
Additional groups: [none]
Home directory:/dev/null
Shell:/bin/false
Expiry date: [no expiratron]
This is it ... if you want to bail it out, hit Control-C. Otherwise, press
ENTER to go ahead and make the account.
Making new account ...
Changing the user information for netbios_name
Enter the new value, or press return for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Changing password for netbios_name
Enter the new password (minimum of 8, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password: some_password_will_be_changed_to-"*- in_shadow_files
Re-enter new password: some_password_will_be_changed_to-"*- in_shadow_files
Done ...
host: ~ #
Після цього я правил shadow, міняючи зашифрований пароль на "*".< br />
Следуюшій крок - внесення облікового запису машини в smbpasswd:
host: ~ #/usr/local/samba/bin/smbpasswd-a-m netbios_name
Added interface ip = xxxx broadcast = xxx255 netmask = 255.255.255.0
Addedd netbios_name $
Password changed for user netbios__name $
host: ~ #
Зверніть увагу, що маючи Unix-обліковий запис netbios_name $, при внесенні в
smbpasswd використовуємо netbios_name.
Приклад робочої конфігурації Primary Domain Controller (клієнти Windows 9x/
Windows NT):
використовується тип security = user
# Samba config file created using SWAT
# Global parameters
workgroup = MYGROUP
netbios name = ASERVER
server string = DOMAIN Controller
security = user
encrypt passwords = Yes
passwd program =/usr/bin/passwd
log file =/usr/local/samba/var/log.% U
max log size = 50
nt acl support = Yes
time server = Yes
socket options = SO_KEEPALIVE SO_BROADCAST TCP_NODELAY SO_RCVBUF = 4096
SO_SNDBUF = 4096
load printers = No
character set = KOI8-R
client code page = 866
logon script =% U.bat
logon path =% NProfiles% U
domain logons = Yes
os level = 33
preferred master = Yes
domain master = Yes
dns proxy = Yes
wins proxy = Yes
wins support = Yes
hosts allow = x.x.x.
[homes]
comment = Home Directories
read only = No
create mask = 0600
browseable = No
[netlogon]
comment = Network Logon Service
path =/usr/local/samba/lib/netlogon
guest ok = No
public = No
share modes = No
locking = No
browseable = Yes
[Profiles]
comment = Users 'Profiles
path =/usr/local/samba/profiles
read only = No
browseable = No
[Public]
comment = Public
path =/usr/pub
read only = No
create mask = 0650
Все! Можна запускати:
host: ~ #/usr/local/samba/bin/smbd-D-d2
host: ~ #/usr/local/samba/bin/nmbd-D-d2
host: ~ #
Після цього слід стандартна процедура підключення Windows NT Workstation до
PDC. Перевантажує Windows NT - можна спробувати зайти!
NT DOMAIN members
Спочатку модіфіціруeтся файл smb.conf. Нижче наведені робочі конфігурації файл-
і принт-сервера (учасників NT DOMAIN).
Файл-сервер (паролі шифрувати і перевіряються на вказаному сервері, що виконує
роль Primary DOMAIN controller):
використовується тип security = domain.
# Samba config file created using SWAT
# Global parameters
workgroup = MYGROUP
netbios name = FSERVER1
server string = File-server 1
security = DOMAIN
encrypt passwords = Yes
password server = ASERVER
username map =/usr/local/samba/lib/username.map
log level = 2
log file =/usr/local/samba/var/log.% U
nt acl support = Yes
name resolve order = host wins bcast lmhosts
keepalive = 30
lpq cache time = 30
socket options = SO_KEEPALIVE SO_BROADCAST TCP_NODELAY SO_RCVBUF = 4096
SO_SNDBUF = 4096
load printers = No
character set = KOI8-R
client code page = 866
os level = 30
lm interval = 10
dns proxy = No
wins server = x.x.x.x
hosts allow = x.x.x.
wide links = No
[Public]
comment = Varios files
path =/pub/
read only = No
create mask = 0744
Print-сервер (паролі шифрувати, і перевіряються на зазначеному сервер, що виконує
роль Primary DOMAIN controller):
використовується тип security = domain
# Samba config file created using SWAT
# Global parameters
[global]
workgroup = MYGROUP
netbios name = PSERVER1
server string = Print server
security = DOMAIN
encrypt passwords = Yes
password server = ASERVER
username map =/usr/local/samba/lib/username.map
log level = 2
syslog = 2
log file =/usr/local/samba/var/log.% U
name resolve order = host wins bcast lmhosts
keepalive = 60
lpq cache time = 5
socket options = SO_KEEPALIVE SO_BROADCAST TCP_NODELAY IPTOS_THROUGHPUT
SO_RCVBUF = 4096 SO_SNDBUF = 4096
load printers = No
os level = 30
wins server = x.x.x.x
hosts allow = x.x.x.
printing = lprng
wide links = No
[hp6p]
print command =/usr/local/bin/lpr-h-r-P% p% s; rm% s
lpq command =/usr/local/bin/lpq-P% p
lprm command =/usr/local/bin/lprm-P% p% j
comment = hp6p Laser Jet
path =/usr/local/samba/spool/hp6p
print ok = Yes
printer name = hp6p
[hp4000n]
print command =/usr/local/bin/lpr-h-r-P% p% s; rm% s
lpq command =/usr/local/bin/lpq-P% p
lprm command =/usr/local/bin/lprm-P% p% j
comment = hp4000n Laser Jet
path =/usr/local/samba/spool/hp4000n
print ok = Yes
printer name = hp4000n
[tek350e]
print command =/usr/local/bin/lpr-h-r-P% p% s; rm% s
lpq command =/usr/local/bin/lpq-P% p
lprm command =/usr/local/bin/lprm-P% p% j
comment = Tektronix 350 ext
path =/usr/local/samba/spool/tek350e
print ok = Yes
printer name = tek350e
Повинна існувати Unix-обліковий запис у passwd і shadow.
Потрібно відзначити, що файли passwd і shadow повинні містити облікові записи
користувачів NT Domain (можна використовувати username.map).
passwd:
...
username: x: 1016:300: MYGROUP User ,,,:/ dev/null:/dev/null
...
shadow:
...
username: *: 10666:0:99999:7:::
...
Додавання Samba-box в DOMAIN
Після закінчення конфігурації (при незапущених демонів smbd і nmbd)
вироблятися додавання Samba-box в NT DOMAIN (використовуючи Server Manager for
DOMAIN, якщо PDC - Windows NT Server або розглянутитертю вище процедуру). Спочатку
на PDC додаємо Samba-box. Далі використовуємо smbpasswd:
host: ~ #/usr/local/samba/bin/smbpasswd-j MYGROUP-r PDC_netbios_name
Added interface ip = xxxx broadcast = xxx255 netmask = 255.255.255.0
YYYY/MM/DD hh: mm: ss: change_trust_account_password:
Changed password for domain MYGROUP.
Joined domain MYGROUP.
host: ~ #
Можна запускати!
host: ~ #/usr/local/samba/bin/smbd-D-d2
host: ~ #/usr/local/samba/bin/nmbd-D-d2
host: ~ #