Samba — первые шаги

Галина Апрышкина

Введение

Что умеет Samba

Инсталляция и тестирование Samba

Где взять

Конфигурирование Samba

Запуск демонов

Простой тест

Основная настройка smb.conf

Используем текстовый интерфейс

Используем SWAT

Детальная настройка

   Файловый сервер под Linux

   Доступ к дискам Windows из Linux

Заключение

Введение

В общей структуре корпоративных сетей Microsoft Windows и Linux зачастую существуют как разобщенные миры. Попытки обеспечить «прозрачный» доступ сетевых клиентов Windows к ресурсам UNIX зачастую порождают множество проблем. Одним из способов, позволяющих их решить, является использование в UNIX/Linux протокола Server Message Block (SMB — Samba), который иногда также называется протоколом Session Message Block (SMB), протоколом NetBIOS или протоколом LanManager. Этот протокол не является разработкой Microsoft, однако он хорошо адаптирован для использования в сетях на основе Windows. Хотя эта статья и посвящена Linux, тем не менее Samba может работать на большинстве UNIX-подобных операционных систем. И еще одно замечание: в данной статье мы рассмотрим пакет SMB с точки зрения малого предприятия, которому нужен локальный файл- или принт-сервер, либо домашнего пользователя, имеющего несколько компьютеров и желающего, чтобы машины совместно использовали ресурсы. Поэтому даже начинающий администратор UNIX/Linux может принять эту статью как руководство к действию.

В начало В начало

Что умеет Samba

Samba — это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows. Подобно операционной системе UNIX/Linux, на которой она работает, Samba представляет собой разработанное множеством программистов ПО с открытым исходным кодом.

Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell (Andrew.Tridgell@anu.edu.au), UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad (pke@engstad.ingok.hitos.no) и Volker Lendecke (lendecke@namu01.gwdg.de), дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах с Windows или Samba.

C помощью Samba можно реализовать следующие наиболее распространенные:

  1. Давать доступ к дискам Linux Windows-машинам.
  2. Получать доступ к дискам Windows для машин под Linux.
  3. Давать доступ к принтерам Linux для Windows-машин.
  4. Получать доступ к принтерам Windows из Linux-систем.

Далее в статье будет дано подробное описание того, как это все реализовать.

В начало В начало

Инсталляция и тестирование Samba

Инсталляцию, как известно, следует начинать с подробного изучения документации. Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем начать инсталляцию Samba с простой команды: $ man samba (рис. 1).

А также c чтения документации, доступной на сайте http://www.samba.org/. Следует отметить, что для использования Samba ваша машина должна находиться в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP. Samba не будет работать при использовании других сетевых протоколов. Это, в принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить поддержку TCP/IP.

В начало В начало

Где взять

Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с сайтом http://www.samba.org/ и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом случае вы можете продолжать чтение статьи со следующей главы.

