Samba за 5 минут
Здесь описан мой опыт в установке и конфигурировании Samba. Я
постарался описать все процедуры для получения работающих конфигураций. Конечно
это не user manual - скорее информация к размышлению. Дополнительное
описание настроек можно найти в документации, прилагаемой к исходным
текстам. Не претендуя на абсолютную истину, с нетерпением жду замечаний и
описания ошибок, допущенных мной. Буду рад обмениваться опытом по конфигурации
Samba.
- Зачем это
нужно.
- Первый
звонок.
- Пресловутая
совместимость продуктов Microsoft.
- SysAdmin едет
в отпуск (или мечты, которые БУДУТ реальностью).
- Что такое
Samba.
- Установка.
- Конфигурация:
- Samba как Primary
DOMAIN Controller
- Дополнительные
дирректории
- PlainTextPassword
- Правка Registry
для PlainTextPassword (Windows 95 OSR2)
- Правка Registry
для PlainTextPassword (Windows 98)
- Правка Registry
для PlainTextPassword (Windows NT)
- Encrypted
Password
- Создание
smbpasswd
- Добавление
пользователей Samba PDC
- Пример smb.conf
для Samba PDC (для клиентов Windows 9X)
- Добавление
участников Samba PDC
- Пример smb.conf
для Samba PDC (для клиентов Windows 9X / Windows NT)
- Samba как
участник NT DOMAIN
- Пример smb.conf
для Samba file-server участника PDC
- Пример smb.conf
для Samba print-server участника PDC
- Добавление
Samba-box в DOMAIN
Почему мне понадобилась 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-подобные системы. Прошу прощения за столь долгое предисловие.
Что такое SambaSamba - свободно распространяемое програмное
обеспечение (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 95 OSR2, Windows 98, Windows NT требуют
изменений в registry: (не рекомендуется для Windows NT)
Windows 95 OSR2[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Windows 98[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Windows NT[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"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=x.x.x.x broadcast=x.x.x.255 netmask%5.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=x.x.x.x broadcast=x.x.x.255 netmask%5.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@96 SO_SNDBUF@96
load printers = No
character set = KOI8-R
client code page = 866
logon script = %U.bat
logon path = \\%N\Profiles\%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, меняя зашифрованный пароль
на "*". Следуюший шаг - внесение учётной записи машины в smbpasswd:
host:~# /usr/local/samba/bin/smbpasswd -a -m netbios_name
Added interface ip=x.x.x.x broadcast=x.x.x.255 netmask%5.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@96 SO_SNDBUF@96
load printers = No
character set = KOI8-R
client code page = 866
logon script = %U.bat
logon path = \\%N\Profiles\%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@96 SO_SNDBUF@96
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@96 SO_SNDBUF@96
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=x.x.x.x broadcast=x.x.x.255 netmask%5.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:~#
РесурсыНовости: вышел второй релиз Samaba
Главный сайт: Samba Team
Архив документации: Samba Docs Arhiv
SMB HOW-TO на русском: на www.linux.org.ru
Илья Басин.
|