7.1 Создание файлового сервера Samba

 

То, что Linux может работать продолжительно и бесперебойно - это ФАКТ. Возникает вопрос: почему бы не оснастить какую-нибудь "четверку" Linux'ом и не сделать из нее сервер? Наверное, это не плохое предложение. Более того, большинство знакомых мне администраторов сети так и делают.

Попробуем реализовать данную догадку на базе пакета Samba. Данный пакет работает на основе протокола SMB. Очень много плюсов он заслуживает за широкую распространенность и нетребовательность к ресурсам (достаточно наличия компьютера на базе 80486 и 4 МБ оперативной памяти *вот до чего техника дошла :)*).

Первым делом инсталлируем пакет Samba. Данный пакет состоит из двух отдельных программ (демонов): smbd (носитель протокола SMB) и nmbd (поддержка имен NetBIOS). Сначала их нужно правильно сконфигурировать и запустить. Только тогда ваша система (Linux) будет отображаться в сети.

Есть несколько вариантов загрузки smbd и nmbd демонов. Один из них, это когда запуск демонов производится автоматически при инсталляции. Если же вам это не нравится, то можно использовать сценарий Start-and-Stop в каталоге /etc/rc.d/init.d. Данный сценарий используется для загрузки вышеописанных демонов в память. Если и это не подходит, тогда используйте Super-Demon Inetd (конфигурационный файл /etc/inetd.conf). При использовании последнего будьте предельно внимательны и из соображений безопасности лучше используйте (при запуске посредством inetd) TCP-Swapper. Этот модуль фильтрует поступающие запросы в соответствии с записями в файлах /etc/hosts.allow и /etc/hosts.deny, которые разрешают другим компьютерам доступ к системе (allow) или запрещают его (deny). На основе всего этого попробуем сделать корректные (правильные) записи в файл /etc/inetd.conf. Они будут выглядеть следующим образом:

netbios-ssn stream tcp nowait root

usr/sbin/tcpd/usr/sbin/smbd

или же

netbios-ns dgram udp wait

root/usr/sbin/nmbd nmbd

Характер предоставляемых ресурсов и разрешений на их использование определяется файлом /etc/smb.conf. Данный файл имеет очень большое значение при настройке Samba. Ниже я приведу "примитивный пример" файла smb.conf и попытаюсь вкратце описать функции той или иной строки.

Все разделы в файле smb.conf разбиты по спецификации и заключены в прямоугольные скобки [ ]. Отдельные записи созданы в соответствии с формулой Set_name = значение.

Первый раздел именуется [global]

[global] 
guest account = guest 
security = share 
printing = bsd 
printcap name = /etc/printcap 
load printers = yes

Теперь попытаемся разобраться со всеми этими записями. Запись guest account = guest говорит о том, что пользователи получают доступ без регистрации согласно учетной записи пользователя-гостя (guest). Наверное, все-таки есть смысл оставить эту запись (у меня, например, таковая имеется в /etc/smb.conf). Но все же следует приделать внимание и осторожность при предоставлении прав доступа записи пользователя-гостя.

Дальше следует запись security = share. Она определяет, каким образом задается имя пользователя. Что это такое? В securityможно задать одно из трех значений: share, user, server. Если указывается в качестве значения security = share, то при каждом доступе запрашивается имя пользовательского ресурса. Запись security = user задействует имя пользователя компьютера Windows (нужно указать имя пользователя, под которым вы входите в сеть Windows. Пароль - соответственно). И, наконец, если security = server, тогда данная запись использует для проверки пароля возможности NT-Server.

Переходим ко второму разделу файла smb.conf. Этот раздел называется [directory] и служит для совместного доступа к каталогам. Для совместного использования отдельного каталога необходимо указать полный путь к этому каталогу. При этом воспользуемся следующей последовательностью записей:

[directory] 
comment = elk's directory #комментарий 
path = совместно используемый каталог 
read only = yes

Здесь запись path устанавливает, какой каталог должен использоваться совместно (например, /usr/doc/SMB-HOWTO). Ресурсы, предоставляемые для совместного использования, должны иметь отдельную запись для каждого каталога. Для собственных же каталогов пользователей коллективный доступ реализуется следующим образом:

[homes] 
comment = #здесь можно написать комментарий 
browserable = yes 
read only = no

Пояснения. В качестве имени сетевого ресурса, Samba использует имя пользователя, относящегося к числу "родных" ("своих"). Следовательно, запись browserable = yesобеспечивает отображение в сети Windows совместно используемых каталогов. Следующая запись read only = noобеспечивает возможность записи в каталогах (если здесь noпоменять на yes, тогда записывать в каталоги не будет возможности).

Проблемы

Проблема ¦ 1. Закодированные пароли

С появлением Windows NT 4 (ох уж этот Windows) в операционных системах Microsoft происходит передача закодированных паролей по сети. Этот процесс происходит так же, как и в среде Windows 98. К сожалению, Samba не поддерживает ЭТОГО.

Что же делать? Так как безвыходных ситуаций не бывает (хотя, чем Windows не шутит :), то попытаемся что-то сделать.

Рабочее окружение формируется с помощью записи в системном реестре (Windows): создаем запись типа DWORD в ключе (для Windows NT 4) HKEY_LOCAL_MACHINE\System\Current ControlSet\Services\Rdr\Parameters или же (для Windows 95/98) HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\VxD\Parameters. Даем ей название EnablePlainTextPassword и присваиваем значение 1.

Это один из способов решения данной проблемы. Кроме этого, можно установить себе последнюю версию пакета Samba (например, 2.05а), которая поддерживает закодированные пароли.

Но, и в том и другом случае управление пользователями должно происходить с помощью команды smbpassword, а в файл smb.conf должна добавляться запись encrypt passwords = yes.

Проблема ¦ 2. Использование Windows-машин из Linux

Вряд ли начинающие пользователи Linux OS смогут быстро разобраться с системой доступа к Linux-файлам из под Windows и наоборот.

Но, не все так сложно. Доступ к Linux-ресурсам из под Windows был кратко описан выше, а доступ к Windows-ресурсам из под Linux'а мы сейчас рассмотрим.

Программа smbclient, вызываемая с различными параметрами (справка вызывается командой man smbclient), делает ресурсы Windows доступными из Linux. Тем пользователям, которые работали с Ftp, данная программа не покажется сложной. С помощью smbclient вы можете проверять также конфигурацию собственного Samba-сервера или другие компьютеры вашей сети. Делается это при помощи команды

smbclient -L компьютер -U имя_пользователя

Можно также непосредственно встроить сетевые ресурсы Windows или Samba с помощью команды smbmount:

smbmount//имя_компьютера/каталог/Mountpoint -U имя_пользователя

И заключение. Можно с уверенностью сказать, что настройка своего файлового сервера под Linux - "дело популярное". Если же еще и учесть, что NT- и Samba-сервер в одной сети с трудом терпят друг друга (Windows:) есть Windows:), посколькуSamba в конкурентной борьбе за домены имеет приоритет по отношению к NT-серверу,то стоит задуматься о более эффективном выходе из сложившейся ситуации.

 

 
"Учебник ОС Linux" В. Мартыненко