После получения данного пакета извлекаем все то, что находится под «грифом» *.tar.gz, например, в директорию /tmp (причем для этого не обязательно быть root'ом :), то есть:

$ tar -zxvf samba-latest.tar.gz  

Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию, например samba-latest, и в ней извлеченные файлы. Перейдите в нее, загляните в файлы «README» и «Manifest» — инструкция по инсталляции находится в последнем файле и выглядит примерно так:

$ ./configure  
$ make  
$ su  
# make install  

Теперь надо обратить внимание на то, где находятся ваши файлы конфигурации. Большинство дистрибутивов Samba по умолчанию помещает их в директорию /etc, а себя — в директорию /usr/local/samba.

В начало В начало

Конфигурирование Samba

Основная информация о конфигурации Samba находится в файле smb.conf. С этим файлом следует обращаться осторожно. Если вы планируете каким-либо образом изменить работающую версию, обязательно сделайте копию.

Для того чтобы первый раз запустить сервер, необходимо иметь рабочую версию файла smb.conf. Перейдите в директорию, в которой должен находиться ваш конфигурационный файл. Скорее всего это будет /etc или /usr/local/samba/lib. Сделайте копию данного файла, например smb.old, — это возможно при наличии прав root. Теперь, когда у вас есть «чистый» файл, можно ввести самую простую конфигурацию, то есть набрать следующие строки:

#Basic Samba configuration file (smb.conf)  
[global]  
workgroup = PTO  
netbios name = GALKA  

Ниже мы разберемся, что означают эти строки в файле конфигурации, но сначала временно отвлечемся от него и перейдем к демонам SMB.

В начало В начало

Запуск демонов

Имеется два демона SMB: /usr/sbin/smbd и /usr/sbin/nmbd. Вы можете запустить демоны Samba из inetd или как автономный процесс. Samba будет отвечать чуть быстрее в случае, если она запущена как автономный процесс.

Иногда бывает необходимо проверить наличие в файле /etc/services примерно таких строк:

netbios-ns            137/tcp                      nbns  
netbios-ns            137/udp                      nbns  
netbios-dgm           138/tcp                      nbdgm  
netbios-dgm           138/udp                      nbdgm  
netbios-ssn           139/tcp                      nbssn  

Убедитесь, что все они не закомментированы. В зависимости от вашего дистрибутива вам, вероятно, даже понадобится добавить их в этот файл. Samba не сможет привязаться к соответствующим портам, до тех пор пока этих строк не будет в файле /etc/services.

Для запуска демонов из inetd поместите следующие строки в конфигурационный файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing)  
    netbios-ssn            stream            tcp            nowait               root            /usr/sbin/smbd smbd  
    netbios-ns             dgram             udp            wait                 root            /usr/sbin/nmbd nmbd  

Затем перезапустите демон inetd, выполнив команду:

kill -HUP 1 `cat /var/run/inetd.pid`  

Для запуска демонов из системных стартовых скриптов поместите следующий скрипт в файл /etc/rc.d/init.d/smb (для дистрибутива RedHat) или /etc/rc.d (для дистрибутива Suse Linux) и создайте на него символические ссылки с именами вида /etc/rc.d/rcX.d/S91smb (запускает сервисы SMB в многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB при перезагрузке), где X — номер загрузочного уровня системы, обычно это цифра 2 или 3.

#! /bin/sh  
. /etc/rc.config  
# Determine the base and follow a runlevel link name.  
base=${0##*/}  
link=${base#*[SK][0-9][0-9]}  
# Force execution if not called by a runlevel directory.  
test $link = $base && START_SMB=yes  
test "$START_SMB" = "yes" || exit 0  
# The echo return value for success (defined in /etc/rc.config).  
return=$rc_done  
case "$1" in  
    start)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D || return=$rc_failed  
        startproc /usr/sbin/smbd -D || return=$rc_failed  
        echo -e "$return"  
        ;;  
    startd)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed  
        startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed  
        echo -e "$return"  
        ;;  
    stop)  
        echo -n "Shutting down SMB services:"  
        killproc -TERM /usr/sbin/nmbd || return=$rc_failed  
        killproc -TERM /usr/sbin/smbd || return=$rc_failed  
        echo -e "$return"  
        ;;  
    restart|reload)  
            $0 stop  &&  $0 start  ||  return=$rc_failed  
            ;;  
    status)  
            echo -n "Checking for service smb: "  
            checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process "  
            checkproc /usr/sbin/smbd && echo "OK " || echo "No process"  
            ;;  
    *)  
        echo "Usage: $0 {start|stop|restart|reload|status}"  
        exit 1  
esac  
# Inform the caller not only verbosely and set an exit status.  
test "$return" = "$rc_done" || exit 1  
exit 0  

Если при старте Samba вы получаете сообщение, в котором говорится, что демон не может подключиться к порту 139, то скорее всего у вас уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду 'ps ax | grep mbd') для того, чтобы определить, есть ли еще запущенные сервисы Samba. Если же демоны отказываются запускаться по каким-либо другим причинам, то вероятнее всего этот скрипт не подходит к вашему UNIX/Linux и вам придется еще раз покопаться в документации, что-то в нем поправить, а может быть, и переписать.

