[CUPS](/index.php/CUPS "CUPS") позволяет настроить возможность доступа к принтерам из различных систем. Далее будут приведены инструкции для типичных случаев.

## Contents

*   [1 Внутри систем GNU/Linux](#.D0.92.D0.BD.D1.83.D1.82.D1.80.D0.B8_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC_GNU.2FLinux)
    *   [1.1 Использование веб-интерфейса](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B2.D0.B5.D0.B1-.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B0)
    *   [1.2 Ручная настройка](#.D0.A0.D1.83.D1.87.D0.BD.D0.B0.D1.8F_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
        *   [1.2.1 Using a CUPS 1.6.x client with a <= 1.5.x server](#Using_a_CUPS_1.6.x_client_with_a_.3C.3D_1.5.x_server)
*   [2 Между GNU/Linux и Windows](#.D0.9C.D0.B5.D0.B6.D0.B4.D1.83_GNU.2FLinux_.D0.B8_Windows)
    *   [2.1 Linux server - Windows client](#Linux_server_-_Windows_client)
        *   [2.1.1 Общий доступ с помощью IPP](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B9_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_IPP)
        *   [2.1.2 Общий доступ с помощью Samba](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B9_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_Samba)
    *   [2.2 Windows server - Linux client](#Windows_server_-_Linux_client)
        *   [2.2.1 Общий доступ с помощью LPD](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B9_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_LPD)
        *   [2.2.2 Общий доступ с помощью IPP](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B9_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_IPP_2)
        *   [2.2.3 Общий доступ с помощью Samba](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B9_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_Samba_2)
            *   [2.2.3.1 Использование веб-интерфейса](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B2.D0.B5.D0.B1-.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B0_2)
            *   [2.2.3.2 Ручная настройка](#.D0.A0.D1.83.D1.87.D0.BD.D0.B0.D1.8F_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_2)
    *   [2.3 Устранение неполадок](#.D0.A3.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.B5.D0.BF.D0.BE.D0.BB.D0.B0.D0.B4.D0.BE.D0.BA)
*   [3 Другие операционные системы](#.D0.94.D1.80.D1.83.D0.B3.D0.B8.D0.B5_.D0.BE.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B)

## Внутри систем GNU/Linux

В CUPS, с помощью веб-интерфейса, достаточно просто настроить сервер печати GNU/Linux на использование внутри системы GNU/Linux, хотя ручная настройка тоже возможна.

### Использование веб-интерфейса

Для доступа к странице администрирования CUPS, откройте в браузере адрес: [http://localhost:631](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](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, но см. [упомянут в этом багрепорте](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704238)) добавить следующую строку в `/etc/cups/client.conf`:

```
ServerName HOSTNAME-OR-IP-ADDRESS[:PORT]/version=1.1

```

## Между GNU/Linux и Windows

### Linux server - Windows client

#### Общий доступ с помощью IPP

В качестве **предпочтительного метода**, при подключении клиента Windows к серверу печати Linux, используется [IPP](https://de.wikipedia.org/wiki/Internet_Printing_Protocol). Это стандартный, основанный на HTTP, протокол принтера, который позволяет использовать преимущества переадресации портов, туннелирования и т.д. Конфигурация **очень проста** и, таким образом, в сравнении с использованием Samba, меньше подвержена ошибкам. ОС Windows имеет встроенную поддержку IPP только **начиная с Windows 2000**.

В предыдущем разделе описаны настройки сервера для возможности обзора.

На компьютере с Windows, перейдите к панели управления принтера и выберите 'Add a New Printer' ('Добавить новый принтер'). Далее, укажите URL. В качестве URL, тип и местоположение принтера: [http://host_ip_address:631/printers/printer_name](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]](http://www.heise.de/netze/artikel/Ueberall-drucken-221652.html)

#### Общий доступ с помощью 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](http://localhost:631/sam.html#PRINTING_OTHER)