Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

14 дней жизни одной операционной системы
или впечатления об установке и настройке Red Hat Linux 9 Cyrillic Edition

В.А.Костромин, 15-17 сентября 2003 г.

День одиннадцатый. Samba.

Примечание: Хоть и называется эта моя заметка "День одиннадцатый", но рассказывается в ней о нескольких днях моих мучений с сервером Samba. О причинах задержки я расскажу по ходу, а пока - приступим!

Пообещал я вам в прошлом выпуске моих заметок, что займусь серверными приложениями, но, когда приступил, подумал - а что там смотреть? Работать они, без сомнения будут, с русским языком и кодировкой проблем быть не должно, уж у Apache точно, а у Samba - разве что в именах файлов на примонтированных дисках. Но раз уж пообещал, пришлось заняться запуском этих сервисов и рассказать о своих впечатлениях.

Начал я с Samba. Вообще-то на домашнем компьютере этот сервис и не очень нужен. Но, если (как в моем случае) есть два компьютера, причем на обоих организована многовариантная загрузка, то Samba помогает организовать взаимодействие между этими компьютерами при разных ОС, запущенных на двух компьютерах. Кроме того, я использую Samba на рабочем месте (где у меня базовая ОС тоже Линукс) для взаимодействия с компьютерами других пользователей, которые, естественно, в основном (да что там в основном, все!) работают под Windows. Так что в целях тестирования дистрибутива необходимо было с этим продуктом поэкспериментировать. Но провозился я с ним несколько дней!

Естественно, что пакет Samba у меня не был установлен (я же ставил минимальную конфигурацию), что и подтвердила команда

rpm -qa | grep samba

Ставлю в дисковод первый диск дистрибутива, монтирую его, и неожиданно получаю запрос пароля администратора, после ввода которого с удивлением вижу новое окно, изображенное на рис.24.


Рис. 24.

Удивление вызвано тем, что автоматически запустилась уже знакомая нам утилита установки и удаления программ. Я уже много раз вставлял этот диск в дисковод и почему-то только в этот раз сработал автозапуск. Это меня и удивило. Итак, после того, как прошла процедура проверки состояния пакетов в системе, появилось окно, изображенное на рис. 24. Как работать с этой утилитой, вы уже знаете (смотри "День пятый"), поэтому рассказывать об этом снова я не буду. Я задал установку "Файлового сервера для Windows" и заодно проверил, что Apache тоже установлен. Кроме http-сервера в группе "Web Server" я отметил для установки также дополнительные пакеты php, php-mysql, tux и webalizer. После чего щелкнул по кнопочке "Вперед".

Дождавшись завершения установки, я перешел в каталог /etc/samba и провел небольшую корректировку в файле smb.conf, а именно, поменял название рабочей группы на home:

[global]
    workgroup = home

и раскомментировал строки, открывающие доступ к каталогам /home/public и /home/pc/%m (здесь %m изначает имя компьютера), причем, поскольку в исходном файле smb.conf в качестве общедоступного ресурса public был указан другой каталог, имя тоже пришлось поменять:

[public]
    comment = Public Stuff
    path = /home/public
    public = yes
    writeble = yes
    printable = no
[pchome]
    path = /home/pc/%m
    public = no
    writeble = yes
 
Кроме того, домашние каталоги пользователей изначально открыты для них в том варианте конфигурационного файла, который был создан при установке пакета.

После этого я запустил программу настройки сервисов (о ней я тоже уже рассказывал), задал запуск smbd при загрузке компьютера на 3 уровне, сохранил конфигурацию, и для работы в текущем сеансе запустил сервис smbd кнопочкой "Запустить". Основной мой компьютер в это время работал под управлением Windows 98.

Выполняю на тестовом компьютере (его имя в сети old-lin, а имя основного - trend) команду

smbclient -L trend

и вижу список открытых ресурсов на компьютере trend:

	Sharename      Type      Comment
--------- ---- -------
E Disk
INSTALL Disk
C Disk
IPC$ IPC Взаимодействие между удаленными процессами

Server Comment
--------- -------

