Ключевые слова:cups, samba, freebsd, print, (найти похожие документы)
From: Al <tomefrom@list.ru.>
Date: Mon, 4 Oct 2007 14:31:37 +0000 (UTC)
Subject: Настройка сервера печати под FreeBSD на базе CUPS и samba+AD
Оригинал: http://www.lissyara.su/?id=1514
Решил в качестве эксперимента настроить файловый сервер на самбе,
с аутентификацией пользователей в AD. После танцев с бубном наконец-то
получил билет кербереса и все заработало (самбу настраивал по статье
urgor'a SAMBA+AD+NT ACL, за что ему огроменное спасибо). Вместе с
самбой поставил и CUPS. Вот только сетевой принтер фирмы HP на
стандартных CUPS'овых дровах работать не захотел.... И так, начнем
превращение нашей самбы еще и в принт-сервер. Предполагается, что
самба+купс уже настроены и аутентификация пользователей в AD проходит
успешно.
Заходим на http://192.168.0.201:631 и пробуем добавить принтер.
Если есть сетевые принтеры(имеющие свой IP) - купс часть нанюхает сам,
но не все. Итак, добавляем принтер.
При попытке напечатать тестовую страницу у меня появилась ошибка
"Unsupported format 'application/postscript'!". ищем дрова на принтеры
HP, не забыв перед этим обновить коллекцию портов :)
[srv:/usr/ports]#make search name=hplip
Port: hplip-1.6.7
Path: /usr/ports/print/hplip
Info: Drivers and utilities for HP Printers and All-in-One devices
Ставим. Если принтер не HP, то, возможно, подойдет Gimp-print.
Официальный сайт - http://gimp-print.sourceforge.net
Устанавливаем принтер заново, но уже с драйверами из
свежеустановленного пакета. (В моем случае было несколько драйверов
для моей модели. Я поставил с PostScript).
Пробуем напечатать тестовую страницу - у меня получилось. Таже
принтер должен появиться рядом с расшаренными папками (смотрим с
виндусового компа).
Можно даже попробовать его подключить, но драйверов сервак не
даст,а предложит выбрать из существующих или установить с диска. Я
поставил первые попавшиеся (даж не от моего прринтера, даж не HP).
Тестовая страница теперь печатается еще и из винды.
А дальше начинается самое интересное. Как заставить наш
принт-сервер отдавать клиентам дрова, шоб не пришлось каждый раз
бегать с диском? Вот этим-то мы и займемся. Ради этого,собственно,я и
писал эту статью... Отвечает за все это дело пакет cups-samba. Его и
ставим.
[srv:/usr/ports]#make search name=cups-samba
Port: cups-samba-5.0.r3
Path: /usr/ports/print/cups-samba
Info: The Common UNIX Printing System: MS Windows client drivers
После установки видим подробную инструкцию к действиям. Ей и
последуем.
В smb.conf в секцию [global] дописываем (если такие параметры
есть-заменяем)
load printers = yes
printing = cups
printcap name = cups
Добавляем секции для принтеров (приводим их к такому виду)
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
public = yes
guest ok = yes
writable = no
printable = yes
printer admin = root
[print$]
comment = Printer Drivers
path = /usr/local/share/cups/drivers
browseable = yes
# guest ok = yes works too
guest ok = no
read only = yes
write list = root
и перезапускаем самбу
/usr/local/etc/rc.d/samba restart
А дальше - проверка Вашей везучести:
cupsaddsmb -U root cups_printer_1 cups_printer_2
где cups_printer_1 - имя вашего принтера
или
cupsaddsmb -U root -H localhost -a -v
для добавления всех принтеров.
Как выглядит успешное завершение этой программы я не знаю, на если
на экране бегут строчки,где в блоках меняется только
/var/spool/cups/tmp/470334f09f627, или есть сообщения об ошибке
(driver not installed, напр) то, судя по всему, Вам не повезло... Жмем
ctrl+C и готовимся к танцам.. С бубном...
Весь процесс состоит из 3 шагов, но для начала, находим на виндовой
машине файлы ps5ui.dll, pscript.hlp, pscript.ntf, pscript5.dll и
копируем их в /usr/local/share/cups/drivers. Все имена файлов должны
быть в НИЖНЕМ регистре.
1. Создаем необходимые папки и копирует туда файлы (одна длиная строка!)
smbclient -H //localhost/print$ -Uroot -c 'mkdir W32X86;put
/var/spool/cups/tmp/470334eed261d W32X86/hp2420_y3.ppd;put
/usr/local/share/cups/drivers/ps5ui.dll W32X86/ps5ui.dll;put
/usr/local/share/cups/drivers/pscript.hlp W32X86/pscript.hlp;put
/usr/local/share/cups/drivers/pscript.ntf W32X86/pscript.ntf;put
/usr/local/share/cups/drivers/pscript5.dll W32X86/pscript5.dll'
суть этой команды такова: заходим smbclient'ом на //localhost/print$
(это тоже шара,просто скрытая)
и выполняем команды начиная с mkdir W32X86.Основная проблема,которая
может возникнуть на этом шаге-запрет записи.Я поставил права доступа
777 на /usr/local/share/cups/drivers и заменил write list = root на
write list = root, guest, nobody в smb.conf
после успешного выполнения в /usr/local/share/cups/drivers должна
появиться папка W32X86.
и еще - снова одной строкой
smbclient //localhost/print$ -Uroot -c 'put
/usr/local/share/cups/drivers/cups6.ini W32X86/cups6.ini;put
/usr/local/share/cups/drivers/cupsps6.dll W32X86/cupsps6.dll;put
/usr/local/share/cups/drivers/cupsui6.dll W32X86/cupsui6.dll'
2. В smb.conf меняем
disable spoolss = Yes
на
disable spoolss = No
далее запускаем
cupsaddsmb -U root -H localhost -a -v
и ищем там строчку:
rpcclient localhost -N -A /var/spool/cups/tmp/47034d38731a2 -c 'adddriver [...]'
и запускаем ее как:
rpcclient localhost -Uroot -c 'adddriver [...]'
3. Теперь надо сказать самбе какой драйвер для какого принтера
rpcclient localhost -N -U'root%toor' -c 'setdriver printer_name driver_name'
Обычно printer_name и driver_name идентичны. Если получаем:
result was WERR_ACCESS_DENIED
то пробуем:
1) в секции [global] дописываем 'use client driver = no' - говорит
клиенту стягивать дрова на приттер с нашего cups-сервака
2)Меняем /etc/pam.d/login на стандартный и smb.conf - на
дефолтовый,при этом убираем из него все "лишнее",оставляя минимум.
После завершения установки дров все ставим на место и рестартим самбу.
ВСЕ!
После успешного завершения при подключении сетевого принтера дрова на
винду должны ставиться автоматически
Эта статья не претендует на подробное руководство по настройке
CUPS-SAMBA. Скорее, просто мой личный опыт работы.. Наверняка, есть
более простой и удобный способ настройки. Статья писалась уже после
настройки и запуска сервака, на память. Так что возможны неточности.
Если есть идеи или проблемы - пишите. Будем вместе разбираться :)