shipboard89 (shipboard89) wrote,
shipboard89
shipboard89

Category:

Samba & CUPS

Задача: настроить сервер Samba для разделения принтеров под Linux
Оборудование:
Сервер: Cel500/128RAM(PC133)/40Gb(ATA-133)/GeForce2mx 32mb)
Сервер находится в локальной сети где работают юзвери
.
Используемое ПО:
Сервер (ip address 172.17.2.1):
1)OS Ubuntu-8.10-server-i386, ядро 2.6.27-7-server. Скачать можно тут:
http://www.ubuntu.com/getubuntu/download
2)Samba v2:3.2.3-1ubuntu3.4
3)Cups 1.3.9-2ubuntu6.1 предполагается уже настроен, файлы отправленные на печать с сервера - печатаются.

Зачем привязывать Samba к CUPS?
Действительно, ведь CUPS сам предоставляет возможности для разделения принтеров в сети. Samba предоставляет 2 дополнительные возможности:
Во-первых, через самбу мы можем получать доступ к принтерам, которые расположены на Windows машинах.
Во-вторых, начиная с версии 2.2.0 Samba поддерживает механизм печати Windows NT, который основан на MS-RPC (Remote Procedure Calls).
Это предоставляет дополнительные возможности. Например, драйверы для принтера сами скачаются и устанавятся на клиентском компьютере (под управлением Windows 95/98/Me/2000/XP/2k), пользователю нужно лишь дважды щелкнуть мышкой на разделяемом объекте принтера. Это очень удобно, ведь как было видно из предыдущего опыта с CUPS, на клиентском компьютере Windows необходимо было вручную устанавливать драйверы (в нашем случае Adobe PostScript), и если таких компьютеров много, то это создает серьезные трудности для сетевого администратора. Кроме того, включена поддержка NT ACL для принтеров, и некоторые другие функции.

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

1. Для начала, нужно создать учетную администратора сервера:
#smbpasswd -a root

2. Затем нам нужно отредактировать конфигурационный файл /etc/samba/smb.conf:

[global]
printer admin = root #можно было и не писать, т.к. это верно по умолчанию.
security = user #это необходимо для настройки.
use client driver = no #говорим клиентам стягивать драйвер с сервера ( верно по умлочанию)

...
[LBP2900] #имя = локальной очереди. Если в системе несколько принтеров, удобнее использовать специальный объект [printers]
printable = yes #объект - принтер
browseable = yes #объект не скрытый
path = /var/spool/samba #каталог спулинга


[print$]
# это специльаный разделяемый объект предназначен специально для хранения драйверов принтеров.
comment = Printer Driver Download Area
path = /etc/samba/drivers #здесь собственно и будут лежать наши драйверы
browsable = no #шара скрытая, но можно сделать ее и видимой, тогда она будет отображаться как Printers and Faxes
guest ok = yes #у нас анонимный сервер, без авторизации, кто угодно может скачать наши драйверы.
read only = yes #нам не надо, чтобы кто угодно мог изменить наши драйверы
write list = root #только root имеет право на запись в этот каталог =)

3. Перезапускаем самбу:

/etc/init.d/samba restart

4. Теперь разберемся, какие файлы включены в драйвер принтера, а также параметры для драйвера. Проще всего это узнать, установив принтер на Windows машину, а затем распечать пробную страницу. В случае Adobe Postscript драйвера:
Driver name: pscript5.dll
Data name: LBP2900.ppd #для моего принтера
Config file: ps5ui.dll
Help file: pscript.hlp
Environment: Windows NT x86
Default datatype: RAW
Additional files used by this driver: pscript.ntf
Все файлы драйвера лежат обычно в
%WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3

5. Итак все необходимые файлы и дополнительная информация у нас есть. Теперь нам нужно создать в папке /etc/samba/drivers поддиректории соответствующие драйверам для разных архитектур. Архитектуре Windows NT/2000/XP соответсвует поддиректория W32X86, Windows 95/98/Me - WIN40. Есть и другие архитектуры, но в моей сети есть лишь компьюетр под управлением Windows XP, поэтому драйверы я установлю только для этой архитектуры:
#mkdir /etc/samba/drivers/W32X86

6. Копируем наши драйверы во вновь созданную папку. Сделать это можно разными способами, через ssh, через smbclient, через флешку наконец =)

7. Казалось бы файлы на месте, все должно работать, но если подумать, все не так просто. =) Samba
ведь не знает какой файл для чего, и какой драйвер соответствует какому принтеру.
Поэтому скажем самбе, что это не просто файлы, а ничто иное, как драйверы для принтера:

#rpcclient -c 'adddriver "Windows NT x86" "LBP2900DRIVER:pscript5.dll:LBP2900.ppd:ps5ui.dll:pscript.hlp:NULL:RAW:pscript.ntf"' localhost

Команда эта имеет следущий синтаксис:
#rpcclient -c 'adddriver "arch" "config"' host

Possible values for arch are "Windows 4.0" (for Windows 95/98), "Windows NT x86", "Windows NT PowerPC", "Windows Alpha_AXP", and "Windows NT R4000".

config = Name:Driver File Name:Data File Name:Config File Name:Help File Name:Language Monitor Name:Default Data Type:Additional files used by this driver (перечисленные через запятую)

host = NetBIOS имя компьютера
Если какого-то файла или параметра нет, заменяем на слово NULL

пример:
#rpcclient -c 'adddriver "Windows NT x86" "LBP2900DRIVER:pscript5.dll:LBP2900.ppd:ps5ui.dll:pscript.hlp:NULL:RAW:pscript.ntfi,cups6.inf,cups6.ini,cupsps6.dll,cupsui6.dll"' router



8. Теперь скажем самбе что драйвер LBP2900DRIVER для принтера LBP2900:
# rpcclient -c 'setdriver LBP2900 LBP2900DRIVER' localhost

9. Теперь возвращаем в /etc/samba/smb.conf уровень безопасности share и перезапускаем самбу.
Все, теперь чтобы установить принтер на windows машине пользователю достаточно будет лишь дважды щелкнуть на разделяемом принтере LBP2900 в My Network Places. =)


Спасибо:
1)us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/classicalprinting.html
2)man smb.conf
3)man rpcclient
4)
www.cups.org/doc-1.4/man-cupsaddsmb.html#MICROSOFT_POSTSCRIPT_DRIVERS_FOR_WINDOWS
Subscribe

  • Desktop

    Интересно, что подумают инопланетяне, пролетая мимо Земли?))) Люблю ночь...и электрический свет

  • Link Aggregation

    Задача: Настроить агрегацию каналов для получения максимальной пропускной способности. Сеть ethernet, топология двойная звезда. Схема сети:…

  • Dynamic Host Configuration Protocol

    Задача: Настроить DHCP сервер, обслуживающий несколько локальных сетей. Схема сети: DHCP сервер находится в сети LAN2 и обслуживает клиентов…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 2 comments