Workgroup Master
--------- -------
На основном компьютере в папке "Сетевое окружение" вижу, соответственно, два компьютера - см. рис. 25.

Рис. 25. Папка "Сетевое окружение" на компьютере trend.

Однако попытка открыть какую-либо папку на old-lin окончилась неудачей. У меня был затребован пароль, но ни один из извесных мне вариантов пароля (а какие еще варианты могут быть, если я полный и единственный хозяин в моей домашней сети!) не сработал. Вот в таком положении я и застрял на пару дней.

Вначале я считал, что причина заключается в неправильной настройке сервера Samba и пытался настроить его известным методом "научного тыка", меняя настройки в конфигурационном файле, причем руководствуясь только теми комментариями, которые в этом файле даны. Добился я только того, что компьютер old-lin перестал отображаться в папке "Сетевое окружение" Windows-компьютера. И тогда пришла уверенность в том, что начать придется с чтения документации (ЧЕРТ!). У меня под рукой была книга [1], электронные варианты двух изданий ([2] и [4]) книги "Using Samba", а также перевод на русский язык трех первых глав из первого издания этой книги [3]. Вы можете найти эти книги в "Библиотеке" сайта, или заказать твердую копию книги [4] в Интернет-магазине "Болеро". Кроме того, в том же магазине имеется еще одна книга на интересующую нас тему [5]. Что касается двух первых книг, то осмелюсь порекомендовать вам "Using Samba". В первых главах этой книги, которые, как я уже говорил, имеются и в русском переводе, очень хорошо рассказано о протоколе SMB, а потом и о настройках конфигурационного файла (но это уже по-английски). Книга же [1], насколько я успел с ней познакомиться, довольно неудобна в использовании. Но я не буду совсем уж ее ругать, тем более, что первоначальную настройку сервера Samba и Windows-клиента я делал как раз следуя рекомендациям этой книги.

Впрочем и [3] я тоже пролистал, и, добравшись до раздела 2.4, я, как мне показалось, обнаружил причину своих неудач. Вот небольшая цитата из [3]:

"Если вы используете Windows 98 или Windows NT Service Pack 3 и выше, вы должны добавить следующую запись в секцию [global] в конфигурационном файле Samba: encrypt passwords = yes. Дополнительно, вы должны использовать программу smbpassword (обычно расположенную в /usr/local/samba/bin/) для ввода комбинаций пользователь/пароль тех пользователей на сервере Unix, которые смогут получить доступ к ресурсам через зашифрованную базу данных клиентов Samba."

Я же не задал ни одного пользователя для сервера Samba и закомментировал строку об использовании шифрованных паролей. Ну, что-ж, будем исправяться!

Команду smbpassword я нашел в каталоге /usr/bin/, где нашлись еще несколько команд, имеющих отношение к Samba. Я решил воспользоваться командой smbadduser:

/usr/bin/smbadduser kos:kos

которая после запуска запросила и пароль для нового пользователя. После этого я раскомментировал строку encrypt passwords = yes в файле /etc/samba/smb.conf и снова перезапустил демон smbd.

Но эти действия к успеху не привели - доступа к ресурсам на old-lin из "Сетевого окружения" по-прежнему не было. И тогда я решил не метаться из стороны в сторону, а последовательно выполнять рекомендации одной из книг. В качестве такой я выбрал [1].

В соответствии с рекомендациями этой книги выполняю команду 

smbclient -L old-lin -U kos

которая выдает следующий результат:
Domain=[HOME] OS=[Unix] Server=[Samba 2.2.7a]

Sharename Type Comment
--------- ---- -------
public Disk Public Stuff
IPC$ IPC IPC Service (Samba Server on old-lin)
ADMIN$ Disk IPC Service (Samba Server on old-lin)
kos Disk Home Directories

Server Comment
--------- -------
OLD-LIN Samba Server on old-lin
TREND trend

Workgroup Master
--------- -------
HOME OLD-LIN
В [1] еще рекомендуется войти клиентом на локальный сервер, что я и проделал с помощью команды

