Замена файл-сервера Windows NT/2000 на Linux/Samba Резюме: Эта заметка продолжает рассказывать о настройке пакета Samba, который предназначен для разделения ресурсов в гетерогенных (разнородных) Unix/Windows сетях. Здесь рассказывается о том, как настроить сервер Samba под Linux, чтобы получить такую же, как и при использовании Windows-сервера, функциональность. Samba не только раскрывает мощность и гибкость ОС Linux, но она также дает определенные выгоды: нет необходимости выплачивать лицензионные отчисления за использование ОС Windows на своих серверах; даже на менее мощном, чем требует Windows-сервер, оборудовании (процессор, память) может быть достигнута такая же или лучшая производительность. При хорошей настройке Samba возможен полный переход с сервера под управлением Windows NT/2000 на сервер под Linux. Samba позволяет создавать разделяемые ресурсы, обеспечивает доступ к службе каталогов Active Directory (ADS - Active Directory Service), а также может выступать в роли основного (первичного) контроллера домена (PDC - Primary Domain Controller), выполняя аутентификацию пользователей, работающих под Windows 95/98/NT/2000, обеспечивая разделение ресурсов (директорий и принтеров) и настройку пользовательских сессий (users sessions). Ниже рассматриваются некоторые из этих возможностей. В результате, во многих случаях Linux/Samba-сервер обеспечивает такую же, как и Windowsсервер, функциональность, при этом не требуя дополнительной настройки клиентских машин. Далее будем считать, что пакет Samba уже установлен на машине и что читатель знаком с основными концепциями ОС Linux и Windows. Пример из жизни Пусть наш Linux-сервер с установленным на нем пакетом Samba выступает в роли основного контроллера домена (PDC), где каждый зарегистрированный пользователь имеет доступ к двум разделяемым директориям (shared directories): для общего и для персонального (приватного) доступа. Такая конфигурация является довольно распространенной. Зададим следующие названия: NetBIOS-имя Linux/Samba-сервера: SMBServer Имя домена Windows или рабочей группы: THEDOMAIN Персональный раздел для каждого пользователя: H: (Windows) => /home/ (Linux- сервер) Общий раздел: P: (Windows) => /home/public (Linux-сервер) На рисунке 1 показана схема небольшой сети, в которой клиентские Windows-машины используют разделяемые ресурсы Windows NT/2000 сервера. Он может быть заменен Linuxсервером с запущенным на нем демоном Samba. Рис. 1 – Основной контроллер домена (PDC) и файл-сервер на Windows Конфигурация Конфигурация включает в себя следующие шаги: 1) Создание на Linux-сервере нового пользователя. Для этого используются команды adduser, useradd или userconf; также можно использовать подходящую графическую утилиту (Webmin, Linuxconf, Yast и т. п.). Если вы хотите, чтобы пользователь имел доступ лишь к службам Samba и не мог зайти на сервер в оболочку shell, в файле /etc/passwd в качестве домашней директории укажите /dev/null, а в качестве оболочки - /bin/false. 2) Сконвертируйте файл /etc/passwd в файл smbpasswd: cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd Для создания пользователей и паролей можно применять другие команды: smbadduser smbpasswd, которые работают подобно командам adduser и passwd. 3) Отредактируйте конфигурационный файл Samba (smb.conf) в соответствии со своими потребностями: netbios name = SMBServer workgroup = THEDOMAIN server string = Linux/Samba-сервер log file = /var/log/samba/%m.log max log file = 0 security = user encrypt password = yes smb password file = /etc/samba/smbpasswd ssl CA certificate = /usr/share/ssl/.... (cancel comment) socket options = (cancel comment) local master = yes preferred master = yes domain master = yes domain logons = yes logon script = logon.bat wins support = yes Замечание: Чтобы задать для каждого пользователя отдельный сценарий входа (logon script), установите logon script = %U.bat (или %u.bat). Также вы можете использовать спецификатор %g (или %G) для того, чтобы выполнялся сценарий группы, к которой принадлежит пользователь (см. также man smb.conf). 4) Создание разделяемых ресурсов. Отредактируйте описания разделяемых ресурсов в файле smb.conf, удаляя (или комментируя знаком ';') ненужные ресурсы и добавляя необходимые: [netlogon] comment = Сценарии входа path = /home/netlogon read only = yes guest ok = yes browseable = no [home] comment = Директория пользователя path = /home/%U browseable = yes writable = yes [public] comment = Общая директория path = /home/public browseable = yes writable = yes guest ok = yes create mask = 0777 force create mask = 0777 Сохраните полученный файл smb.conf. 5) С помощью команды testparm проверьте синтаксис конфигурационного файла smb.conf. При наличии ошибок будут выданы соответствующие сообщения. 6) Создайте директории /home/netlogon (с правами доступа 0754) и /home/public (с правами доступа 0777). 7) Отредактируйте сценарий входа logon.bat. Обратите внимание: для создания logon.bat необходимо использовать текстовый редактор для DOS/Windows (Notepad, Edit и т. п.). Также можно использовать текстовый редактор под Linux, не забывая, однако, сконвертировать полученный текст в совместимый с DOS/Windows формат. К примеру, в редакторе vim это делается с помощью команды ":set textmode". Сценарий logon.bat может выглядеть, например, так: net time \\SMBServer /y (или /yes) net use H: \\SMBServer\home -y (или /yes) net use P: \\SMBServer\public -y 8) В файл /etc/samba/lmhosts (или /etc/lmhosts) добавьте запись о вашем Samba-сервере (SMBServer). Например: 192.168.0.10 SMBServer 9) Запустите/перезапустите демон Samba (smbd): service smb restart Если с первого раза система не заработала нормально, попробуйте выполнить следующее: ps -auxgx | grep smb kill -9 <ID smb-процесса> smbd 10) Для проверки работоспособности Samba-сервера используйте smbclient: smbclient -L //SMBServer Если будет выдано приглашение "Password:", нажмите "Enter", в ответ сервер покажет список своих разделяемых ресурсов. 11) С машины, работающей под Windows 95/98/NT, попробуйте войти в созданный только что домен THEDOMAIN. Для входа используйте имя пользователя и пароль, созданные на шаге 1 и 2. Не забудьте произвести настройку свойств клиента для сетей Microsoft. Для этого в ОС Windows 95/98/ME выполните: Start (Пуск) => Setup (Настройка) => Control Panel (Панель управления) => Network (Сеть) =>Network Client for Microsoft Networks (Клиент для сетей Microsoft) => Properties (Свойства). В Свойствах установите флажок "Start session in Windows NT/2000 domain" ("Входить в домен Windows NT") и задайте имя домена (или рабочей группы): THEDOMAIN. Похожим образом настраивается и Windows NT/2000 (Workstation/Professional). Пример конфигурационного файла Работающий конфигурационный файл Samba приведен ниже. Данная конфигурация проверялась на нескольких дистрибутивах Linux. Вы можете использовать этот пример в качестве базового для создания и настройки своей собственной конфигурации. Для тех, кто хочет иметь дружественный интерфейс для быстрой настройки Samba, можно порекомендовать использовать такие инструменты, как Webmin и/или SWAT. #============================================================# # /etc/smb.conf #------------------------------------------------------------------------------------------------------------# # Главный конфигурационный файл Samba (файл-образец). # Настройте конфигурацию в соответствии со # своими потребностями. #------------------------------------------------------------------------------------------------------------# # Протестировано в следующих ОС: # RedHat 6.0, 7.0, 7.1 # Solaris 7 # Slackware 7.x # Mandrake 6.1, 7.0, 8.1 # SuSe 7.2 #------------------------------------------------------------------------------------------------------------# # Дата последней модификации: 08/12/2001. # Sebastian Sasias - sasias(at)linuxmail(dot)org #============================================================# # # При создании данного файла использовалось руководство по настройке # Samba smb.conf(5). # # Примечание: после изменения этого файла не забудьте протестировать его # с помощью "testparm" (и перезапустить демон smbd - прим. перев.) # #==================== Глобальные настройки ====================# # # Основная конфигурация # [global] #......................................................................................................................................# # Workgroup = имя NT-домена (или рабочей группы): THEDOMAIN. workgroup = THEDOMAIN #......................................................................................................................................# # NetBIOS-имя, под которым будет виден сервер остальным машинам сети. netbios name = SMBServer #......................................................................................................................................# # Комментарий, появляющийся рядом с именем машины в "Сетевом окружении" Windows. server string = Это Samba-сервер #......................................................................................................................................# # Следующий параметр влияет на безопасность. Hosts allow разрешает машинам с # указанными IP-адресами присоединяться к Samba-серверу. # В этом примере доступ разрешен компьютерам, имеющим IP-адрес из диапазона # локальных адресов 192.168.8.0 (класс C) и через интерфейс "обратной петли" (loopback). # Более подробно см. в man smb.conf. ; hosts allow = 192.168.8. 127. #......................................................................................................................................# # Раскомментируйте этот параметр для автоматической загрузки списка принтеров # из файла printcap. ; load printers = yes #......................................................................................................................................# # Параметр Printcap name задает альтернативное расположение файла printcap. ; printcap name = /etc/printcap #......................................................................................................................................# # В SystemV для работы с системой печати используется программа lpstat. Для # автоматического получения списка принтеров от системы печати SystemV задайте # опцию Printcap name = lpstat. ; printcap name = lpstat #......................................................................................................................................# # Если вы имеете нестандартную систему печати, вам необходимо указать ее тип, # в противном случае этот параметр можно опустить. # В настоящее время поддерживаются следующие системы печати: # bsd, sysv, plp, lprng, aix, hpux, qnx. ; printing = bsd #......................................................................................................................................# # Раскомментируйте строчку Guest account для предоставления беспарольного ("гостевого") # входа на Samba-сервер. В /etc/passwd необходимо добавить pcguest, в противном случае # будет использоваться учетная запись "nobody". ; guest account = pcguest #......................................................................................................................................# # Для каждой машины %m, подключенной к Samba-серверу, использовать свой log-файл. log file = /var/log/samba/log.%m #......................................................................................................................................# # Максимальный размер log-файла - 50 килобайт. max log size = 50 #......................................................................................................................................# # Параметр Security определяет, каким образом будет осуществляться проверка пароля # пользователя. Security = user означает использование файла паролей smbpasswd. # Более подробно см. в документации по Samba (файл security_level.txt). security = user #......................................................................................................................................# # В случае, если Security = server, проверка пароля производится другим сервером. # Параметр Password server используется только совместно с опцией Security = server. # Password server = [IP-адрес аутентифицирующего сервера]. ; password server = <Имя NT-сервера> #......................................................................................................................................# # Опция включает поддержку шифрованных паролей. Почитайте сначала ENCRYPTION.txt, # Win95.txt и WinNT.txt из документации по Samba. # Не включайте данный параметр до тех пор, пока полностью не изучите его назначение. # К сведению: ОС Win95, Win98 и WinNT отсылают пароли в зашифрованном виде. encrypt passwords = yes #......................................................................................................................................# # Используя следующий параметр, вы сможете создать отдельную конфигурацию для # каждой машины домена. # Вместо пары символов %m при входе подставляется NetBIOS-имя машины. ; include = /usr/local/samba/lib/smb.conf.%m #......................................................................................................................................# # В документации и в полезных советах говорится, что с помощью следующего параметра # можно повысить производительность Samba-сервера. Возможно, вы захотите # поэкспериментировать с этим. Подробности смотрите в документации (man pages) по # Samba и в файле Speed.txt. socket options = TCP_NODELAY #......................................................................................................................................# # По умолчанию демон Samba слушает все активные сетевые интерфейсы. С помощью # параметра Interfaces можно выбрать только те интерфейсы, которые необходимо # прослушивать. ; interfaces = 192.168.8.2/24 192.168.12.2/24 #......................................................................................................................................# # Установите Local master в "no", чтобы Samba-сервер не мог стать обозревателем # сети (в противном случае сервер будет принимать участие в выборах обозревателя # сети - прим. перев.) local master = yes #......................................................................................................................................# # Параметр OS Level задает приоритет данного сервера при выборах обозревателя сети # (master browser) . Обычно значение по умолчанию подходит для большинства # случаев. ; os level = 33 #......................................................................................................................................# # Параметр Domain master делает Samba-сервер главным обозревателем домена # (Domain Master Browser). Это позволяет Samba выполнять функции контроллера # домена, а также создавать список машин из других подсетей, имеющих # отношение к данному домену. # Не используйте этот параметр, если в вашей сети уже имеется контроллер домена # на Windows NT/2000, выполняющий те же функции. domain master = yes #......................................................................................................................................# # Параметр Preferred master позволяет Samba-серверу при старте инициировать выборы # обозревателя сети; при этом Samba-сервер получает довольно высокие шансы на # победу в этих выборах. # Если в сети имеется более одного сервера, то наиболее желательным (favorite) для # клиентов будет "предпочтительный обозреватель" (preferred master). preferred master = yes #......................................................................................................................................# # Используйте следующую опцию только в случае, если в вашей сети имеется # Windows NT/2000 сервер, работающий в качестве PDC. ; domain controller = <SMB-имя контроллера домена> #......................................................................................................................................# # Для того, чтобы клиенты Windows 9x/Me могли использовать сервер Samba для # входа в домен, укажите следующий параметр. domain logons = yes #......................................................................................................................................# # Если параметр Domain logons установлен в "yes", вы имеете возможность указывать # для пользователя (%u) или рабочей станции (%m) свой сценарий входа (logon script). # Сценарий входа для рабочей станции: ; logon script = %m.bat # Сценарий входа для пользователя: ; logon script = %U.bat #......................................................................................................................................# # Данный параметр задает место размещения перемещаемых профилей (roving (или # roaming - прим. перев.) profiles). # Вместо %L подставляется NetBIOS-имя данного сервера, вместо %U - имя пользователя. # Не забудьте раскомментировать секцию [Profiles] в конфигурационном файле. ; logon path = \\%L\Profiles\%U #......................................................................................................................................# # Поддержка WINS - службы имен Windows (WINS - Windows Internet Name Service). # Данный параметр указывает демону NMBD включить свой сервер WINS. # WINS, подобно службе DNS, сопоставляет IP-адрес машины с ее именем. ; wins support = yes #......................................................................................................................................# # Параметр WINS Server задает IP-адрес WINS-сервера, используемого в сети, и # указывает на то, что в этом случае Samba-сервер является WINS-клиентом. # Не забывайте, что Samba-сервер может быть либо WINS-сервером, либо # WINS-клиентом (но не обоими сразу). ; wins server = 192.168.8.1 #......................................................................................................................................# # Samba умеет определять не-WINS клиентов, находящихся в сети. Для этого нужно # указать параметр WINS Proxy = yes. Для правильной работы WINS Proxy необходимо, # чтобы в сети имелся по крайней мере один WINS-сервер. # Значение по умолчанию - "no". ; wins proxy = yes #......................................................................................................................................# # Если задан параметр DNS Proxy, Samba будет пытаться выполнять преобразование # NetBIOS-имен посредством запросов к DNS. По умолчанию для версии 1.9.17 этот # параметр установлен в "yes". Начиная с версии 1.9.18 параметр DNS Proxy по # умолчанию равен "no". # dns proxy = yes # dns proxy = no (преобразование имен ведется с помощью файла lmhosts) #......................................................................................................................................# # Параметр Logon drive задает букву диска, к которому будет монтироваться домашняя # (home) директория пользователя. Эта опция имеет смысл, только если Samba настроена # в качестве Logon server'а. Если параметр Logon drive не задан, используется Z:. logon drive = P: #......................................................................................................................................# # После удачного входа на Samba-сервер на машине клиента выполняется сценарий # SAMBA.BAT (полный путь - /etc/samba/netlogon/SAMBA.BAT), который с помощью # команды "net use" производит подключение сетевых дисков (а также может выполнять # другую полезную работу, например, синхронизацию времени - прим. перев.) logon script = SAMBA.BAT #============== Определение разделяемых ресурсов ================# # Персональная директория для каждого пользователя. # Диск P: [homes] comment = Домашние директории browseable = no writable = yes readonly = no force create mode = 0700 create mode = 0700 force directory mode = 0700 directory mode = 700 #------------------------------------------------------------------------------------------------------------# # Директория для временных файлов. # Диск T: [tmp] comment = Временные файлы path = /tmp readonly = no public = yes writable = yes force create mode = 0777 create mode = 0777 force directory mode = 0777 directory mode = 0777 #------------------------------------------------------------------------------------------------------------# # Привод CD-ROM сервера. # Диск L: [cdrom] comment = CD-ROM path = /mnt/cdrom public = yes writable = no #------------------------------------------------------------------------------------------------------------# # Ресурс группы ("/home/grp.имя_группы"), к которой принадлежит пользователь (%u). # /home/%u/group является ссылкой на "/home/grp.имя_группы". # "grp.имя_группы" имеет права доступа 770. # Диск G: [group] comment = Директория группы path = /home/%u/group writable = yes readonly = no force create mode = 0770 create mode = 0770 force directory mode = 0770 directory mode = 0770 #------------------------------------------------------------------------------------------------------------# # Этот ресурс предназначен для хранения приложений, дистрибутивов, # корпоративного ПО (corporative software) и т. д. # Права доступа для /net и /net/install - 755, то есть владелец ресурса - root. # Диск N: [net] comment = Ресурс Net path = /net writable = yes readonly = no force create mode = 0750 create mode = 0750 force directory mode = 0750 directory mode = 0750 #------------------------------------------------------------------------------------------------------------# [netlogon] comment = Logon Services in the Network path = /etc/samba/netlogon guest ok = yes writable = no locking = no public = no browseable = yes share modes = no #------------------------------------------------------------------------------------------------------------# #============================================================# Заключение И пакет Samba, и многие другие инструменты Linux находятся в непрерывном развитии, поэтому вполне возможно, что некоторые детали, имеющиеся в этой заметке, могут потерять свою актуальность. В ходе развития Samba некоторые параметры конфигурационного файла слегка изменялись, чтобы добиться стройности системы. Если при конфигурации Samba-сервера вы получите сообщения о неизвестных параметрах, есть пара способов разрешить эту проблему: проверить конфигурацию файла smb.conf; внимательно прочесть комментарии, которые могут содержать важную информацию о проблематичных параметрах; почитать документацию по Samba, начав с файла, в котором описываются последние изменения пакета. Ссылки: библиография и программы Samba, официальный сайт: http://www.samba.org. Webmin, официальный сайт: http://www.webmin.com. Webmin - инструмент для удаленного администрирования UNIX-систем. Проект GNU и Фонд Свободного Программного Обеспечения: http://www.gnu.org. Интересный сайт, посвященный пакетам RPM: http://www.rpmfind.net. Домашняя страница LinNeighborhood: http://www.bnro.de/~schmidjo. LinNeighborhood интересный инструмент под Linux для работы с разделяемыми сетевыми ресурсами через SMB.