CUPS/Printer sharing (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: rc.d references. Needs update, see Systemd (Русский). (Обсудить)

Ссылки по теме

CUPS позволяет настроить возможность доступа к принтерам из различных систем. Далее будут приведены инструкции для типичных случаев.

Внутри систем 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.

Примечание: При добавлении принтера с клиентского компьютера, если используется Internet Printing Protocol (IPP), в качестве URI укажите ipp://192.168.0.101:631/printers/<имя_нужного_принтера>

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).

Примечание: Этот раздел является неполным. Более подробное описание по настройке ISS для Windows XP и Windows 2000, можно найти на немецком (к сожалению) [1]

Общий доступ с помощью 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