smbclient //old-lin/kos

И вполне успешно, потому что после ввода пароля и появления приглашения smb:> команда ls выдала список файлов моего домашнего каталога.  Таким же успешным был и результат выполнения команды
smbclient //trend/C


По команде ls я увидел и список файлов на диске C: компьютера trend. Делаю вывод: на old-lin с настройками Samba все в порядке, причину надо искать в Windows.

Перехожу на Windows-компьютер и проверяю правильность сетвых настроек в соответствии с рекомендациями главы 2 книги [1]. Вроде все правильно, однако в окне "Сетевое окружение" не появляется ничего, кроме строки "Вся сеть", щелчок мышкой по которой теперь приводит к появлению сообщения о том, что сеть недоступна. Чем дальше - тем больше!

Снова обращаюсь к книге [1] и нахожу рекомендацию запустить в DOS-окне команду net use F: \\host\service, которую я и запускаю в следующем виде:
net use F: \\old-lin\kos

После этого в окне Проводника вижу диск F: с перечнем файлов  моего домашнего каталога на компьютере old-lin. Правда, имена файлов, которые были заданы русскими буквами в Unicode (помните, был создан файл "тест.utf"), отображаются непонятными комбинациями символов (см. рис. 26).


Рис.26. Компьютер old-lin со стороны Windows.

А "Сетевое окружение" по-прежнему ничего не показывает. Зато функция "Подключить сетевой диск" в меню Проводника успешно подключает ресурс \\old-lin\public как диск G:.
Тогда я запускаю на old-lin (от имени суперпользователя и создав предварительно каталог /mnt/trend) команду
smbmount //trend/C /mnt/trend
Результат вы видите на рисунке 27.


Рис. 27. Ресурс Windows-компьютера, смонтированный на Linux-машине.

И снова с русским языком не все в порядке: вместо имени каталога "Мои документы" видим знаки вопроса. Правда, в данном случае возникает подозрение - а не виноват ли в этом Midnight Commander?

Но разбираться с этим буду завтра, а пока можно констатировать, что и Samba-сервер и Samba-клиент под Red Hat Linux 9.0 работают. И если не использовать русский язык в именах файлов, то проблем нет. Но все же необходимо еще поиграть опциями монтирования, может быть удастся и русские символы победить.

Замечание в скобках: Я и раньше встречался с такой ситуацией, когда 3 способа обзора локальной сети, а именно, через "Сетевое окружение", через "Поиск компьютера" и через "Подключение сетевого диска" дают совершенно разные результаты. Логику Misrosoft в этом случае постигнуть совершенно невозможно. Может кто-то может объяснить? А пока приходится пробовать все три варианта, авось какой-то сработает!
После опубликования этой заметки в Интернет я получил письмо с ответом на этот мой вопрос от одного из посетителей сайта - Андрея Красовского. И, кроме того, нашел обсуждение того, как работает сетевое окружение в Windows, на одном из форумов, где некто Denis из Москвы дал развернутое пояснение на эту тему. После списка ссылок я привожу оба эти текста полностью.

Продолжение следует...

Список литературы и ссылки.

  1. Э.Бруксбенк, Д.Хабербергер, Л.Дойл, "SAMBA. Руководство системного администратора для профессионалов. Изд. Питер, Санкт-Петербург, 2001 год, 416 стр.
  2. Jay Ts, Robert Eckstein, and David Collier-Brown, "Using Samba, 2nd Edition" , February 2003 O'Reilly & Associates, ISBN: 0-596-00256-4 ( Копия в "Библиотеке" сайта).
  3. Robert Eckstein, David Collier-Brown, Peter Kelly, перевод - Абдрашитов Вадим, "Using Samba" , 1st Edition, O'Reilly & Associates, November 1999 (Копия в "Библиотеке" сайта).
  4. Robert Eckstein, David Collier-Brown, Peter Kelly, "Using Samba" , 1st Edition, O'Reilly & Associates, November 1999. (Копия в "Библиотеке" сайта").
  5. Колисниченко Д.Н., "Linux-сервер своими руками", Издательство: Наука и техника, 576 стр.