В начало В начало

Простой тест

Будем надеяться на лучшее и считать, что Samba при запуске не выдала никаких сообщений об ошибках. А для того, чтобы проверить, работает ли это реально, надо набрать в командной строке:

# smbclient -L localhost  

Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать Enter. Вот какие строчки должны появиться на мониторе (рис. 2).

В начало В начало

Основная настройка smb.conf

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

Каждый раздел файла начинается с заголовка раздела, такого как [global],  [homes], [printers] и т.п.

Секция [global] определяет некоторые переменные, которые Samba будет использовать для определения доступа ко всем ресурсам. Раздел [homes] позволяет удаленным пользователям иметь доступ к своим (и только своим) домашним директориям на локальной Linux-машине. Так что если пользователи Windows попытаются подключиться к этому разделу со своих Windows-машин, то они будут соединены собственными домашними директориями. Заметим, что для этого они должны быть зарегистрированы на Linux-машине.

В начало В начало

Используем текстовый интерфейс

Многие системные администраторы при инсталляции Linux ограничиваются только текстовым интерфейсом, не устанавливая графический (X Windows). Это положительно сказывается на безопасности и быстродействии системы, но делает недоступными утилиты вроде SWAT, работе с которой посвящена нижеследующая часть этой статьи.

Простой файл smb.conf, приведенный ниже, позволяет удаленным пользователям иметь доступ к своим домашним директориям на локальной машине и помещать информацию во временную директорию. Пользователи Windows могут увидеть эти ресурсы, подключив сетевые диски, при этом естественно — машина с Linux должна иметь выход в локальную сеть.  Заметим, что будут приведены дополнительные записи для этого файла, чтобы дать доступ к большему количеству ресурсов.

; /etc/smb.conf  
;  
; Убедитесь и перезапустите сервер после внесения изменений в этот  
; файл, например:  
; /etc/rc.d/smb stop  
; /etc/rc.d/smb start  
[global]  
; Раскомментируйте эту строку, если вы хотите дать доступ пользователю "гость"  
; guest account = nobody  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
   share modes = yes  
[homes]  
   comment = Home Directories  
   browseable = no  
   read only = no  
   create mode = 0750  

Написав новый файл smb.conf, полезно проверить его правильность. Для этого можно использовать утилиту 'testparm' (предварительно заглянув на справочную страницу testparm); если testparm сообщает об отсутствии проблем, то smbd правильно загрузит файл настроек.

Имейте в виду: если ваш сервер Samba имеет больше одного Ethernet-интерфейса, то smbd может подключиться к неправильному. Чтобы заставить ее подключаться к нужному, можно добавить в раздел [global] файла /etc/smb.conf следующую строку:

interfaces = 192.168.1.1/24  

Теперь можно запускать Sambа. При этом необходимо учитывать, что чем больше сервисов настроено на вашем сервере, тем более он оказывается уязвим.

Если говорить о безопасности SAMBA, то следует учесть, что она использует порты 137-139. Есть смысл просто заблокировать их из TCP и UDP. В случае если у вас стоит ядро версии 2.0 (это можно легко узнать, набрав в консоли uname -a), то для фильтрации используйте ipfwadm, а если ядро версии 2.1 или 2.2, — то ipchains.

Вот как это делается с помощью ipfwadm:

# Добавляем нижеприведенные записи  
в /etc/rc.local:   
ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0   
ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0  

Это запретит (deny) все входящие и исходящие TCP- и UDP-пакеты для портов 137-139 на интерфейсе eth0. Для получения более подробной информации рекомендуем почитать man ipfwadm.

При наличии ядер 2.1-2.2 вы сможете сделать это с помощью ipchains:

# Добавляем нижеприведенные записи в /etc/rc.local:   
ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0  

Как видите, здесь нет ничего нового и сложного. Как ipfwadm, так и ipchains выполняют одинаковые функции,  только для разных версий ядер.

