CUPS/Printer sharing (Русский)
Ссылки по теме
CUPS позволяет настроить возможность доступа к принтерам из различных систем. Далее будут приведены инструкции для типичных случаев.
Contents
Внутри систем GNU/Linux
В CUPS, с помощью веб-интерфейса, достаточно просто настроить сервер печати GNU/Linux на использование внутри системы GNU/Linux, хотя ручная настройка тоже возможна.
Использование веб-интерфейса
Для доступа к странице администрирования CUPS, откройте в браузере адрес: http://localhost:631.
В верхней части находится вкладка Administration - кликните по ней, нажмите на кнопку добавления принтера, при этом будут автоматически определены подключенные принтеры. Если этого не произойдет, отключите принтер и подключите его снова.
После создания принтера зайдите в раздел Server и установите флажок напротив "Share printers connected to this system". После клика по change settings, сервер будет перезапущен автоматически.
Для прямой правки файла cups.conf
выберите "Edit Configuration File". Это действие будет полезным для настройки доступа к серверу только отдельным пользователям или IP-адресам, примеры указаны ниже.
Ручная настройка
На сервере (тот, который управляет и подсоединён к принтеру) просто откройте файл /etc/cups/cupsd.conf
и разрешите доступ к серверу, изменив строчки с тэгом Location. Например:
<Location /> Order allow,deny Allow localhost Allow 192.168.0.* </Location>
Также убедитесь, что серверу для адресации доступен IP-адрес клиента. Добавьте следующие строки после "# Listen <serverip>:631" (192.168.0.100 - IP-адрес сервера, а не клиента):
Listen 192.168.0.101:631
Для отображения всех доступных принтеров локальной сети "Show shared printers on the local network", добавьте строку "BrowseAllow all":
Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL BrowseAllow all
После внесения всех изменений, перезапустите CUPS:
# /etc/rc.d/cupsd restart
На стороне клиента откройте (создайте, если отсутствует) файл /etc/cups/client.conf
и укажите в ServerName соответствующее имя сервера или его IP-адрес. Добавьте эту строку:
ServerName 192.168.0.100
Для отображения всех доступных принтеров локальной сети "Show shared printers on the local network", добавьте строку "BrowseAllow all"
Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL BrowseAllow all
Есть другие возможности для настройки, включая автоматическую, которые подробно описаны на http://localhost:631/help/network.html
После внесения всех изменений, перезапустите CUPS.
Using a CUPS 1.6.x client with a <= 1.5.x server
Начиная с CUPS версии 1.6, клиент по-умолчанию использует IPP 2.0. Если сервер использует CUPS <= 1.5 / IPP <= 1.1, клиент не понижает версию используемого протокола автоматически, и, таким образом, не может взаимодействовать с сервером. Обходной путь (недокументирован на 2013-05-07, но см. упомянут в этом багрепорте) добавить следующую строку в /etc/cups/client.conf
:
ServerName HOSTNAME-OR-IP-ADDRESS[:PORT]/version=1.1
Между GNU/Linux и Windows
Linux server - Windows client
Общий доступ с помощью IPP
В качестве предпочтительного метода, при подключении клиента Windows к серверу печати Linux, используется IPP. Это стандартный, основанный на HTTP, протокол принтера, который позволяет использовать преимущества переадресации портов, туннелирования и т.д. Конфигурация очень проста и, таким образом, в сравнении с использованием Samba, меньше подвержена ошибкам. ОС Windows имеет встроенную поддержку IPP только начиная с Windows 2000.
В предыдущем разделе описаны настройки сервера для возможности обзора.
На компьютере с Windows, перейдите к панели управления принтера и выберите 'Add a New Printer' ('Добавить новый принтер'). Далее, укажите URL. В качестве URL, тип и местоположение принтера: http://host_ip_address:631/printers/printer_name (где host_ip_address - IP-адрес сервера GNU/Linux, а printer_name - имя подключенного к нему принтрера).
Затем на компьютере с Windows установите родные драйвера принтера. Если на сервере CUPS используются собственные драйвера на принтер, то для клиента Windows можно выбрать generic postscript-принтер (например 'HP Color LaserJet 8500 PS' или 'Xerox DocuTech 135 PS2'). Для проверки правильности настроек - распечатайте пробную страницу.
Общий доступ с помощью Samba
Если версия ОС Windows ниже Windows 2000, или при использовании IPP возникают проблемы, можно настроить общий доступ с помощью Samba. Учитывайте, что при использовании Samba будет задействовано дополнительное программное обеспечение. Поэтому данный способ сложнее в настройке, также могут возникнуть дополнительные проблемы, связанные, в основном, с аутентификацией.
Для настройки Samba на сервере Linux, отредактируйте файл /etc/samba/smb.conf
, это даст возможность предоставить общий доступ к принтерам. Файл smb.conf
может содержать примерно следующее:
/etc/samba/smb.conf
[global] workgroup=Heroes server string=Arch Linux Print Server security=user [printers] comment=All Printers path=/var/spool/samba browseable=yes # to allow user 'guest account' to print. guest ok=no writable=no printable=yes create mode=0700 write list=@adm root yourusername
Этого должно быть достаточно для организации совместного доступа, но все-таки рекомендуется добавить для принтера отдельную запись:
/etc/samba/smb.conf
[ML1250] comment=Samsung ML-1250 Laser Printer printer=ml1250 path=/var/spool/samba printing=cups printable=yes printer admin=@admin root yourusername user client driver=yes # to allow user 'guest account' to print. guest ok=no writable=no write list=@adm root yourusername valid users=@adm root yourusername
Учтите, что при таких настройках, должна существовать учетная запись с правами доступа к принтеру. Для публичного принтера установите guest ok в yes, и удалите строку valid users. Для добавления учетных записей, создайте действующую учетную запись GNU/Linux, а затем установите на Samba-сервере пароль. Например:
# useradd yourusername # smbpasswd -a yourusername
Затем перезапустите демон Samba:
# /etc/rc.d/samba restart
Естественно, имеется множество дополнительных настроек сервера печати Samba, поэтому, для получения дополнительной информации, следует обратиться к справочной документации Samba и CUPS. Образцы и примеры можно посмотреть в файле smb.conf.example
.
Windows server - Linux client
Общий доступ с помощью LPD
Поскольку в Windows 7 имеется интегрированный LPD-сервер, то, возможно, будет намного проще использовать именно его, поскольку не придется для клиента устанавливать Samba, а на сервере - можно будет обойтись без сложных настроек.
Затем, принтер можно будет добавить в CUPS просто выбрав протокол LPD. Адресс принтера будет выглядеть следующим образом:
# lpd://windowspc/printersharename
Перед добавлением вам, скорее всего, понадобиться установить для своей модели принтера соответствующий драйвер. Драйвера Generic PostScript или RAW тоже должны работать.
Общий доступ с помощью IPP
Как и в предыдущем случае, для организации общего доступа к принтерам протокол IPP является предпочтительным. Но, так как потребуется приложить немного больше усилий в сравнении с использованием Samba, метод создания IPP-Сервера в Windows может оказаться более сложным. Обычно выбирают программное обеспечение от Microsoft's Internet Information Services (IIS).
Общий доступ с помощью Samba
Гораздо проще использовать стандартные возможности Windows по предоставлению общего доступа к принтерам с помощью Samba. Ручная настройка практически не требуется и все можно выполнить через CUPS Backend. Однако, как было замечено выше, в Windows могут возникнуть проблемы с аутентификацией и ограничением доступа.
На стороне сервера необходимо разрешить общий доступ к принтеру и убедится, что клиентские машины имеют к этому принтеру доступ.
В следующем разделе будут описаны настройки клиента с обоими (cupsd и smbd) запущенными демонами.
Использование веб-интерфейса
Backend Samba CUPS должен быть запущен по умолчанию, но если этого не происходит - введите следующую команду и перезапустите CUPS.
# ln -s $(which smbspool) /usr/lib/cups/backend/smb
Затем, просто зайдите в веб-интерфейс CUPS и добавьте новый принтер. В качестве устройства выберите "Windows Printer via SAMBA".
Для местоположения устройства, выберите:
smb://username:password@hostname/имя_принтера
Или, если пароля нет:
smb://username@hostname/имя_принтера
Убедитесь, что пользователь действительно имеет доступ к принтеру на компьютере Windows, и выберите соответствующие драйверы. Если компьютер находится в домене, убедитесь, что в имени пользователя присутствует домен:
smb://username:password@domain/hostname/имя_принтера
Если в сети доступно много принтеров, то можно выбрать предпочитаемый. Для этого войдите в веб-интерфейс, перейдите на вкладку Принтеры, выберите нужный принтер и, в выпадающем списке, установите 'Set as default' ('Использовать по умолчанию').
Ручная настройка
При ручной настройке: остановите демон CUPS и добавьте свой принтер в /etc/cups/printers.conf
, который, к примеру, может выглядеть так:
/etc/cups/printers.conf
<DefaultPrinter MyPrinter> AuthInfoRequired username,password Info My printer via SAMBA Location In my Office MakeModel Samsung ML-1250 - CUPS+Gutenprint v5.2.7 # <= для получения списка доступных моделей запустить 'lpinfo -m' DeviceURI smb://username:password@hostname/printer_name # <= URI сервера, выбирать согласно описания в предыдущем разделе State Idle Type 4 Accepting Yes Shared No JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 AllowUser yourusername # <= не забудьте изменить это OpPolicy default ErrorPolicy stop-printer </Printer>
Перезапустите демон CUPS и распечатайте тестовую страницу.
Для установки предпочтительного принтера используйте следующую команду:
# lpoptions -d имя_принтера_используемого_по_умолчанию
Устранение неполадок
Если возникают какие-либо проблемы, первое, что нужно сделать - это включить отладочную информацию, для этого в /etc/cups/cupsd.conf
установите:
LogLevel debug
Затем перезапустите демон CUPS и в файле /var/log/cups/error_log
проверьте сообщения об ошибках. Удобнее просматривать так:
# tail -f /var/log/cups/error_log
будут выведены сообщения о появившихся ошибках.
Другие операционные системы
Более подробную информацию о взаимодействии CUPS с другими системами печати можно найти в руководстве CUPS, например, на http://localhost:631/sam.html#PRINTING_OTHER