Дополнения:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Date: Вт, 30 сен 2003  11:44:05
    From: "Andrew Krasovsky" <kav@online.com.ua>
 Subject: 
--------------------------------------------------------------------------------
Замечание в скобках: Я и раньше встречался с такой ситуацией, когда 3
способа обзора локальной сети, а именно, через "Сетевое окружение", через
"Поиск компьютера" и через "Подключение сетевого диска" дают совершенно
разные результаты. Логику Misrosoft в этом случае постигнуть совершенно
невозможно. Может кто-то может объяснить? А пока приходится пробовать все
три варианта, авось какой-то сработает!

Попробую немножко, хотя тема дюже большая... Итого - 2 последних способа
почти идентичны, а вот первый... При просмотре сетевого окружения просмотр
сети как таковой не производится  - на самом деле машины в сети производят
выборы (elections) и победитель этих выборов ведет у себя список машин,
находящихся в сети. При просмотре сетевого окружения машина обращается к
этому победителю (master browser) и получает этот список,  а потом при
выборе какой-либо машины клиент должен от мастер браузера получить
координаты этой машины (нарочно не пишу адрес - чтоб не было путаницы с
айпишным адресом, т.к. это может проходить по разным протоколам). Все
возможные заморочки описывать не буду - слишком много вариантов, замечу
только, что самые типовые случаи - клиент видит мастер браузер, но сам
ресурс недоступен (в другом сегменте и рутинг не настроен), неправильная
отдача мастер браузером ссылки (а имя он регистрирует в списке по
броадкасту) и просто неотдача мастер браузером списка ресурсов сети (грешат
ХР чаще всего, ибо в NT-2k-XP на запрос о ресурсах сети еще проверяются
права на доступ к сервисам, к master browser в том числе). Здесь скорее
всего второй случай....
    При поиске в сетевом окружении посылается в сеть броадкастовый запрос
имени, при подключении сетевого диска - то же самое... незначтельно
отличается порядком дополнительных проверок.
    Это, конечно, очень неточно - на подробностях можно написать немалую
книгу, но вот несколько советов при работе с самбой...
    После установки и грубого конфигурирования для настройки самбы удобнее
использовать его родной SWAT - действительно удобное и полное средство....
там многое станет видно, в частности, как включить в самбе сервис master
browser и задать ему такой приоритет, чтоб он перебил все виндовые
приоритеты.
    Дополнительно если линукс работает сервером и постоянно включен, лучше
установить на виндовсовских машинах параметр "координатор сети" в "откл" -
тогда они и не будут пытаться занять чужую роль.
    Для подключения по сети дисков виндовых машин сервер самба устанавливать
не нужно - это делает smbclient, который ставится отдельно- сервер самба
нужен для раздачи ресурсов с линукса в винду.
    Соответственно этому и перекодировки для разных программ (самба- сервер
и смбклиент) устанавливаются в разных местах и друг на друга не влияют.
    И еще тонкость - не стоит разрешать пустые пароли - при этом не работают
некоторые функции самбы, класса подключения home и нормальная установка прав
доступа...
    В этой теме есть еще много чего, но пожалуй хватит Ж8-)
With best regards, Andrew Krasovsky.  E-mail: kav@mru.odessa.ua

Deem: Люди, подскажите, плз. почему в разнородной сети Вин2000 + Вин9х не видно компов в сетевом окружении. "Сеть недоступна". А вот пингуешь комп и он появляется. В чем фигня???

Denis, Москва:
Что такое служба Microsoft Browser (браузер сети)? Как сделать так, чтобы все компьютеры в сети <видели> ресурсы друг друга?
Служба Browser поддерживает централизованный список доступных сетевых ресурсов. Сетевой компьютер может выполнять одну из четырех ролей браузера сети: Domain Master Browser (<главный браузер домена>), Master Browser (<главный браузер>), Backup Browser (<резервный браузер>), Nonbrowser (<не браузер>).

Главный браузер формирует и поддерживает список доступных сетевых ресурсов. В каждом сегменте сети может быть только один главный браузер. Он назначает резервные браузеры и может передать им свои функции, если выходит из строя. Главный браузер домена собирает списки сетевых ресурсов с главных браузеров во всех сегментах сети и обеспечивает возможность просмотра ресурсов всего домена NT. В домене может быть только один главный браузер домена. Компьютер, исполняющий роль Nonbrowser (<не браузер>), список сетевых ресурсов не поддерживает. Время от времени компьютеры в сети могут инициировать <выборы> главного браузера. Следует избегать таких ситуаций в смешанной сети с операционными системами NT, Windows 9x, Windows 3.11.

Компьютер под управлением Windows NT можно сконфигурировать так, чтобы он был браузером, никогда не выполнял роль браузера или являлся потенциальным браузером. Для этого при помощи редактора реестра regedt32.exe нужно отредактировать параметр HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Browser\Parameters\ MaintainServerList. Пример показан на Экране 1. Параметр MaintainServerList имеет тип REG_SZ и может принимать значения Auto, No, Yes. Если параметр установлен в Auto (установка по умолчанию), то такой компьютер называется потенциальным браузером. Он может стать резервным браузером по команде главного.

Если параметр установлен в No, то компьютер никогда не становится браузером. Если параметр имеет значение Yes, то компьютер пытается стать резервным браузером и получить от главного список доступных сетевых ресурсов.

Если главный и резервный браузеры в сегменте сети уже есть, то новый компьютер не сможет стать резервным браузером, если компьютеров в сегменте мало. (Для сегмента с числом компьютеров менее 32 требуется только один главный браузер и один резервный.) Чем больше компьютеров в сегменте, тем больше требуется резервных браузеров. Если по каким-то причинам главный браузер недоступен, то в сети назначаются <выборы>, и один из компьютеров становится кандидатом на роль главного браузера. Всякий раз, когда в сети появляется компьютер, который может стать браузером, главный браузер передает резервному список доступных сетевых ресурсов этого компьютера.

Если значение MaintainServerList установлено в Auto, то станет ли компьютер браузером, зависит от результатов обмена сообщениями с главным браузером. Если MaintainServerList установлен в Yes, то компьютер обычно становится резервным браузером. PDC (главный контроллер домена) всегда претендует на роль главного браузера первым.

Начиная с версии 3.1 в NT при назначении потенциальных браузеров использовались приоритеты. NT-серверы имели наивысший приоритет, следом шли рабочие станции NT, и низший приоритет имели компьютеры с Windows for Workgroups (WFW). Сейчас конфликтов между браузерами практически не происходит. Тем не менее если случается конфликт, то на тех компьютерах, которые не должны быть главными браузерами, нужно установить MaintainServerList в No. На компьютерах с WFW в файле system.ini в секции Network Section нужно установить соответствующий параметр в No:

MaintainServerList=<yes, no, auto>
Если оставить установки по умолчанию, то компьютер с WFW будет функционировать как браузер.

Не следует назначать компьютеры с Windows 9x главными браузерами. Чтобы такой компьютер не мог стать браузером, нужно вызвать Control Panel, дважды щелкнуть мышью на значке File and Print Sharing for Microsoft Networks, перейти в диалоговое окно Advanced Properties, выбрать Browse Master и нажать No.

если глюки с доменными машинами - то на Win 2k надо добавить это

5161 > While browsing a network from Windows 2000 or Windows XP, you receive 'System Error 1230'?

When you use net view or browse the network using My Network Places, you receive:

System Error 1230 has occurred.

An invalid operation was attempted on an active network connection.

If you have a single Windows 2000 server, that is a print server, file server, and browse master for the network, this error will occur if a direct host, port 445, connection from a client has a pending SMB transaction when a Computer Browser service attempts to connect using NetBIOS over TCP/IP, port 139.

To prevent this error, force all connections to use NetBIOS over TCP/IP.

Run the following SMBDeviceEnabled.reg file on the server and all Windows 2000 and Windows XP clients:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]
"SMBDeviceEnabled"=dword:00000000