Однако если вам не нравится редактировать конфигурационные файлы вручную и на вашем Linux-сервере установлен графический интерфейс, то вы можете упростить настройку smb.conf, воспользовавшись Samba Web Administration Tool (SWAT).

В начало В начало

Используем SWAT

Для использования SWAT проверим два конфигурационных файла: services (/etc/services) и inetd.conf (/etc/inetd.conf).

По умолчанию SWAT запускается с 901-го порта, но при желании это можно изменить. Итак, проверяем вышеуказанные конфигурационные файлы:

>/etc/service  
swat 901/tcp                 # в данном случае SWAT-service  используется через inetd  

Если эта строка присутствует в /etc/service, то все нормально. Если строки нет, добавьте ее в конец файла. Данная строка говорит нам о том, что SWAT запускается на 901-м порте.

Теперь в файл inetd.conf (/etc/inetd.conf) добавляем следующую строку:

swat                stream           tcp                nowait.400                     root                /usr/sbin/swat swat  

Затем перезапустим inetd:

# killall -HUP inetd  

Далее в браузере набираем:

http://192.168.0.1:901  

В случае если все настроено правильно, вы увидите форму, в которой нужно ввести имя пользователя (username) и пароль (password). Здесь введите имя и пароль пользователя "root".

Итак, SWAT запущен. Теперь можно ознакомиться с его работой. Как вы видите, SWAT — это программа с прекрасным интерфейсом, которая создает конфигурационный файл /etc/smb.conf.

В начало В начало

Детальная настройка

Файловый сервер под Linux

Как показано выше,  организация доступа к дискам Linux для пользователей Windows с помощью файла smb.conf является довольно простым делом. Однако Samba позволит вам в большой степени контролировать этот процесс. Приведем несколько примеров.

Для организации доступа для всех добавьте в smb.conf следующие строчки:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  

Вы получили возможность запустить Samba и просмотреть доступные ресурсы с компьютера под управлением Windows. Однако все может оказаться не так-то просто. Начиная с Windows NT 4 в операционных системах Microsoft, в том числе и в среде Windows 98 (начиная с NT Service Pack 3), происходит передача закодированных паролей по сети.  Вы непременно столкнетесь с этой проблемой, если версия пакета Samba, установленная на вашем UNIX/Linux-сервере, ниже 2.0.5а и не поддерживает закодированные пароли.

В случае несоответствия типов паролей между клиентом и сервером при попытках подключиться к ресурсу в окне диалога будет указано примерно следующее: «You are not authorized to access that account from this machine».

Подобную проблему можно решить двумя путями. Во-первых, можно настроить Samba-сервер для использования шифрованных паролей.  Во-вторых, заставить Windows работать с нешифрованными паролями SMB. Если это Windows 98, то последовательность ваших действий должна быть такова: используя редактор registry (regedit), создайте ключ registry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP  

Добавьте значение типа DWORD:

Имя значения: EnablePlainTextPassword Данные: 0x01.

Для Windows NT эта же последовательность действий выглядит так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters  

Добавьте значение типа DWORD:

Имя значения: EnablePlainTextPassword Значение: 0x01.

После того как вы сделали эти изменения, перезагрузите машину с Windows и попытайтесь подключить сетевой диск к серверу Samba. Это должно работать, поскольку сервер Samba использует пароли в нешифрованном виде.

Однако следует иметь в виду, что передача по сети незашифрованных паролей всегда наносит ощутимый удар по системе безопасности, поэтому, если есть возможность, лучше настроить Sambа для использования шифрованных паролей. Для этого в раздел [global] файла /etc/smb.conf добавьте следующие строки:

encrypt passwords = yes  
smb passwd file = /etc/smbpasswd  

При использовании вашими клиентами и вашим сервером шифрованных паролей вы не сможете просмотреть списки доступных ресурсов до тех пор, пока начальное соединение не будет сделано с правильными параметрами входа. Для того чтобы сделать первоначальное соединение, в диалоговом окне Windows File Manager или Explorer введите вручную имя ресурса в форме \\hostname\sharename. Подключитесь к серверу посредством правильных для данного сервера имени и пароля.

