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

< CUPS

Эта страница нуждается в сопроводителе

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

Информация в этой статье или разделе устарела

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

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

- Samba (Русский)
- CUPS (Русский)

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

Categories:

- Printers (Русский)
- Русский