Если вы подозреваете, что ваш сервис имен NetBIOS неправильно настроен (возможно, потому, что вы получаете сообщение об ошибке «host not found (машина не найдена)» при попытке подключения), попытайтесь использовать IP-адрес сервера: \\host ip address\sharename.

Если вы хотите видеть Samba-директорию в качестве сетевого диска, то вам следует сделать на Windows-машинах следующие настройки.

Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого заходим в свойства сети (щелкаем правой клавишей мыши на значке рабочего стола «Сетевое окружение» (Network Neighborhood) и выбираем «Свойства»). Далее заходим на закладку «Компьютер» (Identification). В поле «Имя компьютера» (Computer name) прописываем Galka, в закладке «Рабочая группа» (Workgroup) — PTO, а в закладке «Описание компьютера» (Computer Description) можете прописать что угодно (рис. 3).

Дальше переходите на закладку «Управление доступом» (Access Control) и поставьте флажок в поле «На уровне ресурсов» (Share-level access control).

Теперь переходите в самую первую закладку «Конфигурация» (Configuration) и нажмите на кнопке «Доступ к файлам и принтерам» (File and print sharing). В появившемся окне необходимо поставить флажки в поле «Файлы этого компьютера можно сделать общими» (I want to be able to give others access to my files) и «Принтеры этого компьютера можно сделать общими» (I want to be able to allow others to print to my printer(s)).

И наконец, мы указываем Windows, что Samba является сервером WINS и именно он будет browse master'ом. Для этого переходим в свойства TCP/IP-протокола (рис. 4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration). Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution). В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем IP-адрес сервера (Samba) — 192.168.0.1 и нажимаем «Добавить» (Add) или просто [Enter]. Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все. Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.

В Windows NT экраны свойств сети немного различаются (показаны на рисунках), но главная концепция построения остается той же.

После перезагрузки Windows смело жмите на «Сетевое окружение» (Network Neighborhood) и вы сможете увидеть Samba-сервер, а также свою домашнюю директорию на Linux-сервере. Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters.

Немного усложним конфигурацию: сделаем директорию /home/public доступной для чтения всеми, но разрешим помещать в нее информацию только людям из группы ADMINS. Для этого изменим запись следующим образом:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  
   write list = @ADMINS  

Можно привести еще много разных примеров настроек файлового сервера Samba, но будет лучше, если вы заглянете в документацию Samba или в справочные страницы и разберете их самостоятельно.

В начало В начало

Доступ к дискам Windows из Linux

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

Программа клиента SMB для UNIX/Linux-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между «сервером» под управлением Windows и клиентом под Linux.

Для того чтобы увидеть, какие ресурсы доступны на данной машине, выполните команду:

/usr/sbin/smbclient -L host  

где host — это имя машины, которую вы хотите видеть. Эта команда вернет список имен сервисов — то есть имен дисков или принтеров, к которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя «гость (guest)» или ваш персональный пароль на этой машине.

Для использования клиента выполните следующую команду:

/usr/sbin/smbclient service <password>  

где service — имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем public на машине, названной galka, то имя сервиса должно звучать как \\galka\public.

Вы получите приглашение smbclient:

Server time is Wen May 22 15:58:44 2001  
Timezone is UTC+10.0  
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]  
smb: \>  

Команды для использования Samba аналогичны командам ftp, но если вы не умеете пользоваться ни тем ни другим, напечатайте h, чтобы получить помощь.

Вы, конечно, можете использовать smbclient для тестирования, однако очень скоро вам это надоест. Для работы вам вероятнее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами — smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов. Например,

smbmount//computer_name/catalog/Mountpoint -U user_name 

В итоге вы получите «подмонтированный» ресурс с возможностью обращения к нему привычными методами проводника.

Принт-сервер под Linux

Для организации доступа к Linux-принтеру с Windows-машин вам необходимо убедиться, что принтер работает под Linux. Если вы можете печатать под Linux, то организация доступа к принтеру будет очень проста.

Добавьте настройку принтера в ваш файл smb.conf:

[global]  
   printing = bsd  
   printcap name = /etc/printcap  
   load printers = yes  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
[print]  
   comment = All Printers  
   security = server  
   path = /var/spool/lpd/lp  
   browseable = no  
   printable = yes  
   public = yes  
   writable = no  
   create mode = 0700  
[ljet]  
   security = server  
   path = /var/spool/lpd/lp  
   printer name = lp  
   writable = yes  
   public = yes  
   printable = yes  
   print command = lpr -r -h -P %p %s  

Убедитесь, что путь к принтеру (в нашем случае для [ljet]) соответствует буферной директории, указанной в файле /etc/printcap, то есть проверьте наличие строк:

printcap name = /etc/printcap  
load printers = yes  

Эти строки контролируют, должны ли все принтеры, перечисленные в /etc/printcap, быть загружены по умолчанию. В этом случае нет нужды в настройке каждого принтера в отдельности. Раздел [printers] указывает настройки для принтеров, которые вы хотите определить явно. Если используемая вами подсистема печати не работает подобным образом (BSD), то вам необходимо настроить фальшивый файл printcap (либо использовать 'print command', см. ниже). Для получения дополнительной информации о системе printcap см. Printing-HOWTO.

Доступ к принтеру Windows с машин, работающих под Linux

Для доступа к принтеру на Windows-машине необходимо соблюдение следующих условий:

  1. Вам необходимо иметь в файле /etc/printcap правильные записи, которые должны соответствовать локальной структуре директорий (для буферной директории и т.п.)
  2. У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными текстами Samba, но не со всеми двоичными дистрибутивами Samba.
  3. Если вы хотите преобразовывать ASCII-файлы в PostScript, вы должны иметь программу nenscript или ее эквивалент. Программа nenscript — это конвертор PostScript, который обычно устанавливается в директорию /usr/bin.

Запись в приведенном ниже файле /etc/printcap сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:

        cm — комментарий;  
        lp — имя устройства, открываемого для вывода;  
        sd — директория спула принтера (на локальной машине);  
        af — файл учета пользования принтером;  
        mx — максимальный размер файла (ноль — без ограничений);  
        if — имя входного фильтра (скрипта).  

Фрагмент файла /etc/printcap:

# /etc/printcap
#
# //galka/oreilly via smbprint
#
lp:\
        :cm=HP 5MP Postscript OReilly on galka:\
        :lp=/dev/lp1:\
        :sd=/var/spool/lpd/lp:\
        :af=/var/spool/lpd/lp/acct:\
        :mx#0:\
        :if=/usr/bin/smbprint:

Убедитесь, что буферные директории и директория, применяемая для учета пользования, существуют и имеют право на запись. Убедитесь, что строка «if» содержит правильный путь к скрипту smbprint (дан ниже) и что записи указывают на правильное устройство вывода (специальный файл /dev).

Далее идет сам скрипт smbprint. Он обычно находится в директории /usr/bin и написан Andrew Tridgell.

#!/bin/sh –x
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# The last parameter to the filter is the accounting file name.
#
spool_dir=/var/spool/lpd/lp
config_file=$spool_dir/.config
# Should read the following variables set in the config file:
#   server
#   service
#   password
#   user
eval `cat $config_file`
#
# Some debugging help, change the >> to > if you want to same space.
#
echo "server $server, service $service" >> $logfile
(
# NOTE You may wish to add the line `echo translate' if you want automatic
# CR/LF translation when printing.
        echo translate
        echo "print -"
        cat
) 
| /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII-документов в PostScript.

В начало В начало

Заключение

Еще совсем недавно возможности Samba ограничивались лишь перечисленными выше. Однако можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba легче внедряться в сети Microsoft. ПО обеспечивает экономию не только потому, что не нужно платить за серверную ОС, но и потому, что не приходится оплачивать «клиентские» лицензии за все компьютеры, которые используют сервер.

О новых возможностях Samba 2.2. читайте в нашей статье «Samba 2.2 — что нового» .

КомпьютерПресс 10'2001

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует