Принт сервер на linux для windows сетей

Contents

Contents

  1. Overview
  2. Background
  3. Ubuntu print server

    1. Ubuntu print server compatible with Windows (Samba)
  4. Printing from Ubuntu
  5. Printing from Windows
  6. Troubleshooting

Overview

Ubuntu supports printer sharing over networks, so you can print from your Ubuntu machine, your Windows machine, etc, to another Ubuntu or Windows machine that has a printer attached (ie a «Ubuntu print server» or «Windows print server»).

Background

printingScheme.png

Ubuntu uses the Common UNIX Printing System («CUPS») to handle printing. CUPS uses the Internet Printing Protocol («IPP») as the basis for managing print jobs and queues. Other protocols are also supported (LPD, SMB, AppSocket a.k.a. JetDirect), some with reduced functionality.

CUPS printer configuration and management is handled by the Printer Admin utility launched from the Gnome menu — System -> Administration -> Printing (If the menu item does not exist you need to add the command system-config-printer to the menu). Also IPP provides web services so after you have configured CUPS appropriately, you can access the printers and jobs via your web browser.

When a locally attached printer is defined, eg using the Printer Admin utility, that printer is automatically published from this «print server» host to the network, depending on the server directives in the CUPS configuration file. A remote Ubuntu «client» host can then be able to see and use the printer attached to the server. The network printer automatically appears in the client’s Printer Admin utility. It simply pops up if CUPS is up and configured correctly and disappears if you stop CUPS at either the Print Server or your local machine.

Ubuntu print server

The Print Server is the Ubuntu computer that is directly connected to the printers.

  1. On the server machine (the one the printer is attached to), open System -> Administration -> Printing (If the menu item does not exist you need to add system-config-printer to the menu). . This will open the Printer Configuration window. system-config-printer.png

  2. Select Server in the menu bar, and then Settings. This will open the Basic Server Settings window.

  3. Check the second box:

    Publish shared printers connected to this server If this computer acts as both a Print Server and a client (it does need access to a printer connected to another computer), select also the first box, «Show printers shared by other systems».Server-setting.png

  4. OK

  5. Right click the printer and check the Shared option, if not checked yet

  6. Check that users that you want to be able to use the printer are not excluded. See Properties>Access Control. The default settings may be set to «deny printing for everyone except …»

inkjet_settings1.png.

But you might want to «allow printing for everyone».

access_control_allow_everyone.png

Ubuntu print server compatible with Windows (Samba)

If your Ubuntu print server shall be able to work also with Windows clients, you must first make sure that the SAMBA package is installed (e.g. using Synaptic package manager). Then, do a little configuration change to SAMBA. In brief, you must uncomment the following lines in /etc/samba/smb.conf — open terminal and run:

gksudo gedit /etc/samba/smb.conf

In the [printers] section:

   browseable = yes
   guest ok = yes

When done, restart Samba:

sudo service smbd restart
sudo service nmbd restart

There is a dedicated page in the official documentation which gives more details.

Also, one would want to allow the following ports through a firewall (ufw for example) via:

sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp

For more on this, please see here.

Printing from Ubuntu

Now let’s configure the client (the Ubuntu computer from where you want to print):

  1. System -> Administration -> Printing

  2. Add — Network printer

    • Click Find network printer

      • Specify the host IP address or name. (It may also work without, try) (IP address worked for me, hostname did not.)
      • Click Find

    • Printers on the target machine should be found, no matter whether they are connected using CUPS or SAMBA.
      • BUT if both protocols are available, e.g. because you have shared your printer on a Linux box both using CUPS and Samba, prefer CUPS (ipp://) over Samba (smb://), because you won’t be prompted to install a driver in general.

      findNetworkPrinterScreenshot.png

  3. You **may** be prompted to select a driver. Select your model in the list.
    • (to be done) What to do if driver is not in the list

Printing from Windows

Once your Ubuntu print server is set up using SAMBA as described above, you can add the printer in Windows as follows:

  1. Start
  2. Devices and Printers
  3. Add a printer
  4. Add a network, wireless or Bluetooth printer
  5. Click The printer that I want isn’t listed (unless a miracle happens)

  6. Enter the address manually (\servernameMyPrinter). Be sure to respect uppercase/lowercase.

Step 1

Step 2

Note that searching or browsing for printers in Windows is notoriously unreliable, as it heavily depends on the network setup. Therefore, it is recommended to enter the printer address manually as shown.

Windows will then probably complain about a missing driver, and offer you to choose one manually. This is the easiest option, so select your printer manufacturer and model from the dialog box. (Alternatively, the Samba configuration could be improved so that the driver would be automatically downloaded.) If your printer model isn’t listed, you may try the «Generic» printer.

Tips: You can avoid intermediate SAMBA buffer using direct connection to CUPS/IPP Ubuntu server from Windows workstation. You should manually specify «http://hostname:631/printers/MyPrinter» IPP URL and select printer driver.

Windows print dialog window (Ctrl-P) can take long time (about 30 seconds) to appear. You can reduce the connection time to CUPS IPP printer by disabling option Automatically detect settings in «Control Panel/Internet Explorer -> Internet Options -> Connections -> LAN settings».

Troubleshooting

1. Bypassing firewall.

If there is an firewall either on print server or the client side, there might appear a communications problem. Use this command to update the firewall to get through.

iptables -A INPUT -p tcp —dport 631 -j ACCEPT

  • This rule is used for IPP only. If you’re using other protocol, such as SAMBA, you have to adapt.

    You might need to use this rule on both sides (server & client) if the firewall is being used on both of them. To apply this rule after each start/restart of the system, use /etc/rc.local .

2. Networking issues.

Be careful about using different network masks/subnets on your network where you would like to share the printer.

If the subnets differs, e.g. on the print server there would be a /24 (255.255.255.0) netwok mask configured, and e.g. on the clients there would be a /16 (255.255.0.0) network mask — perhaps provided by the DHCP server, this might cause a problem that clients won’t be able to detect any shared printer on the server, even if other communications between print server and clients would be possible (e.g. ICMP, ssh) and successful.

If such situation happens, you have to unify the network masks/subnets on all of your stations, e.g. use /24 (255.255.255.

3. IP address

Generally, it is a good idea to assign your print server a static IP address. Instead, using its host name is also possible, but functionality will then depend on proper configuration of your home router, name service, etc.

4. IPv6 Windows (since XP) can print over IPv6 to Ubuntu Linux (tested between Windows XP SP3 and Ubuntu Linux 8.10). Make sure both the Windows and Ubuntu have IPv6 connectivity. You should tick «Allow Printing from the Internet» on the Ubuntu machine. Then use the URL (which resolves to IPv6) of the Ubuntu machine as described above.

5. Mac OS X 10.5.

Will not find your network printer unless you go to the terminal and run cupsctl BrowseRemoteProtocols=cups (see the CUPS 1.4 documentation at http://www.cups.org/documentation.php/doc-1.4/sharing.html). After doing so, you may need to set the network printer as your default printer for it to show up in program «print» menus.


CategoryNetworking

Состояние перевода: На этой странице представлен перевод статьи CUPS/Printer sharing. Дата последней синхронизации: 13 июля 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Эта статья содержит инструкции по совместному использованию принтеров между системами, будь то между двумя системами GNU/Linux или между системой GNU/Linux и Microsoft Windows.

Создание класса для нескольких принтеров

‘Класс’ в CUPS имеет значение группы. Когда у вас есть несколько принтеров, подключенных к одному серверу CUPS, вы можете захотеть их сбалансировать (задания на печать автоматически помещаются в очередь для разных принтеров). Это также дает преимущество в том, что пользователи на удаленной машине работают с одним ‘принтером’. Что особенно полезно, когда один принтер вышел из строя, вы просто исключаете его из класса, но для конечных пользователей ничего не изменится — печать заданий, поставленных на другой принтер сервером CUPS, продолжает обрабатываться. Создание и управление классами можно выполнять из веб-интерфейса CUPS.

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

Сервер можно настраивать с помощью веб-интерфейса или путем ручного редактирования файла /etc/cups/cupsd.conf.
Смотрите статью CUPS (Русский) для настройки клиента.

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

Для доступа к странице администрирования CUPS, откройте в браузере адрес: http://localhost:631.

В верхней части находится вкладка Администрирование — кликните по ней, нажмите на кнопку добавления принтера, при этом будут автоматически определены подключенные принтеры. Если этого не произойдет, отключите принтер и подключите его снова.

После создания принтера зайдите в раздел Сервер и установите флажок напротив «Разрешить совместный доступ к принтерам, подключенным к этой системе». После клика по Сохранить, сервер будет перезапущен автоматически.

Для более детальной настройки вы можете отредактировать файл /etc/cups/cupsd.conf, нажав кнопку «Редактировать конфигурационный файл». Для получения дополнительной информации смотрите #Ручная настройка.

Ручная настройка

На сервере (тот, который управляет и подсоединён к принтеру) разрешите доступ к серверу, изменив строчки с тэгом Location. Например:

/etc/cups/cupsd.conf
<Location />
    Order allow,deny
    Allow localhost
    Allow 192.168.0.*
</Location>
...

Также убедитесь, что серверу для адресации доступен IP-адрес клиента:

/etc/cups/cupsd.conf
...
Listen <hostname>:631
...

Есть другие возможности для настройки, включая автоматические способы, которые детально описаны в Использование сетевых принтеров и cupsd.conf(5).

После внесения каких-либо изменений перезапустите службу org.cups.cupsd.

Если CUPS запускается с помощью активации сокета, создайте drop-in сниппет для org.cups.cupsd.socket, чтобы активация сокета работала и с удаленными подключениями:

/etc/systemd/system/org.cups.cupsd.socket.d/override.conf
[Socket]
ListenStream=631

Включение обнаружения

Чтобы включить отображение (обнаружение) общего принтера, необходимо установить Avahi и запустить его на сервере.
Если вам не нужно обнаружения принтера, тогда Avahi не требуется ни на сервере, ни на клиенте.

Чтобы включить отображение, выберите Показывать общие принтеры, подключенные к этой системе в веб-интерфейсе, или вручную включите Browsing и введите BrowseAddress:

/etc/cups/cupsd.conf
...
Browsing On
BrowseAddress 192.168.0.*:631
...

затем перезапустите службу org.cups.cupsd.

Обратите внимание, что «обнаружение» на сервере — другая вещь по сравнению с «обнаружением» на удаленном сетевом хосте. На сервере печати cupsd предоставляет поддержку протокола DNS-SD, который транслируется avahi-daemon. Служба cups-browsed не нужна на сервере печати за исключением, если будет транслироваться старый протокол CUPS’а, или если сервер печати также будет «обнаруживать» другие сетевые принтеры. На удаленном сетевом хосте служба cups-browsed требуется для «обнаружения» сетевой трансляции служб печати, а также запущенная служба cups-browsed будет автоматически запускать cupsd.

Служба org.cups.cupsd.service запускается автоматически при подключении USB-принтера, но это может быть не так для других типов подключений. Если cupsd не запущен, тогда avahi-daemon не транслирует службу печати, поэтому в этом
случае service-файл юнита systemd должен быть изменен при запуске во время загрузки, а затем служба снова должна
быть «включена/установлена» с новой зависимостью. Чтобы сделать это, отредактируйте раздел файла службы [Install], добавив зависимость WantedBy=default.target, а затем включите и запустите службу org.cups.cupsd.service.

Между GNU/Linux и Windows

Сервер Linux — клиент Windows

Общий доступ для клиентов Windows может быть достигнут, используя #Общий доступ с помощью Bonjour, #Общий доступ с помощью IPP или #Общий доступ с помощью Samba.

После настройки сервера установите драйвера для принтера на компьютере под управлением Windows. Если принтер сервера CUPS настроен на использование собственных драйверов вместо raw (raw — когда cups просто передает на принтер полученное задание для печати без какой-либо обработки), вы можете просто выбрать общий драйвер postscript для клиента Windows (например, ‘HP Color LaserJet 8500 PS’ либо ‘Xerox DocuTech 135 PS2’, либо ‘Microsoft PS Class driver’).

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

Службы печати Bonjour позволяет клиентам Windows легко подключаться к серверам печати Unix с включенным обнаружением.

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

Internet Printing Protocol является широко поддерживаемым стандартом среди операционных систем, который также прост в настройке. Он имеет функцию переадресации портов, туннелирования и т.д.

Примечание: Возможно, вам придется добавить Internet Printing Client в Windows (Панель управления > Программы > Включение или отключение компонентов Windows > Службы печати и документов)

Сначала, настройте сервер как описано в разделе #Внутри систем GNU/Linux.

На компьютере с Windows, перейдите в Панель управления > Просмотр устройств и принтеров и выберите в контекстном меню ‘Добавить принтер’. Если у вас Windows 10, нажмите кнопку «Принтер, который я хочу, не указан». Далее, выберите ‘Выбрать общий принтер по имени’ и тип расположения принтера:

http://hostname:631/printers/printer_name

(Где hostname — это имя хоста или IP-адрес сервера GNU/Linux, а printer_name — это имя подключенного принтера. Вы также можете использовать полное доменное имя сервера, если оно есть, но вам может потребоваться установить ServerAlias my_fully_qualified_domain_name в /etc/cups/cupsd.conf, чтобы это заработало).

Примечание:

  • Диалоговое окно ‘Добавить принтер’ в Windows предлагает формат http://computername/printers/printername/.printer, который Windows не примет. Вместо этого используйте синтаксис, предложенный выше.
  • Если вы используете прокси, тщательно проверяйте все использованные прокси исключения. Неправильная настройка здесь может привести к невозможности добавления принтера до следующей перезагрузки, даже если вы отключите прокси-сервер после этого (по крайней мере, в Windows 7).

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

Samba — реализация протокола обмена файлами Windows и принтерами, даже самых старых.

Обратите внимание, что общий доступ с помощью 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
    # разрешите это, чтобы пользователь 'гостевой учетной записи' мог пользоваться печатью.
    guest ok=no
    writable=no
    printable=yes
    create mode=0700
    write list=@adm root ваше_имя_пользователя

Этого должно быть достаточно для организации совместного доступа, но все-таки рекомендуется добавить для принтера отдельную запись:

/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 ваше_имя_пользователя
    user client driver=yes
    # разрешите это, чтобы пользователь 'гостевой учетной записи' мог пользоваться печатью.
    guest ok=no
    writable=no
    write list=@adm root ваше_имя_пользователя
    valid users=@adm root ваше_имя_пользователя

Учтите, что при таких настройках, должна существовать учетная запись с правами доступа к принтеру. Для публичного принтера установите guest ok в yes, и удалите строку valid users. Для добавления учетных записей, создайте действующую учетную запись GNU/Linux, а затем установите на Samba-сервере пароль. Например:

# useradd ваше_имя_пользователя
# smbpasswd -a ваше_имя_пользователя

Затем перезапустите демон Samba:

Естественно, имеется множество дополнительных настроек сервера печати Samba, поэтому, для получения дополнительной информации, следует обратиться к справочной документации Samba и CUPS. Образцы и примеры можно посмотреть в файле smb.conf.example.

Сервер Windows — клиент Linux

Важно: Любые особые символы в URI принтера должны быть соответствующим образом процитированы, или, если в имени вашего принтера Windows или в пароле есть пробелы, тогда CUPS выдаст ошибку «lpadmin: Bad device-uri».

Например:

smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6

станет:

smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6

Такая строка может быть получена в результате выполнения следующей команды:

$ python -c 'from urllib.parse import quote; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))'

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

В Windows 7, 8 и 10 имеется интегрированный LPD-сервер, то, возможно, будет намного проще использовать именно его, поскольку не придется для клиента устанавливать Samba, а на сервере — можно будет обойтись без сложных настроек. Это можно включить в разделе Службы печати и документов, находящего в Панель управления -> Программы -> Включение или отключение компонентов Windows. В свойствах принтера должен быть включен общий доступ. Используйте общее имя без особых символов, таких как пробел, запятые и др.

Затем, принтер можно будет добавить в CUPS просто выбрав протокол LPD. Адресс принтера будет выглядеть следующим образом:

# lpd://windowspc/имя_общего_принтера

Перед добавлением вам, скорее всего, понадобиться установить для своей модели принтера соответствующий драйвер. Драйвера Generic PostScript или RAW тоже должны работать.

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

Как и в предыдущем случае, для организации общего доступа к принтерам протокол IPP является предпочтительным, но он работает только с версиями Windows Server. Версия Windows Server (например Server 2016) включаюет поддержку IPP (функции «Службы печати и документов», служба «Интернет-печати»). Клиентские версии (например, Windows 10) включают поддержку только клиента IPP и не поддерживают совместный доступ через IPP.

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

Гораздо проще использовать стандартные возможности Windows по предоставлению общего доступа к принтерам с помощью Samba. Ручная настройка практически не требуется и все можно выполнить через бэкенд CUPS. Однако, как было замечено выше, в Windows могут возникнуть проблемы с аутентификацией и ограничением доступа.

На стороне сервера необходимо разрешить общий доступ к принтеру и убедится, что клиентские машины имеют к этому принтеру доступ.

В следующем разделе будут описаны настройки клиента с обоими (cupsd и smbd) запущенными демонами.

Настройка через веб-интерфейс

Samba CUPS бэк-енд должен быть включен по умолчанию, но если этого не происходит — введите следующую команду и перезапустите CUPS.

# ln -s $(which smbspool) /usr/lib/cups/backend/smb

Затем, просто зайдите в веб-интерфейс CUPS и добавьте новый принтер. В качестве устройства выберите «Windows Printer via SAMBA».

Для местоположения устройства, выберите:

smb://имя_пользователя:пароль@имя_хоста/имя_принтера

Или, если пароля нет:

smb://имя_пользователя@имя_хоста/имя_принтера

Убедитесь, что пользователь действительно имеет доступ к принтеру на компьютере Windows, и выберите соответствующие драйверы. Если компьютер находится в домене, убедитесь, что в имени пользователя присутствует домен:

smb://имя_пользователя:пароль@домен/имя_хоста/имя_принтера
Ручная настройка

При ручной настройке: остановите демон 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 и распечатайте тестовую страницу.

Поиск URI для серверов печати Windows

Иногда имя хоста Windows (усеченно) меньше предстоящего точного URI устройства (расположение устройства) (Sometimes Windows is a little less than forthcoming about exact device URIs (device locations)). Если возникли проблемы с указанием правильного расположения устройства в CUPS, выполните следующую команду, чтобы вывести список всех общих ресурсов, доступных для определенного имени пользователя windows:

$ smbtree -U имя_пользователя_windows

В этом списке будет отображаться только общие URI для определенного имени пользователя Windows в локальной подсети локальной сети, если Samba настроен и работает правильно. Команда должна вернуть что-то вроде этого:

 WORKGROUP
	\REGULATOR-PC   		
		\REGULATOR-PCZ              	
		\REGULATOR-PCPublic         	
		\REGULATOR-PCprint$         	Printer Drivers
		\REGULATOR-PCG              	
		\REGULATOR-PCEPSON Stylus CX8400 Series	EPSON Stylus CX8400 Series

Здесь требуется первая часть последней строки — ресурс, соответствующий описанию принтера. Поэтому для печати на принтер EPSON Stylus введите:

smb://имя_пользователя:пароль@REGULATOR-PC/EPSON%20Stylus%20CX8400%20Series

как URI в CUPS.

Удаленное управление

Однажды сервер настроенный, как описано в #Внутри систем GNU/Linux, может также быть настроенным так, чтобы им можно было управлять удаленно. Добавьте разрешенные хосты в блок <Location /admin> в /etc/cups/cupsd.conf, используя тот же синтаксис, что и в #Ручная настройка. Обратите внимание, что доступны три уровня доступа:

<Location />           #доступ к серверу
<Location /admin>	#доступ к страницам администратора
<Location /admin/conf>	#доступ к файлам конфигурации

Чтобы дать удаленным хостам доступ к одному из этих уровней, добавьте оператор Allow в этот уровень. Оператор Allow может принимать одну или несколько форм, перечисленных ниже:

Allow from all
Allow from host.domain.com
Allow from *.domain.com
Allow from ip-address
Allow from ip-address/netmask
Allow from @LOCAL

Отрицательный оператор также может быть использован. Например, чтобы предоставить полный доступ ко всем хостам на локальных сетевых интерфейсах, отредактируйте /etc/cups/cupsd.conf:

# Ограничить доступ к серверу...
# По умолчанию возможны только локальные подключения
<Location />
   Order allow,deny
   Allow from @LOCAL
</Location>

# Ограничить доступ к страницам администратора...
<Location /admin>
   Order allow,deny
   Allow from @LOCAL
</Location>

# Ограничить доступ к файлам конфигурации...
<Location /admin/conf>
   AuthType Basic
   Require user @SYSTEM
   Order allow,deny
   Allow from @LOCAL
</Location>

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Вам также может потребоваться добавить:

DefaultEncryption Never

Это должно помочь избежать ошибки: 426 — Upgrade Required when using the CUPS web interface from a remote machine.

Kerberos

Kerberos может использоваться для аутентификации пользователей, обращающихся к удаленному серверу CUPS. Это предполагает, что на вашем компьютере есть keytab, и ему понадобится билет для «HTTP». Вместо этого http://localhost:631 вы должны использовать https://host.example.co.uk:631 т.к. требуется шифрование для auth (следовательно, https), и требуется полное имя хоста, чтобы Kerberos/Negotiate могли работать. Кроме того, сервер должен быть настроен в /etc/cups/cupsd.conf, чтобы использовать DefaultAuthType Negotiate.

Если вы используете поддержку NSS в Samba winbind, вы можете добавить имя группы AD в /etc/cups/cups-files.conf — в следующем примере sysadmin может быть группой AD:

SystemGroup sys root sysadmin

Решение проблем

Общие советы по устранению неполадок смотрите в CUPS/Решение проблем.

Не удается отправить на печать из приложений GTK

Если ты получил сообщение getting printer information failed (ошибка получения информации о принтере), когда пытался отправить на печать из приложения GTK, тогда добавь эту строку в свой /etc/hosts:

 # serverip 	some.name.org 	ServersHostname

Ошибки разрешений в Windows

Некоторые пользователи исправили ошибки ‘NT_STATUS_ACCESS_DENIED’ (Windows клиенты), используя несколько иной синтаксис:

smb://рабочая_группа/имя_пользователя:пароль@имя_хоста/имя_принтера

Другие операционные системы

Более подробную информацию о взаимодействии CUPS с другими системами печати можно найти в руководстве CUPS, например, на http://localhost:631/help/network.html

Настройка с нуля принтсервера CUPS с доменной авторизацией и без нее в сети с разными ОС +20

Из песочницы, Системное администрирование, *nix, Настройка Linux


Рекомендация: подборка платных и бесплатных курсов Smm — https://katalog-kursov.ru/

Итак. Предположительно, сервис печати CUPS — это мощное решение, позволяющее организовать централизованное управление принтерами в компании. Так оно и есть, но в процессе настройки потребуется провести некоторое время в поисках решения в Google множества мелких неочевидных проблем, особенно, если ваша необходимость выходит за рамки стандартных мануалов по настройке.

В статье будет описана установка принтсервера CUPS на Ubuntu Server в сети с работающим доменом Active Directory, хотя его наличие совершенно не обязательно и инструкции по настройке взаимодействию с ним можно будет смело пропустить, его настройка, а также настройка клиентских машин Linux и Windows для взаимодействия с данным принт-сервером.

В инструкции домен будет именоваться example.com, сам принтсервер — cupsserver (cupsserver.example.com) с IP адресом 10.10.100.50, а клиентские машины linux1, linux2, linux3 и т.д для клиентских машин Linux и windows1, windows2, windows3 и т.д. для клиентских машин Windows соответственно.

Настройка принтсервера

В первую очередь мы настроим принтсервер, а точнее, настроим административный доступ на него, затем настроим печать на него, а затем опишем настройку клиентских машин.

Заходим на принтсервер любым удобным способом и обновим на нем пакеты:

 root@cupsserver:~# apt update && apt uprgrade -y 

Далее проверим, установлен ли CUPS на сервере:

root@cupsserver:~# which cupsd 

Если вывод выглядит как то так:

 /usr/bin/cupsd 

то CUPS установлен, если вывода нет — устанавливаем CUPS:

 root@cupsserver:~# apt install cups -y 

Теперь настроим административный доступ к веб-интерфейсу CUPS. Все файлы конфигурации находятся по пути /etc/cups/. Для начала, на всякий случай сделаем резервные копии основных файлов конфигурации CUPS:

root@cupsserver:~# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
root@cupsserver:~# cp /etc/cups/cups-files.conf /etc/cups/cups-files.conf.original 
root@cupsserver:~# cp /etc/cups/cups-browsed.conf /etc/cups/cups-browsed.conf.original

Впрочем, если вы этого не сделали — не беда, образцы данных файлов по умолчанию лежат по пути /usr/share/cups. Также нужно упомянуть, что вы можете проверить любые добавленные опции в файлы конфигурации CUPS с помощью команды:

root@cupsserver:~# cupsd -t 

Если вы что-то напутали, опечатались или использовали опцию, которая уже не поддерживается CUPS’ом, то вывод команды отразит данные ошибки.

Но приступим наконец к настройке. После любых изменений файлов в папке /etc/cups/ для получения эффекта необходимо перезапускать сервис CUPS:

root@cupsserver:~# service cups restart
или
root@cupsserver:~# systemctl restart cups
или
root@cupsserver:~# /etc/init.d/cups restart
    

А если вы отредактировали файл /etc/cups/cups-browsed.conf, то за него отвечает отдельный сервис cups-browsed, который тоже нужно перезапустить:

root@cupsserver:~# service cups-browsed restart
или
root@cupsserver:~# systemctl restart cups-browsed
или
root@cupsserver:~# /etc/init.d/cups-browsed restart
    

Выполним команду

root@cupsserver:~# nano /etc/cups/cupsd.conf 
    

Первой незакомментированной опцией является

LogLevel warn 
    

Она определяет минимальную информативность логов CUPS. Лог-файлы CUPS находятся по пути /var/log/cups/. На время установки, настройки и отладки принтсервера будет разумным перевести логгирование в debug-режим. Для этого изменим warn на debug2:

LogLevel debug2 
    

По умолчанию CUPS слушает входящие подключения только от localhost, то бишь на loopback интерфейсе. Чтобы убедится в этом, можете выполнить команду

root@cupsserver:~# netstat -plutn 
    

Одна из строк будет выглядеть приблизительно так:

tcp        0      0 127.0.0.1:631      0.0.0.0:*     LISTEN      737/cupsd 
    

Дальнейшие действия зависят от степени вашей паранойи. Вы можете добавить в блоке, который условно начинается с комментария #Only listen for connections from the local machine несколько строк с указанием IP адресов или подсетей, откуда CUPS’у будет позволено слушать подключения.

# Only listen for connections from the local machine.
Listen localhost:631
Listen /run/cups/cups.sock
#Слушать подключения с определенного IP адреса
Listen 10.10.100.67:631
#Слушать подключения с подсети бухгалтерии
Listen 172.16.0.0:631
    

Либо же вы можете разрешить CUPS’у слушать подключения со всех адресов

# Only listen for connections from the local machine.
Listen /run/cups/cups.sock
Port 631
    

Следующий момент настройки — это обнаружение сетевых и расшаренных принтеров.

# Show shared printers on the local network.
Browsing Off
BrowseLocalProtocols dnssd
    

На мой взгляд эта опция так и должна остаться выключенной, так как она определяет, будет ли рассылаться широковещательная информация по сети о подключенных к принтсерверу принтерах. А они ведь будут подключены к ней все. И соответственно у всех клиентских машин будут отображаться сразу все принтера. Наш принтсервер должен искать и обнаруживать все принтера в сети, но не рассылать их бездумно по всей сети.

Далее идут настройки аутентификации

# Default authentication type, when authentication is required...
DefaultAuthType Basic
    

Определяет права доступа к веб-интерфейсу CUPS, а также к его административной части. Чтобы пользователь user имел право на администрирование CUPS, его нужно добавить в системную группу lpadmin:

root@cupsserver:~# usermod -a -G lpadmin user
    

Вообще, группы, которым позволен административный доступ к CUPS, определяются в файле конфигурации cups-files.conf в блоке

# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin

Если вы хотите добавить некой группе пользователей Linux права на администрирование принтсервера, например printadmins, то просто добавьте их через пробел к lpadmin. Если группа доменная, то это немного сложнее и будет описано позже.

Теперь перейдем к блоку <Location />:

# Restrict access to the server...
<Location />
  Order allow,deny
  
</Location>

Order allow,deny означает, что запрещены подключения отовсюду, если специально не указано разрешение. То есть нужно добавлять IP-адреса, подсети, хосты или хосты по маске (*.example.com) в виде «Allow from [разрешенный адрес]«:

# Restrict access to the server...
<Location />
  Order allow,deny
 Allow from cupsserver                          # разрешение подключатся к самому себе по имени хоста
 Allow from cupsserver.example.com    # разрешение подключатся к самому себе по FQDN
 Allow from localhost                             # разрешение подключатся к самому себе через loopback интерфейс
 Allow from 10.10.100.*                        # Если хотите разрешить
 Allow from linux4.example.com           # доступ на печать с
 Allow from 172.168.5.125                   # определенных подсетей, IP или хостов
</Location>

Для полной уверености и отладки, можно оставить, пока не настроите все остальное, такую констукцию, которая позволит печать отовсюду:

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow from all
</Location>

Приступим к настройке административного доступа к CUPS на принтсервере. Определитесь, с какого/каких IP и/или подсетей вы собираетесь подключаться к CUPS, и добавить их по аналогии с блоком <Location />:

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow from localhost
  Allow from 10.10.100.*
  Allow from admin.example.com
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  Order allow,deny
  Allow from localhost
  Allow from 10.10.100.*
  Allow from admin.example.com
</Location>

# Restrict access to log files...
<Location /admin/log>
  Order allow,deny
  Allow from localhost
  Allow from 10.10.100.*
  Allow from admin.example.com
</Location>

Еще, по желанию, можно добавить язык интерфейса по умолчанию. Список доступных языков можно посмотреть с помощью команды:

root@cupsserver:~# ls /usr/share/cups/locale
    

Если нужная вам локализация, например ru, есть, то добавьте строчку в /etc/cups/cupsd.conf:

DefaultLanguage ru

Чтобы к вашему принтсерверу cupsserver.example.com можно было обращатся по его хосту (hostname), необходимо создать в папке /etc/cups/ файл client.conf с таким содержимым:

ServerName имя_хоста

Самым простым способом это можно сделать так:

root@cupsserver:/etc/cups# echo "ServerName $(cat /etc/hostname)" > /etc/cups/client.conf

Поскольку мы предполагаем, что в сети есть DNS сервер, то будет предпочтительным, чтобы можно было обращатся к принтсерверу по его доменному имени (cupsserver.example.com). Также серверу может быть присвоен CNAME псевдоним на DNS сервере, например print или cups. Чтобы принтсервер принимал подключения по таким обращениям, необходимо добавить такую строчку в файл /etc/cups/cupsd.conf:

ServerAlias cupsserver.example.com print cups

Если вы хотите, чтобы принтсервер примимал любые обращения, или не хотите заморачиваться, то можно добавить это:

ServerAlias *

Еще нужно взглянуть внутрь файла /etc/cups/cups-browsed.conf. Этот файл управляет тем, как принтсервер будет искать принтеры в сети и проводить широковещательную рассылку своих принтеров. Я предлагаю совершенно отключить опцию рассылки. Принтсервер будет искать принтера в сети, но с него принтеры на клиентские машины будут подключатся вручную. Ниже будет описано, почему. Пока же мы находим строку BrowseRemoteProtocols dnssd cups:

# Which protocols will we use to discover printers on the network?
# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.

BrowseRemoteProtocols dnssd cups

Благодаря этой опции принтсервер ищет расшаренные принтера в сети. Ее мы оставляем включенной, так как в наших интересах, чтобы принтсервер искал принтера в сети. Но нам совершенно не нужно, чтобы принтсервер рассылал вообще все подключенные к нему принтеры, иначе возникнет большая путаница. Для предотвращения такого сценария находим следующую опцию #BrowseLocalProtocols none и раскомментируем ее:

# Which protocols will we use to broadcast shared local printers to the network?
# Can use DNSSD and/or CUPS, or 'none' for neither.
# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore DNSSD in this directive).

BrowseLocalProtocols none

На этом настройку принтсервера приостанавливаем и переходим к настройке клиентких машин Windows и Linux. Требования к ним такие — позволять посылать на себя задания печати принтсерверу, и посылать задания на печать именно (и только) на принтсервер в случае необходимости печати на сетевой принтер.

В качестве примера настроим печать сквозь принтсервер между двумя клиентскими машинами с Linux (имя хоста linux1) и Windows 8 соотвественно (имя хоста windows1). Начнем с настройки windows1 в качестве приемника печати от принтсервера. У меня к нему подключен и штатно работает принтер Canon i-SENSYS MF4410. Имя принтера — Canon-MF4400. Самый простой способ, на самом деле, обеспечить печать с принтсервера на windows1 — перейти в Панель управления > Программы > Программы и компоненты > Включение или отключение компонентов Windows. Там мы включаем компонент Службы печати и документов > Служба печати LPD. Это позволит подключить данный принтер к принтсерверу с помощью адреса lpd://windows1/Canon-MF4400. Разумеется, назревает вопрос, почему бы не подключить с помощью SMB? Никто не запрещает. Если у вас отлажен данный метод, вы можете расшарить принтер таким образом, и подключить к принтсерверу по протоколу SMB. Инстукции по данному подключению, на мой взгляд, выходят за рамки данной статьи, которая и так выходит довольно объемной. Пока же считаем, что читатель успешно зашел по адресу http://cupsserver:631/admin нажал на кнопку «Добавить новый принтер» и следуя интуиции, логике и прочитатанным ранее мануалам успешно подключил принтер с windows1 по протоколу LPD к принтсерверу cupsserver[example.com] и страница принтера доступна по адресу http://cupsserver:631/printers/Canon-MF4400.

Теперь выполним аналогичную операцию на клиентской машине Linux c именем хоста linux1. Вообще, данная часть будет куда объемнее, так как у клиентской машины есть свой сервис CUPS и его тоже нужно настроить во многом так же, как и принтсервер, за исключением его подчиненной роли в организации печати.

Исправление ошибки обращения к CUPS через loopback по имени хоста

Есть неприятный момент. Если вы введете linux1 в домен, настроите на нем CUPS по этим инструкциям, то можете заметить абсурдную ситуацию, когда на WEB-интерфейс linux1 можно зайти снаружи, но на самом хосте этого сделать нельзя! И графические приложения для локальной настройки принтеров, вроде приложения system-config-printer в Linux Mint, отказываются работать. При попытке подключения на свой же CUPS по по адресу http://linux1:631/ будет сообщение «Запрещено» или «Bad Request». Это известная и толком не решенная на множестве форумов интернета проблема.

В большинстве инструкций по введению Linux в домен одним из пунктов является приведение файла /etc/hosts приблизительно к такому виду:

127.0.0.1       localhost
127.0.1.1    linux1.example.com linux1
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe02::2 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
 

Почему то CUPS не в силах ассоциировать обращение через 127.0.1.1, то есть через Loopback интерфейс, с именем хоста.

Исправляется эта ошибка двумя способами. Если в вашей сети IP адреса статичные, то в файле /etc/hosts.исправьте 127.0.1.1 на IP адрес внешнего сетевого интерфейса клиентской машины, например:

127.0.0.1       localhost
192.168.1.50   linux1.example.com linux1
 

Либо же, раз уж вы вводите Linux в домен, то это предполагает, что в вашей сети работает DHCP и DNS сервер Active Directory. В таком случае просто закомментируйте данную строчку:

127.0.0.1       localhost
# 127.0.1.1   linux1.example.com linux1
 

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

Настройка адресов прослушивания подключений к CUPS у клиентских машин Linux

Заходим на linux1 любым удобным способом. Редактируем файл /etc/cups/cupsd.conf:

user@linux1:~$ sudo nano /etc/cups/cupsd.conf

Находим, добавляем или изменяем в нем строки:


DefaultLanguage ru         # Если язык присутствует в папке /usr/share/cups/locale

ServerAlias linux1.example.com linux1 [CNAME псевдоним присвоенный на DNS сервере]
или
ServerAlias *              # Если неохота вникать в особенности

Listen /run/cups/cups.sock 
Listen localhost:631           # Слушать localhost
Listen 10.10.100.50:631    # IP адрес нашего принтсервера.
Listen cupsserver:631        # Доменное имя принтсервера. Рекомендую чтобы его IP тоже был, на всякий случай
Listen linux1:631          # 
или
Port 631                   # Будет слушать подключения со всех адресов
Listen /run/cups/cups.sock

Browsing off                          # Выключено. Машина будет посылать информацию только принтсерверу

DefaultAuthType Basic      # Без изменений. Есть вариант с авторизацией Kerberos, но там много подводных камней

Настройка адресов прослушивания подключений к CUPS

В предыдущем блоке мы настроили возможность подключения к CUPS. Теперь перейдем к настройке разрешений на доступ к печати, а также к административным страницам сервиса CUPS на хосте linux1. Вновь открываем, если закрыли, файл /etc/cups/cupsd.conf и переходим к редактированию блоков <Location />, <Location /admin>, <Location /admin/conf>, <Location /admin/log>:


# Restrict access to the server...
<Location />
  Order allow,deny        # Определяет политику доступа "Что не разрешено, то запрещено"
  Allow from localhost    # Позволяет печатать самой linux1
  Allow from linux1       # Печать на свое имя хоста. Проблемы этого действия описаны выше
  Allow from cupsserver   # Если CUPS нормально взаимодействует с DNS, то сработает. Увы, не всегда это так
  Allow from cupsserver.example.com   # FQDN принтсервера
  Allow from 10.10.100.50 # Разрешение на печать с IP принтсервера <b>cupsserver</b>
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny        # Аналогично предыдущему
  Allow from localhost    # Необходимо для возможности добавлять принтеры
  Allow from linux1       # Аналогично предыдущему
  Allow from 10.10.101.71 # Предположим, это IP админа
  Allow from 10.20.50.*   # Предположим, это подсеть вашего IT отдела
  AuthType Default        # То есть CUPS спросит логин и пароль. Подробнее ниже
  Require user @SYSTEM    # Определение группы доступа к CUPS
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
#Блок идентичен предыдущему
  Order allow,deny        # Аналогично предыдущему
  Allow from localhost    # Необходимо для возможности добавлять принтеры
  Allow from linux1       # Аналогично предыдущему
  Allow from 10.10.101.71 # Предположим, это IP админа
  Allow from 10.20.50.*   # Предположим, это подсеть вашего IT отдела
  AuthType Default        # То есть CUPS спросит логин и пароль. Подробнее ниже
  Require user @SYSTEM    # Определение группы доступа к CUPS
</Location>

# Restrict access to log files...
<Location /admin/log>
#Блок идентичен предыдущему
  Order allow,deny        # Аналогично предыдущему
  Allow from localhost    # Необходимо для возможности добавлять принтеры
  Allow from linux1       # Аналогично предыдущему
  Allow from 10.10.101.71 # Предположим, это IP админа
  Allow from 10.20.50.*   # Предположим, это подсеть вашего IT отдела
  AuthType Default        # То есть CUPS спросит логин и пароль. Подробнее ниже
  Require user @SYSTEM    # Определение группы доступа к CUPS
</Location>

Настройка раздачи и получения широковещательной рассылки сетевых принтеров

Еще у клиетской машины Linux, в данном случае linux1, необходимо отредактировать файл /etc/cups/cups-browsed.conf:

user@linux1:~$ sudo nano /etc/cups/cups-browsed.conf 
  
  BrowseRemoteProtocols none # Пишем none чтобы не получить кучу принтеров автоматически. 

  BrowseLocalProtocols cups  # Показывать подключеные принтеры в сеть. DNSSD указывать не надо, его директива в cupsd.conf
    
    BrowseOrder Allow,Deny             # Аналогично директиве Order в cupsd.conf - необходимо явно указать, куда МОЖНО посылать информацию о подключенных принтерах
  BrowseAllow 10.10.100.50           # IP принтсервера
  BrowseAllow cupsserver             # Имя хоста принтсервера
  BrowseAllow cupsserver.example.com # Полное доменное имя принтсервера
 

Настройка административного доступа

Еще пару слов по поводу административного доступа, как на WEB-интерфейс CUPS на принтсервере, так и на любой клиентской машине Linux. Даже при условии наличия 30-50 компьютеров нужно унифицировать авторизацию на CUPS, а не держать в голове или еще где пароли каждой машины. И это важно на всех Linux машинах, ведь чтобы добавить принтер на сервер, его сперва нужно установить локально. Я вижу несколько путей.

Первый — на каждой системе Linux создать пользователя printeradmin (например) и добавить в группу lpadmin:

user@linux1:~$ sudo usermod -a -G lpamin printeradmin 
 

и авторизовываться на http://имя_хоста:631/admin c помощью его учетных данных.

Второй вариант практически идентичен и предлагает создать группу в системе, например, printersadmins, добавить туда требуемого администратора CUPS (printeradmin, user):

user@linux1:~$ sudo groupadd printersadmins
user@linux1:~$ sudo usermod -a -G printersadmins printeradmin
user@linux1:~$ sudo usermod -a -G printersadmins user
 

Затем нужно найти в файле /etc/cups/cups-files.conf строку

# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin
 

и добавить через пробел одну или несколько групп пользователей с правом администрировать CUPS.

# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin printersadmins somegroup
 

И наконец, третий вариант. Сделать администраторами принтсервера и CUPS’ов клиентских машин доменную группу пользователей. Для этого принтсервер и клиентские машины Linux должны быть присоединены к домену AD. Есть несколько методов подключения Linux к домену Windows, но, насколько я знаю, основные это подключение с помощью winbind и с помощью SSSD(realmd). Описание данных методов не входит в статью, поэтому остановлюсь только на моментах которые касаются конкретно CUPS’а.

Настройка использования доменных групп пользователей для администрирования CUPS

Каждый метод присоединения к системе централизованной авторизации в Linux создает специальный файл-«трубу» (pipe), сквозь который приложения могут посмотреть список пользователей домена. Чтобы так мог сделать CUPS, нужно разрешить ему использовать pipe в AppArmor’е для аутентификации пользователей. AppArmor — модуль безопасности Linux по управлению доступом. Ограничивает определенные программы набором перечисленных в его политиках файлов. Чтобы добавить CUPS’у право использовать пользователей и группы домена через winbindd, нужно добавить в файл /etc/apparmod.d/local/usr.sbin.cupsd такую строку:

/var/lib/samba/winbindd_privileged/pipe rw
 

Если Linux введен в домен через SSSD, то необходимо указать расположение его pipe в /etc/apparmod.d/local/usr.sbin.cupsd, добавив туда строку:

/var/lib/sss/pipes/private/pam rw
 

К тому же, в случае с SSSD это позволяет пройти аутентификацию (узнать кто заходит), но чтобы пройти авторизацию (узнать есть ли право у пользователя управлять CUPS) необходимо также добавить в файл конфигурации SSSD /etc/sssd/sssd.conf строку:

ad_gpo_map_interactive = +cups
 

Это, условно выражаюсь, дает CUPS’у право «заглядывать» в SSSD.

К тому же, в силу того, что CUPS теперь зависит от сервиса SSSD, нужно указать CUPS’у что он должен запускаться после SSSD, иначе он будет отваливаться при включении и его будет необходимо каждый раз включать вручную.

Добавим CUPS’у указание грузиться после SSSD. Отредактируем файл сервиса cups.service по пути /lib/systemd/system/, добавив инструкцию After в секцию [Unit]:

[Unit]
Description=CUPS Scheduler
Documentation=man:cupsd(8)
After=sssd.service
 

Таким образом CUPS настроен на Basic авторизацию через домен, то есть авторизацию с помощью ввода логина и пароля доменного пользователя с правом администрирования CUPS.

Авторизация может быть настроена и иначе, но принцип (pipe-файл) в целом универсален и есть шанс настроить и для LDAP, FreeIPA и прочих служб каталогов по аналогии.

Установка принтера в Linux

Установить принтер на Linux это часто специфическая задача, разная для разных марок и даже моделей. Поэтому не вижу смысла описывать установку принтера и примем за факт, что на хосте linux1 установлен принтер Kyocera-1024FP с именем Kyocera-1024FP, и страница принтера доступна по ссылке http://linux1:631/printers/Kyocera-1024FP.

Теперь, когда сервер и клиенские машины Linux настроены, к некоторым из них присоединены принтеры, а также есть машины на Windows, которым и с которых нужно печатать, и вся эта система должна быть стабильной и в случае, если на одном из ПК необходимо заменить принтер, то это не должно повлечь за собой перенастройку доброй половины всех ПК, если не всех. К тому же нужно как можно меньше проблем с драйверами. И это вполне возможно.

Группы принтеров (Classes)

Выше мы описывали подключение Canon-MF4400 c хоста windows1 через протокол LPD. Принтер все еще подключен и его статус можно посмотреть на странице http://cupsserver:631/printers/Canon-MF4400. А теперь обратим пристальное внимание на главную страницу администрирования cupsserver http://cupsserver:631/admin. На этой странице есть кнопка «Добавить группу» [Add Class]. Нажмем на нее. В ней вы увидите поля «Название», «Описание», «Расположение», аналогичные таким же при настройке обычного принтера. В нижнем же блоке вы увидите список всех подключенных к принтсерверу принтеров. Выберите Canon-MF4400 или любой который хотите, затем в поле «Название» впишите, например printer-windows1, «Описание» и «Расположение» на ваше усмотрение, и нажмите «Добавить группу».

Теперь у нас есть группа printer-windows1 с принтером Canon-MF4400 в ней. Страница этой группы доступна так же как и страница принтера Canon-MF4400 с оговоркой на немного другой путь — http://cupsserver:631/classes/printer-windows1.

Еще у нас все еще есть подключенный к linux1 принтер Kyocera-1024FP. Подключим его к принтсерверу по HTTP. Выбираем метод подключения «Протокол интернет печати (http)» [Internet Printing Protocol (http)], из списка драйверов выбираем марку «Generic», модель «IPP Everywhere». Называем его как угодно, мы назовем так же как на хосте linux1Kyocera-1024FP. Теперь принтер доступен на принтсервере по ссылке http://cupsserver:631/printers/Kyocera-1024FP. Аналогично настройке группы printer-windows1 создаем группу printer-linux1 c принтером Kyocera-1024FP в ней. Ее ссылка соответственно http://cupsserver:631/classes/printer-linux1.

Теперь подключим принтер Kyocera-1024FP с хоста linux1 через принтсервер cupsserver к хосту windows1 с системой Windows 8 на борту без какой либо дополнительной(!) установки драйверов. Для этого мы при подключении принтера выбираем «Выбрать общий принтер по имени». В общем случае мы пишем http://имя_принтcервера:631/classes/название_группы. В нашем конкретном случае — http://cupsserver:631/classes/printer-linux1. При запросе на выбор драйвера указываем марку «Generic», модель — «MS Publisher Imagesetter». Все подтверждаем далее, и имеем подключенный принтер с название вроде «printer-linux1 на http://cupsserver:631». Если до сих пор никаких ошибок и подводных камней при настойке не возникло, то попытка пробной печати приведет к успешной печати на Kyocera-1024FP.

Теперь подключим принтер Canon-MF4400 с хоста windows1 через принтсервер cupsserver к хосту linux1 с системой Linux на борту без какой либо дополнительной(!) установки драйверов. Для этого мы при подключении принтера действуем аналогично тому, как подключали Kyocera-1024FP к принтсерверу cupsserver. То есть при добавлении принтера на linux1 выбираем метод подключения «Протокол интернет печати (http)», в качестве расположения принтера (Canon-MF4400) ссылку на его группу на принтсервере — http://cupsserver:631/classes/printer-windows1. При запросе на выбор драйвера указываем марку «Generic», модель — «IPP Everywhere». Называем его как угодно, можно назвать так же как группу — printer-windows1. Теперь принтер доступен на linux1 по ссылке http://linux1:631/printers/printer-windows1, и мы уже можем отправлять на печать документы.

Главная прелесть данного метода в том, что если на любом из ПК заменяется принтер, заменяется сам компьютер, или то и другое сразу, то это никак не влияет на тех, кто был к ним подключен через группу на принтсервере. Единственная настройка производится на принтсервере — к принтсерверу подключается новый принтер, затем из группы, в которой состоял старый принтер, он удаляется, и добавляется новый принтер на замену старому. И никаких дополнительных настроек на любом количестве ПК, только на принтсервере и собственно ПК на котором меняли принтер. Драйвера «IPP Everywhere» и «MS Publisher Imagesetter» содержат большое количество настроек бумаги, печати и т.д., так что нет проблем настроить нужный вид печати через них.

Заключение

Тема слишком обширна, чтобы изложить сколько-нибудь подробно, и даже так статья вышла крайне объемной. Любые уточнения, указания на ошибки, нераскрытые вопросы и советы, данные в комментариях к данной статье, будут приняты во внимание и в случае необходимости включены в статью.

Печать на Windows принтер из Linux.

В этой статье я опишу настройку сервера печати LPD на Windows и последующую установку принтера на Linux.

На ПК с Windows, нужно открыть общий доступ к принтеру. Заходим в свойства принтера, и на вкладке Доступ, активируем опцию — Общий доступ к данному принтеру, с присвоением ему простого сетевого имени без пробелов и спецсимволов. В данном примере сетевое имя нашего принтера — AdminsPrint (выбирал не я:).

Печать на Windows принтер из Linux

Далее, нужно установить компонент Windows, отвечающий за сетевую печать с Unix-like ОС. Пуск -> Панель управления -> Установка и удаление программ -> Установка компонентов Windows -> Другие службы доступа к файлам и принтерам в сети -> Состав -> Службы печати для Unix, ставим галочку и применяем. Система потребует у вас предоставить компакт диск с Windows, либо указать месторасположение установочных файлов Windows на жёстком диске или в сети.

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Теперь нужно активировать сервер LPD и сделать его загрузку автоматической при старте операционной системы. Пуск -> Панель управления ->Администрирование -> Службы -> Сервер печати TCP/IP -> Пуск и там же сменить значение опции Тип запуска на Авто.

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Если у вас установлен файерволл, то нужно открыть в нём доступ к TCP порту 515, через который и работает LPD. На этом настройка Windows сервера для печати из Linux, завершена!

На ПК с Linux, осталось только установить этот принтер по LPD, любым удобным вам способом, в зависимости от используемой в вашем дистрибутиве утилиты для управления принтерами, либо воспользоваться универсальным для всех дистрибутивов методом установки принтера через веб-интерфейс CUPS. Я опишу как стандартный для Xubuntu метод установки принтера с помощью утилиты system-config-printer, так и метод установки принтера через веб-интерфейс CUPS.

Самый важный момент при установке принтера, это правильно указать его URI. В нашем случае, URI принтера имеет следующий вид:

lpd://10.2.2.1/AdminsPrint

Где,

  • lpd:// — используемый протокол печати;
  • 10.2.2.1 — IP адрес Windows ПК, на котором установлен принтер;
  • AdminsPrint — сетевое имя принтера (очереди) на данном ПК.

Итак, установка принтера с помощью утилиты system-config-printer:

В консоли, выполняем команду system-config-printer, либо Меню приложений -> Диспетчер настроек -> Оборудование -> Принтеры. В меню Сервер -> Новый -> Принтер. Введите адрес (URI), в нашем случае, это

 lpd://10.2.2.1/AdminsPrint

Далее, выбираем драйвер, указываем любое, понятное вам имя принтера, распечатываем тестовую страницу. Всё, принтер установлен и печатает.

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Альтернативный метод установки принтера — установка принтера через веб-интерфейс CUPS, работает в любом дистрибутиве Linux. Запускаем любой браузер (на скринах Firefox) и переходим к адресу:

Вкладка Administration -> Printers -> Add Printer. Авторизуемся под пользователем root. Выбираем опцию LPD/LPR Host or Printer-> Continue, в поле Connection вводим URI нашего принтера и кликаем Continue:

lpd://10.2.2.1/AdminsPrint

В строке Name вводим имя нашего принтера и кликаем Continue.

Далее, указываем марку и модель принтера и кликаем Add Printer. На следующей странице кликаем на Set Default Options. CUPS сообщит, что принтер успешно установлен.

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Печать на Windows принтер из Linux

Данный способ работает и с Windows 7 в качестве сервера и с другими дистрибутивами Linux в качестве клиентов. Модели и марки принтеров так же могут быть теоретически любые, я пробовал только модели от HP, проблем с ними нет. Единственное, что нужно учитывать — если ваш дистрибутив далеко не первой свежести, то возможно понадобиться дополнительно установить/обновить HPLIP (если у вас принтер от HP), а так же для некоторых моделей принтеров от HP требуется проприетарный плагин, который устанавливается отдельно.

Источник: http://yar4e-it.blogspot.ru

Под конец года наша организация получила новое оборудование — компы на замену особо почётных раритетов и дополнительные рабочие места. В некоторых отделах количество компьютеров на один принтер перевалило за 12. Новый Windows 7 домашний базвый позволяет подключать к принтеру 8 человек, точнее 8 компьютеров. Старый добрый Win XP professional поддерживает 10 подключений. Мало — у нас отделы до 14 рабочих мест. Аппаратные принт-серверы сами стоят как маленький принтер, а к тому же требуют хитрой настройки для каждого клиента. Вот у линуксоидов такой проблемы нет, хоть и есть другие.

После модернизации у нас остались старые компьютеры — Celeron 1700, 256 MB DDR, 20 GB IDE HDD — как раз как в объявлениях «отдам даром». Они и стал принт-сервером под управлением ubuntu 10.04 desktop.

Диска с ubuntu server не было под рукой, да и задачи сделать всё только из командной строки не стояло.
О том, как печатать через CUPS есть хорошая статья. Вот только рабочие места постоянно заняты, принтеры регулярно ездят в гарантийный ремонт и каждый раз копировать URI принтера, ползать по панели управления Windows и вручную подсовывать драйвер нет ни желания, ни возможности. Эх, было бы как в Windows — ввёл в адресную строку \имя-компа-с-принтером, выбрал принтер, а остальное делается само. Можно и так, но придётся повозиться с сервером.
Добавляем пакеты
sudo apt-get install windbind libcupsys2-dev openssh-server
Winbind теснее интегрирует имена хостов в linux и windows сетях. Libcupsys2-dev, но же cups-devel — изсходные тексты CUPS для сборки автоустановщика драйверов. Openssh-server обеспечит доступ по SSH на случай, если нужно будет выполнить пару команд с другого этажа.
Собираем cups windows drivers
Скачиваем cups-windows-6.0-source. Распаковываем, заходим в полученный каталог и запускаем sudo make install

Изменения (для ubuntu 10.04 desktop) коснутся только двух секций.

[printers]
   comment = All Printers
   browseable = yes
   path = /var/spool/samba
   printable = yes
   guest ok = yes
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /usr/share/cups/drivers
   browseable = yes
   read only = no
   writable = yes
   guest ok = yes

В первой разрешаем гостя, во второй меняем пусть к каталогу с драйверами и разрешаем запись. По-умолчанию писать в неё сможет только root (другое имя не прокатило). И его ещё надо создать.
smbpasswd -a root

Применим сделанные настройки:

sudo service smbd restart
sudo service cups restart

Часто вместо service smbd restart советуют /etc/init.d/samba restart но в нашей убунте (10 04 десктоп) его зовут именно smbd
Для штатной работы нужно скопировать из windows несколько файлов:

  ps5ui.dll
  pscript.hlp
  pscript.ntf
  pscript5.dll

Нужно продублировать их из каталога %WINDIR%SYSTEM32SPOOLDRIVERSW32X863 в /usr/share/cups/drivers и получаем такой список:

 cups6.inf
 cups6.ini
 cupsps6.dll
 cupsui6.dll
 ps5ui.dll
 pscript.hlp
 pscript.ntf
 pscript5.dll

Обратите внимание, все имена должны быть в нижнем регистре!

Теперь, собственно экспортируем все принтеры из CUPS в Samba (на нащем принт-сервере ровно один принтер, так что можно экспортировать все)
sudo cupsaddsmb -U root -a -v
Если всё прошло хорошо, то вы увидите примерно полтора экрана текста, который будет заканчиваться на Successfully set %принтер% to driver %драйвер%
Если же выводится много-много (более пяти экранов) повторяющегося текста — смело жмём Ctrl+C и читаем сообщение об ошибке Самбы. Устраняем и повторяем.

После всех манипуляций вин-компьютеры увидели в сети своего собрата с одним общим принтером. Его можно установить привычным для пользователей windows способом — двойной щелчок — да — ждём — ждём — «принтер ? использовать по-умолчанию». Однако подключенный таким образом принтер не имеет фирменных настроек — только стандартный драйвер windows. Зато там есть печать нескольких страниц на одном листе.

После очередной перезагрузки выяснилось, что samba стартует раньше cups и из-за этого пропадает доступ к принтеру. Лечится это довольно просто — добавлением /etc/init.d/smbd restart перед exit 0 в файле /etc/rc.local

Вот теперь все довольны, а я пишу шпаргалку, вместо того, чтобы бегать и завершать сессии общего доступа.

«Common UNIX Printing System (CUPS, общая UNIX система печати) — это кроссплатформенное решение для печати для всех UNIX систем. Оно основано на «Internet Printing Protocol» (IPP, интернет-протокол печати) и предоставляет полный спектр возможностей для печати для большинства Postscript и растровых принтеров. CUPS распространяется под GNU GPL….»

Хотя существуют другие пакеты печати, такие как LPRNG, CUPS более популярен и довольно прост в использовании. Это система печати по умолчанию как в Arch Linux, так и во многих других Linux-дистрибутивах.

Содержание

  • 1 Установка
    • 1.1 Драйверы принтеров
      • 1.1.1 Загрузка PPD для принтера
  • 2 Настройка CUPS
    • 2.1 Модули ядра
      • 2.1.1 USB-принтеры
      • 2.1.2 Принтеры с параллельным портом
      • 2.1.3 Автозагрузка
    • 2.2 Демон CUPS
    • 2.3 Web-интерфейс и средства управления
      • 2.3.1 Администрирование CUPS
      • 2.3.2 Удаленный доступ к веб-интерфейсу
  • 3 Устранение проблем
    • 3.1 Проблемы в результате обновления
      • 3.1.1 CUPS останавливается
      • 3.1.2 Для всех заданий — «остановлено» («stopped»)
      • 3.1.3 Для всех заданий — «Принтер не отвечает» («The printer is not responding»)
      • 3.1.4 Версия PPD не совместима с gutenprint
    • 3.2 USB-принтеры под CUPS 1.4.x
      • 3.2.1 Занесение в черный список usblp
      • 3.2.2 Определение устройства
        • 3.2.2.1 Устранение неполадок при определении устройств
        • 3.2.2.2 Загрузка прошивки (firmware)
    • 3.3 Остальное
      • 3.3.1 Устранение ошибок CUPS
      • 3.3.2 Принтер HPLIP выдает ошибку «/usr/lib/cups/backend/hp failed»
      • 3.3.3 Настройка HPLIP выполнена, но принтер не работает
      • 3.3.4 hp-toolbox выдает ошибку «Unable to communicate with device» («Невозможно соединиться с устройством»)
      • 3.3.5 CUPS с принтером HP возвращает ‘»foomatic-rip» not available/stopped with status 3’ (‘»foomatic-rip» не используется/остановлен со статусом 3’)
      • 3.3.6 Завершение печати из-за ошибок авторизации
      • 3.3.7 Неактивна кнопка Печать в диалогах приложений GNOME
      • 3.3.8 Не найдена поддержка формата: application/postscript
      • 3.3.9 Определение URIs для Windows Print Servers
      • 3.3.10 Ошибка задания для печати client-error-document-format-not-supported
      • 3.3.11 Не работает /usr/lib/cups/backend/hp
      • 3.3.12 Принтер Samsung не печатает некоторые документы
      • 3.3.13 Не отображается локальный USB-принтер
      • 3.3.14 «Не удается получить список драйверов для принтеров»
  • 4 Приложение
    • 4.1 Альтернативные интерфейсы CUPS
    • 4.2 Виртуальный PDF-принтер
      • 4.2.1 Печать в postscript: тонкости использования виртуального CUPS-PDF-принтера
        • 4.2.1.1 Настройка виртуального CUPS-PDF-принтера
    • 4.3 Другие источники драйверов для принтеров
  • 5 Дополнение
    • 5.1 Особые случаи
      • 5.1.1 Принтеры с параллельным портом HP (hplip)
      • 5.1.2 Печать не работает/прерывается на принтерах HP Deskjet 700
      • 5.1.3 Заставить работать HP LaserJet 1010
      • 5.1.4 Заставить работать HP LaserJet 1020 (1018 и похожие)
        • 5.1.4.1 HPLIP
      • 5.1.5 Выполнение сервисных операций на принтерах Epson
        • 5.1.5.1 Escputil
        • 5.1.5.2 Mtink
  • 6 См. также
  • 7 Источник

Установка

Вам, скорее всего, потребуются пакеты Шаблон:Pkg, Шаблон:Pkg и Шаблон:Pkg. Установить их можно из официального репозитория.

Если стандартный cups не работает, то можно попробовать установить пакет Шаблон:AURШаблон:Broken package link (Русский).

  • cups — собственно пакет CUPS
  • ghostscript — интерпретатор для языка Postscript
  • gsfonts — стандартные Type1 шрифты GhostScript
  • hpoj — при использовании HP Officejet, во избежание проблем, установите этот пакет согласно инструкциям. Для получения дополнительной информации почитайте обсуждение на launchpad/hplip

Если ваша система подключена к сетевому принтеру с использованием протокола samba, или система является сервером печати для Windows-клиентов, установите пакет Шаблон:Pkg.

Драйверы принтеров

Выбор пакета с драйверами для принтера зависит от используемого вами принтера. Если вы не уверены, установите Шаблон:Pkg.

  • Шаблон:Pkg — набор высококачественных драйверов для принтеров Canon, Epson, Lexmark, Sony, Olympus и PCL, использующихся с GhostSscript, CUPS, Foomatic и GIMP
  • Шаблон:Pkg, Шаблон:Pkg, Шаблон:Pkg и Шаблон:PkgШаблон:Broken package link (Русский) — система под управлением базы данных для интеграции открытых драйверов для принтера с обычными спулерами под Unix. Установка Шаблон:PkgШаблон:Broken package link (Русский) должна разрешить ваши проблемы, если в Шаблон:Ic от CUPS будут такие записи: «stopped with status 22!»
  • Шаблон:AURШаблон:Broken package link (Русский) — драйвер для принтеров, использующих протокол ZjStream, например таких, как HP Laserjet 1018. Смотрите дополнительную информацию здесь. Для использования Foo2zsj установите пакет Шаблон:AURШаблон:Broken package link (Русский)
  • Шаблон:Pkg — HP GNU/Linux драйвер. Обеспечивает поддержку DeskJet, OfficeJet, Photosmart, Business Inkjet и других принтеров моделей LaserJet, a также ряд принтеров Brother
  • Шаблон:Pkg — драйверы Samsung для принтеров SPL (Samsung Printer Language). Для USB принтеров, возможно, понадобится пакет Шаблон:AURШаблон:Broken package link (Русский)
  • Шаблон:AUR — универсальный драйвер для принтеров и сканеров Samsung. Неодходим, если вы используете новый принтер (например, ML-2160), для которого пока нет драйвера в Шаблон:Pkg
  • Шаблон:AURШаблон:Broken package link (Русский) или Шаблон:AUR — UFR2-драйвер для Canon, обеспечивающий поддержку принтеров серий LBP, iR и MF
  • Шаблон:Pkg — пакет, позволяющий настроить виртуальный PDF-принтер, который будет создавать PDF из всего, что на него отправят

Если вы не уверены в работоспособности драйвера вашего принтера или он не работает, возможно, стоит установить все доступные драйверы, поскольку для вашей модели принтера может подойти драйвер от другого производителя. Например, для Brother HL-2140 необходимо установить драйвер Шаблон:Pkg.

Загрузка PPD для принтера

Так как CUPS в стандартной установке уже содержит множество файлов PPD (Postscript Printer Description), в зависимости от вашего принтера этот пункт является необязательным и может быть пропущен. Более того, в пакетах Шаблон:PkgШаблон:Broken package link (Русский), Шаблон:PkgШаблон:Broken package link (Русский) и Шаблон:Pkg уже имеется большое количество файлов PPD, которые будут автоматически определены CUPS.

Вот объяснение того, что такое PPD файл, с сайта Linux Printing:

«Для каждого PostScript принтера производитель предоставляет PPD-файл, содержащий всю уникальную информацию об этой модели принтера: основные возможности принтера (цветной он или нет, шрифты, уровень PostScript и т.д.) и особенно настройки, которые может изменять пользователь, такие как размер бумаги, разрешение печати и т.д.»

Если в CUPS для вашего принтера отсутствует нужный PPD-файл, то:

  • Поищите пакеты для вашего принтера/производителя в AUR.
  • Посетите базу данных OpenPrinting и выберите своего производителя и модель принтера.
  • Поищите драйверы под GNU/Linux на сайте производителя.

Шаблон:Note (Русский)

Настройка CUPS

Итак, после установки CUPS, у вас есть множество способов его настройки. Вы всегда можете использовать старую добрую командную строку. Некоторые DE, такие как GNOME и KDE, предоставляют удобные программы, которые могут вам помочь в управлении принтерами. Однако, для того чтобы сделать этот процесс максимально доступным обыкновенному пользователю, мы будем использовать web-интерфейс, предоставляемый CUPS.

Если планируется подключение не к локальному, а к сетевому принтеру, то, возможно, вначале стоит почитать о настройке общего доступа к принтерам в CUPS. Настройка общего доступа к принтерам внутри GNU/Linux довольно проста и имеет малое количество опций, а вот организация общего доступа к принтерам между Windows и GNU/Linux является немного более сложной.

Модули ядра

Перед использованием веб-интерфейса CUPS, вам понадобится загрузить соответствующие модули ядра. Далее описаны шаги, взятые из руководства по установке принтера в Gentoo.

Данный раздел может понадобиться в зависимости от используемого ядра. После подключения принтера нужный модуль ядра может быть загружен автоматически. Воспользуйтесь командой Шаблон:Ic (описана далее) для того, чтобы определить обнаружен ли принтер. Для просмотра загруженных модулей ядра также можно воспользоваться утилитой Шаблон:Ic.

USB-принтеры

Для использования USB-принтера может потребоваться внести в черный список модуль Шаблон:Ic. Учтите, что насчет добавления Шаблон:Ic в черный список имеется некоторая неопределенность, так как некоторые USB-принтеры, в частности некоторые серии принтеров Canon и Epson, не определяются без этого модуля. Несколько пользователей принтеров Samsung, после добавления в черный список модуля Шаблон:Ic, сообщили о проблемах с Шаблон:Ic, в качестве решения предлагается повторное включение модуля Шаблон:Ic и установка из AUR пакета Шаблон:Ic вместо стандартного пакета Шаблон:Ic (https://bbs.archlinux.org/viewtopic.php?pid=778104). С февраля 2012, ранее работавший с cups-usblp USB-принтер Samsung ML2010, работает с cups и внесением в черный список usblp.

Добавление модуля в черный список:

Шаблон:Hc

либо создав в Шаблон:Ic свой файл, например Шаблон:Ic, со следующим содержимым:

Шаблон:Hc

При использовании ядра собранного самостоятельно, возможно придется вручную загрузить модуль Шаблон:Ic:

# modprobe usbcore

После загрузки всех необходимых модулей — включите принтер и проверьте обнаружен ли он ядром, для этого выполните следующее:

# tail /var/log/messages.log

или

# dmesg

При использовании Шаблон:Ic, сообщение об обнаружении принтера будет выглядеть примерно так:

Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver

Если Шаблон:Ic находится в черном списке, то будет выведено примерно следующее:

usb 3-2: new full speed USB device using uhci_hcd and address 3
usb 3-2: configuration #1 chosen from 1 choice

Принтеры с параллельным портом

Если вы желаете использовать принтер с параллельным портом, настройка в общем-то такая же, за исключением модулей:

# modprobe lp
# modprobe parport
# modprobe parport_pc

Еще раз проверьте настройки выполнив команду:

# tail /var/log/messages.log

Должно быть показано что-то вроде этого:

lp0: using parport0 (polling)

При использовании адаптера с USB на параллельный порт, CUPS не сможет обнаружить принтер. В качестве обходного пути — добавьте принтер используя другие типы соединений, а затем измените DeviceID в файле Шаблон:Ic:

DeviceID = parallel:/dev/usb/lp0

Автозагрузка

Возможно, вам будет удобнее если соответствующий модуль будет загружен при старте системы. Для этого откройте в текстовом редакторе файл Шаблон:Ic, и добавьте нужный модуль в строку Шаблон:Ic. Например, так:

MODULES=(!usbserial scsi_mod sd_mod snd-ymfpci snd-pcm-oss lp parport parport_pc ide-scsi)

Демон CUPS

После установки соответствующих модулей ядра, можно приступать к запуску демона CUPSШаблон:Broken section link. Для автоматического запуска демона при старте системы следует добавить cupsd в строку DAEMONS.

Web-интерфейс и средства управления

После запуска демона

# systemctl start org.cups.cupsd

откройте браузер и зайдите на: http://localhost:631 (Строку localhost, возможно, придется заменить на имя хоста из Шаблон:Ic).

Теперь для добавления принтера можно использовать различные мастера. Для запуска обыкновенной процедуры установки кликните Добавление принтеров и групп, затем Добавить принтер. При запросе имени пользователя и пароля нужно будет войти в качестве root. Далее будет представлен список устройств для выбора. Фактическое имя принтера отображается рядом с меткой ( например, USB-принтеры напротив USB Printer #1). Принтеру можно присваивать любое имя, аналогично для пунктов ‘Расположение’ и ‘Описание’. После выбора соответствующего драйвера настройки будут окончены.

Убедитесь в правильности настроек, нажав на кнопку Print Test Page (Печать тестовой страницы) в выпадающем меню Maintenance (Обслуживание). Если принтер не печатает, но вы уверены в правильности всех настроек, попытайтесь сменить драйвер принтера на другой.

Шаблон:Tip

Шаблон:Note (Русский)

Администрирование CUPS

При администрировании принтера через веб-интерфейс (например для: добавления или удаления принтеров, остановки заданий печати, и т.д) понадобятся имя пользователя и пароль. Пользователем по-умолчанию может быть пользователь из группы sys или root (для изменения измените значение в строке SystemGroup файла Шаблон:Ic).

При заблокированной учетной записи root (т.е. используя sudo) будет невозможно войти в веб-интерфейс управления CUPS с именем пользователя по умолчанию и его паролем. В этом случае придерживайтесь инструкций из CUPS FAQ. Дополнительно прочтите это сообщение.

Удаленный доступ к веб-интерфейсу

По умолчанию, доступ к веб-интерфейсу CUPS разрешен только localhost; т.е. компьютеру на котором он установлен. Для разрешения удаленного доступа нужно внести следующие изменения в файл Шаблон:Ic. Замените строку:

Listen localhost:631

на строку

Port 631

для того, чтобы CUPS мог слушать входящие запросы.

Можно предоставить три уровня доступа:

<Location />           #доступ к серверу
<Location /admin>	#доступ к странице администрирования
<Location /admin/conf>	#доступ к конфигурационным файлам

Для разрешения удаленного доступа к одному из уровней, добавьте параметр Шаблон:Ic в секцию соответствующую выбранному уровню. Параметр Шаблон:Ic может принимать одно или несколько из перечисленных ниже значений:

Allow all
Allow host.domain.com
Allow *.domain.com
Allow ip-address
Allow ip-address/netmask

Параметр также может быть использован для запрета. Например, если нужно дать полный доступ всем хостам подсети 192.168.1.0/255.255.255.0, файл Шаблон:Ic должен содержать следующее:

# Ограничение доступа к серверу...
# По умолчанию возможны только локальные подключения
<Location />
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0
</Location>

# Ограничение доступа к странице администрирования...
<Location /admin>
   # Encryption disabled by default
   #Encryption Required
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0
</Location>

# Ограничение доступа к конфигурационным файлам...
<Location /admin/conf>
   AuthType Basic
   Require user @SYSTEM
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0
</Location>

Также вам потребуется добавить:

DefaultEncryption Never

Для того, чтоб избежать получения ошибки: 426 — Upgrade Required when using the CUPS web interface from a remote machine.

Устранение проблем

Наилучший способ борьбы с неисправностями — это выставить ‘LogLevel’ в файле Шаблон:Ic в:

LogLevel debug

А потом посмотреть вывод из файла Шаблон:Ic например так:

# tail -n 100 -f /var/log/cups/error_log

Символы слева от вывода означают следующее:

  • D=Debug (отладка)
  • E=Error (ошибка)
  • I=Information (информация)
  • И так далее

Следующие файлы также могут быть полезны:

  • Шаблон:Ic — каждый раз при успешной печати, пишет новую запись
  • Шаблон:Ic — записывает всю активность на cupsd http1.1 сервере

Также, если вы хотите решить свои проблемы, важно понимать, как вообще работает CUPS. Вот краткая информация об этом:

  1. Когда вы жмёте ‘печать’ приложение отправляет .ps-файл (PostScript, язык-скрипт, который описывает, как выглядит страница) в систему CUPS (так происходит в большинстве программ).
  2. CUPS смотрит на PPD-файл (файл описания принтера) и находит, фильтры которые ему нужно использовать для преобразования .ps-файла в файл, который понимает ваш принтер (например, PJL,PCL). Обычно для этого ему требуется ghostscript.
  3. GhostScript принимает ввод и решает, какие фильтры ему использовать, потом применяет их и преобразовывает .ps-файл в формат, который понимает принтер.
  4. Затем файл передается бэкенду. Например, если у вас принтер подключен к usb порту, то используется usb бэкенд

Проблемы в результате обновления

Проблемы возникшие после обновления CUPS и сопутствующего ему набора программ

CUPS останавливается

Существует вероятность, что для правильной работы в обновленной версии понадобится новый файл конфигурации. Например, получение сообщения «404 — page not found» при попытке входа в панель управления CUPS через localhost:631.

Для того, чтобы воспользоваться новым конфигом, скопируйте Шаблон:Ic в Шаблон:Ic (при необходимости сделайте резервную копию старого конфига):

# cp /etc/cups/cupsd.conf.default /etc/cups/cupsd.conf

и, чтобы новые настройки вступили в силу, перезапустите CUPS.

Для всех заданий — «остановлено» («stopped»)

Если для всех отправленных на печать заданий установился статус «остановлено» («stopped»), — удалите принтер и установите его заново.
Для этого войдите в веб-интерфейс CUPS, перейдите Принтеры > Удалить Принтер.

Для проверки настроек принтера перейдите во вкладку Принтеры, затем Администрирование. В выпадающем списке кликните ‘Изменить принтер’, перейдите к следующей странице (ам), и так далее.

Для всех заданий — «Принтер не отвечает» («The printer is not responding»)

Для сетевых принтеров, поскольку CUPS подключается через URI, необходимо убедиться, что в DNS настроен доступ к принтерам по IP. Например, если принтер подключен следующим образом:

lpd://BRN_020554/BINARY_P1

то имени хоста ‘BRN_020554’ должны соответствовать IP принтеров, управляемых сервером CUPS.

Версия PPD не совместима с gutenprint

Запустите:

# /usr/sbin/cups-genppdupdate

И перезагрузите CUPS (будет выведено соответствующее сообщение после установки gutenprint).

USB-принтеры под CUPS 1.4.x

Новый CUPS 1.4.x принес множество изменений:

Занесение в черный список usblp

Теперь CUPS, вместо генерирования устройств /dev/usb/lpX с помощью usblp, использует устройства libusb и USB-принтеры (из /dev/bus/usb/). Для того, чтобы заработали USB-принтеры — необходимо выключить модуль usblp.
Выключить можно либо добавив в Шаблон:Ic:

Шаблон:Hc

либо создав в Шаблон:Ic свой файл, например Шаблон:Ic, со следующим содержимым:

Шаблон:Hc

Некоторым пользователям, возможно, прийдется переустановить принтер.

Определение устройства

В дополнение к отключению загрузки usblp, CUPS могут понадобится права на файл устройства USB-принтера — root:lp, и должны быть 660. Например.

$ ls -l /dev/bus/usb/003/002
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002

Этого можно добиться добавлением двумя правилами udev в Шаблон:Ic:

# hplip and cups 1.4+ use raw USB devices, so permissions should be similar to
# the ones from the old usblp kernel module
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660"

Тем не менее, для некоторых устройств, например, многофункциональных устройств принтер/сканер, эти правила либо не используются, либо перекрываются правилами пакета ‘sane’. В этом случае нужно будет добавлять пользовательские правила udev. Смотри далее.

Устранение неполадок при определении устройств

Узнаем файл устройства принтера и права доступа к нему:

$ lsusb
...
Bus 003 Device 002: ID 04b8:0841 Seiko Epson Corp.
$ ls -l /dev/bus/usb/003/002
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002

Если права доступа не root:lp 660, придется создать пользовательское правило udev для этого устройства, пример
Шаблон:Hc

Для многофункциональных устройств (принтер+сканер), для того, чтоб SANE определил его корректно:
Шаблон:Hc

Обратите внимание:

  • Шаблон:Ic и Шаблон:Ic взяты из вывода команды Шаблон:Ic показанного выше.
  • некоторым принтерам понадобятся права доступа Шаблон:Ic.
Загрузка прошивки (firmware)

Для некоторых принтеров и драйверов понадобится загрузка прошивки принтера (таким как, использующие foo2zjs, принтеры HP LaserJet 10xx) и сделать это будет нужно путем записи прямо на устройство lp, такие функциональные возможности предоставляет usblp. Для обхода этого ограничения нужно будет загрузить модуль usblp при загрузке прошивки, а затем, для нормальной работы CUPS, удалить модуль. Для ручной загрузки модуля выполните

$ modprobe usblp

загрузка прошивки, затем:

$ rmmod usblp

Также можно обойтись без добавления usblp в черный список, добавьте «rmmod usblp» в Шаблон:Ic, при этом прошивка будет загружена при старте системы, а затем, при чтении Шаблон:Ic, модуль usblp будет выгружен.

В случае если принтер окажется подключенным или на нем будет включено питание уже на работающей системе — файл Шаблон:Ic не будет использован и модуль usblp останется подгруженным. Обойти это можно изменив Шаблон:Ic, созданный для foo2zjs, таким образом чтоб при добавлении устройства выполнялось нужное событие, например: 15 секунд для загрузки прошивки и автоматического удаления usblp. Следующий пример для HP LaserJet 1018. Для других моделей значения ATTRS{idProduct} должны быть изменены, соответственно модели принтера.

Найдите в Шаблон:Ic строку соответствующую вашему принтеру:

ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0",     
       ATTRS{idProduct}=="4117", RUN+="/sbin/foo2zjs-loadfw 1018 $tempnode"

Добавьте после нее следующие строки, при этом убедитесь, что соответствуют IDs продукта и производителя:

ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0",     
       ATTRS{idProduct}=="4117", RUN+="/usr/bin/sleep 15"
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0",     
       ATTRS{idProduct}=="4117", RUN+="/usr/bin/rmmod usblp"

Остальное

Устранение ошибок CUPS
  • Пользователям, регулярно получающим ошибки вида ‘NT_STATUS_ACCESS_DENIED’ (Windows-клиенты), следует слегка изменить синтаксис:
smb://workgroup/username:password@hostname/printer_name
  • Иногда, блочные устройства могут иметь не правильные права:
# ls /dev/usb/
lp0
# chgrp lp /dev/usb/lp0

Принтер HPLIP выдает ошибку «/usr/lib/cups/backend/hp failed»

Убедитесь, что dbus установлен и запущен, для этого или проверьте секцию DAEMONS в Шаблон:Ic, или выполните Шаблон:Ic.

Если демон dbus запущен, но ошибка все равно повторяется — нужен avahi-daemon.

Шаблон:Note (Русский)

Настройка HPLIP выполнена, но принтер не работает

Данная проблема возникает при использовании драйвера hpijs (устарел) (напр. для серии Deskjet D1600). Вместо него, при добавлении принтера, выбирайте драйвер hpcups.

hp-toolbox выдает ошибку «Unable to communicate with device» («Невозможно соединиться с устройством»)

Если в результате запуска hp-toolbox от обычного пользователя получаете сообщение:

# hp-toolbox
# error: Unable to communicate with device (code=12): hp:/usb/<printer id>

или, «Шаблон:Ic», значит следует добавить пользователя в группу lp, для этого выполните следующую команду:

# gpasswd -a <username> lp

CUPS с принтером HP возвращает ‘»foomatic-rip» not available/stopped with status 3’ (‘»foomatic-rip» не используется/остановлен со статусом 3’)

Если, во время использования принтера HP, задания появляются в очереди, но все завершаются со статусом ‘stopped’, а в Шаблон:Ic возникает одно из следующих сообщений об ошибках:

Filter "foomatic-rip" for printer "<printer_name>" not available: No such file or director

или:

PID 5771 (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!

Убедитесь, что установлен hplip, также может понадобится пакет net-snmp. Прочитайте эти сообщения на форуме.

# pacman -S hplip

Завершение печати из-за ошибок авторизации

Если пользователь уже добавлен в группу lp, и ему разрешена печать (настраивается в Шаблон:Ic), то проблему следует искать в файле Шаблон:Ic. Проблема может заключаться в следующей строке:

AuthInfoRequired negotiate

Закомментируйте ее и перезапустите CUPS.

Неактивна кнопка Печать в диалогах приложений GNOME

Источник: I can’t print from gnome applications. — Arch Forums

Убедитесь, что установлен пакет: libgnomeprint

Отредактируйте Шаблон:Ic добавив в него

# HostNameLookups Double

Перезапустите CUPS:

# /etc/rc.d/cupsd restart

Не найдена поддержка формата: application/postscript

Закомментируйте строки:

application/octet-stream        application/vnd.cups-raw        0      -

в Шаблон:Ic, и:

application/octet-stream

в Шаблон:Ic.

Определение URIs для Windows Print Servers

Иногда Windows предоставляет не полную информацию об URI (расположение устройств). Если в CUPS возникли проблемы с указанием местоположения устройств — необходимо выполнить команду получения списка всех ресурсов, которые доступны данному windows-пользователю:

$ smbtree -U windowsusername

Если Samba работает и настроена правильно, то будут отображены все, доступные выбранному Windows-пользователю, ресурсы локальной сети. Команда должна отобразить что-то, типа этого:
Шаблон:Bc
Нам понадобится первая часть последней строки -ресурс соответствующий описанию принтера. Таким образом, для получения возможности печатать на принтере EPSON Stylus, в качестве URI в CUPS следует ввести:

smb://username:password@REGULATOR-PC/EPSON Stylus CX8400 Series

Обратите внимание на то, что в URI допускаются пробелы, а знаки «\» следует заменять на «//».

Ошибка задания для печати client-error-document-format-not-supported

Нужно установить пакет foomatic и использовать драйвер foomatic.

Не работает /usr/lib/cups/backend/hp

В Шаблон:Ic замените:

 SystemGroup sys root

на

 SystemGroup lp root

Принтер Samsung не печатает некоторые документы

Бывает, что принтер Samsung прекрасно работает с Шаблон:Ic, но не печатает некоторые документы (файлы Inkscape с текстом) и даже сбоит. В качестве решения можно посоветовать использовать пакет Шаблон:AURШаблон:Broken package link (Русский) с добавлением модуля Шаблон:Ic в черный список (как было описано ранее).

Не отображается локальный USB-принтер

Если ваш usb-принтер не отображается — попробуйте заменить Шаблон:Pkg на Шаблон:AURШаблон:Broken package link (Русский) (пакет можно найти в AUR). Затем проверьте работоспособность сначала с загруженным модулем Шаблон:Ic, а затем, если не поможет, — с добавленным в черный список.

«Не удается получить список драйверов для принтеров»

Попробуйте удалить драйверы Foomatic.

Приложение

Альтернативные интерфейсы CUPS

В среде GNOME, вы можете конфингурировать ваш принтер с помощью system-config-printer-gnome. С помощью pacman можно установить этот пакет:

# pacman -S system-config-printer-gnome

Для нормальной работы system-config-printer понадобиться или запуск с правами администратора, или, если от обычного пользователя, то такому пользователю должно быть разрешено администрировать CUPS (если это так — выполните шаги 1-3)

  • 1. Создайте группу и внесите в нее нужного пользователя:
# groupadd lpadmin
# usermod -aG lpadmin <username>
  • 2. Добавьте «lpadmin» (без кавычек) в следующую строку файла Шаблон:Ic
SystemGroup sys root <insert here>
  • 3. Перезапустите cups, выйдите и снова войдите в систему (или перезагрузите компьютер)

Шаблон:Bc

Пользователи KDE могут изменять настройки из «Control Center» (kcontrol). Для получения дополнительной информации, обратитесь к документации вашего рабочего окружения (DE).

Также в AUR можно найти пакет gtklp

Виртуальный PDF-принтер

Существует прекрасный пакет — CUPS-PDF. Этот пакет позволяет настроить виртуальный принтер, генерирующий PDF-файлы из того, что отправлено на печать на этот принтер. Возможно этот пакет вам и не понадобится, но иногда он может быть очень полезен.

Созданные PDF-документы можно найти в Шаблон:Ic. Обычно, более удобно такие документы добавлять в домашнюю директорию пользователя. Настроить такое поведение несложно. В файле /etc/cups/cups-pdf.conf найдите и строку:

#Out /var/spool/cups-pdf/${USER}

и приведите ее к такому виду:

Out /home/${USER}

Установить этот пакет можно командой:

# pacman -S cups-pdf

После установки пакета, настройте PDF-принтер аналогично обычному принтеру, например с помощью веб-интерфейса. В Device (Оборудование) выберите — CUPS-PDF (Virtual PDF Printer); Make/Manufacturer (Марка/Производитель) выберите — Generic; Model/Driver (Модель/Драйвер) выберите — Generic postscript color printer или Generic Cups-PDF Printer. В качестве альтернативы, по этой ссылке можно найти другой PPD-файл.

Печать в postscript: тонкости использования виртуального CUPS-PDF-принтера

Для большинства приложений, таких как OpenOffice, печать в PDF не является проблемой; достаточно просто нажать кнопку. Для печати в postscript, потребуется выполнить небольшой дополнительный объем работ. CUPS-PDF (Виртуальный PDF-принтер) на самом деле создает postscript-файл, а затем уже с помощью утилиты ps2pdf, преобразовывает его в PDF. Для печати в postscript, необходимо сначала передать созданные CUPS-PDF postscript-файлы. Для этого в диалоге печати нужно выбрать вариант «print to file» («печатать в файл»). (выберите расширение для файла или .ps, или .eps). После того, как будет отмечен флажок «print to file» («печатать в файл»), введите имя файла и нажмите «print» («печать»).

Настройка виртуального CUPS-PDF-принтера
  1. Прочтите инструкция по настройке демона cups.
  2. Установите Шаблон:Pkg из [extra].
  3. Запустите менеджер печати cups: http://localhost:631 и выберите:
Administration -> Add Printer
Select CUPS-PDF (Virtual PDF), выберите марку и модель:
Make:	Generic
Driver:	Generic CUPS-PDF Printer

Теперь, для печати в postscript, в диалоговом окне печати установите «CUPS-PDF» в качестве принтера, установите флажок на «print to file» («печатать в файл»), нажмите печать, введите имя_файла.ps и кликните сохранить. Метод удобен при обработке факсов и т.д…

Другие источники драйверов для принтеров

Turboprint — проприетарный драйвер для многих моделей принтеров, которые до сих пор не поддерживаются в GNU/Linux (например Canon i*). Единственная проблема в том, что высококачественная печать будет либо с водяным знаком, либо за отдельную плату…

Дополнение

Список вебсайтов, которые могут быть вам полезны:

  • Official CUPS documentation on your computer http://localhost:631/documentation.html
  • Official CUPS Website — http://www.cups.org/
  • Linux Printing — http://www.linuxprinting.org/
  • Tips and Suggestions on common CUPS problems — http://home.nyc.rr.com/computertaijutsu/cups.html
  • Gentoo’s Printing Guide — http://www.gentoo.org/doc/en/printing-howto.xml
  • Arch Linux User Forums — https://bbs.archlinux.org/

Особые случаи

Дальнейшее описание посвящено специфическим проблемам и их решениям. Если вы сталкивались с какой-либо необычной работой принтера, пожалуйста, поместите решение проблемы здесь.

Принтеры с параллельным портом HP (hplip)

Шаблон:Note (Русский)

Если HP принтер подключен через параллельный порт, то потребуется пересобрать пакет hplip с опцией —enable-pp-build.
Для этого устанавливаем и обновляем ABS:

# pacman -S abs
# abs

Копируем необходимые файлы для сборки

# cp -r /var/abs/extra/hplip /tmp

Правим файл Шаблон:Ic и добавляем опцию —enable-pp-build для ./configure:

[...]
./configure --prefix=/usr 
            --enable-qt4 
            --enable-pp-build 
            --enable-foomatic-rip-hplip-install 
            --enable-foomatic-ppd-install 
            --enable-hpcups-install 
            --enable-cups-drv-install 
            --enable-hpijs-install 
            --enable-foomatic-drv-install 
            --enable-udev-acl-rules
[...]

Собираем и ставим пакет:

cd /tmp/hplip
makepkg -s
pacman -U hplip-3.10.6-1-i686.pkg.tar.xz

Далее принтер настраивается обычным путем через web-интерфейс CUPS http://localhost:631.

Если принтер правильно настроен для работы с hplip, то строка подключения в CUPS будет начинаться с hp:

hp:/par/HP_LaserJet_6L?device=/dev/parport0

Шаблон:Note (Русский)

Устанавливаем hplip (пересобирать пакет не надо, он уже собран с —enable-pp-build)

# pacman -S hplip

Далее запускаем

# hp-setup -i -a -x /dev/parport0

для автоматического добавления принтера в CUPS, либо добавляем «ручками» через веб-интерфейс http://localhost:631.

Печать не работает/прерывается на принтерах HP Deskjet 700

Проблема решается установкой фильтра pnm2ppa для принтеров HP Deskjet 700 series. Без этого задания на печать будут отменяться системой. PKGBUILD для pnm2ppa можно найти здесь: AUR.

Заставить работать HP LaserJet 1010

Мне для этого пришлось самому собрать ghostscript, потому что gs ESP в репозитории был версии 7.07 и имел некоторые ошибки, исправленные в ESP 8.15.1. Я никогда не пользовался пакетом ‘foomatic’ из репозитория. Я думаю что этот пакет устарел.

$ pacman -Qs cups a2ps psutils foo ghost
local/cups 1.1.23-3
    The CUPS Printing System
local/a2ps 4.13b-3
    a2ps is an Any to PostScript filter
local/psutils p17-3
    A set of postscript utilities.
local/foomatic-db 3.0.2-1
    Foomatic is a system for using free software printer drivers with common
    spoolers on Unix
local/foomatic-db-engine 3.0.2-1
    Foomatic is a system for using free software printer drivers with common
    spoolers on Unix
local/foomatic-db-ppd 3.0.2-1
    Foomatic is a system for using free software printer drivers with common
    spoolers on Unix
local/foomatic-filters 3.0.2-1
    Foomatic is a system for using free software printer drivers with common
    spoolers on Unix
local/espgs 8.15.1-1
    ESP Ghostscript

Также я был вынужден выставить LogLevel в /etc/cups/cupsd.conf в debug2 для того чтобы обнаружить отсутствие некоторых шрифтов «Nimbus». Затем я переименовал их и положил туда, куда мне подсказывал лог. Тут нужно привести хитрый способ поиска в google, например т.к. шрифты являются проприетарными (уверен что в windows это по умолчанию). В любом случае, после скачивания шрифтов (около 7) и помещения их в правильную директорию печать заработала.

До этого я получал ошибки описанные здесь: ‘Unsupport PCL’ и т.п…

Уверен что это работало бы и с gs ESP 7.07 (в репозитории) если бы у меня раньше хватило ума включить DebugLevel2 :-/

Обновление: да, это работает… может быть эта информация окажется полезной для кого-либо ещё… извините за неудобства.

Заставить работать HP LaserJet 1020 (1018 и похожие)

После множества попыток связанных с hplib и gutenprint я наконец нашёл решение как заставить мой HP Laserjet 1020 печатать.

Первым делом вам надо уставить cups и ghostscript. Затем пройдите по ссылке
http://www.linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_1020 на страницу драйверов печати http://foo2zjs.rkkda.com/ и следуйте интрукциям по установке. Залогиньтесь как root. После скачивания и распаковки архива переместитесь в распакованную директорию foo2zjs. Теперь вы можете делать всё по оригинальной инструкции по установке, лишь с небольшой модификацией для изменения userid пользователя для печати:

 $ make
 $ ./getweb 1020
 

Откройте Makefile

$ nano Makefile

найдите там строку

# LPuid=-olp

и модифицируйте её таки образом:

# LPuid=-oroot

дальше выполняйте сборку

 $ make install
 $ make install-hotplug
 $ make cups

Сейчас в этих действиях нет необходимости. Теперь строка LPuid=-oroot стоит по умолчанию.

Вы также можете взять пакет foo2zjs из AUR и модифицировать PKGBUILD: измените строку

./getweb all

на

./getweb 1020

(или, если устанавливаете другой принтер, измените эту строку на что, что вам нужно).

Последним шагом является добавление и конфигурирование принтера в CUPS manager. Принтер должен определиться автоматически. Это отлично работает для root’а и всех ползователей. Когда ОС загружается, принтер инициализируется и сигнализирует о том, что он работает.
Так же строку

./getweb 1020

можно изменять на необходимые 1018 (для работы принтера Hewlett-Packard 1018) и т.д.

./getweb 1018

Список поддерживаемы моделей тут: http://foo2zjs.rkkda.com/

HPLIP

Больше нет необходимости устанавливать драйвер foo2zjs для работы принтера HP LJ 1018/1020, поскольку в последних версиях hplip он работает «из коробки». Вам следует установить hplip, gnomesu или gksu, qt и pyqt4, после чего запустить

sudo hp-setup

CUPS-сервер должен быть запущен. Мастер установки hplip автоматически установит ваш принтер. После следует установить плагин к принтеру. Для этого запустить от пользователя программу hp-toolbox и выберите «install required plugin». Плагин автоматически загрузится с сайта производителя.
Никаких дополнительных действий (вроде внесения usblp и MODULES_BLACKLIST) выполнять не надо.

Выполнение сервисных операций на принтерах Epson

Escputil

Здесь объясняется как выполнить некоторые вспомогательные операции, такие как очистка и проверка сопел на принтерах Epson. Для этого мы будем использовать утилиту escputil, которая входит в состав пакета gutenprint.

Man-страница этой утилиты («man escputil») содержит очень полезную информацию, но не включает в себя необходимых сведений о том как идентифицировать ваш принтер. Для этого могут быть использованы два параметра. Первый из них —printer; он принимает имя принтера, которое вы использовали при его конфигурировании. Другой &mdash —raw-device. Эта опция примаетпуть к устройству. Если ваш принтер подключен к последовательному порту, то устройство будет выглядеть примерно как «/dev/lp0». Если же ваш принтер подключен к USB, по устройство будет «/dev/usb/lp0». Если у вас более одного принтера они будут иметь имена файлов устройств «lp1», «lp2» и т.д.

  • очистка печатающей головки:
escputil -u --clean-head
  • проверка сопел:
escputil -u --nozzle-check

Если вам необходимо произвести операцию, которая требует двухстороннего общения с принтером вы должны использовать спецификацию «—raw-device», а ваш пользователь должен состоять в группе «lp» или быть root’ом.

  • получение внутреннего имени принтера:
  sudo escputil --raw-device=/dev/usb/lp0 --identify
  • получение уровня чернил:
  sudo escputil --raw-device=/dev/usb/lp0 --ink-level

Mtink

Это монитор состояния принтера, который позволяет получить количество оставшихся чернил, печатать тестовые страницы, сбрасывать принтер и очищать сопла. Он использует интуитивный графический интерфейс пользователя. Пакет можно скачать отсюда.

См. также

  • Официальная документация CUPS documentation, локальная установка
  • Официальный Веб-сайт CUPS
  • Linux Printing, Linux Foundation
  • Руководство по печати в Gentoo, Источники Документации Gentoo
  • Форум пользователей Arch Linux
  • Простая установка принтеров HP

Источник

Источник https://wiki.archlinux.org/index.php/CUPS_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

сервер samba, настройка файлового сервераДоброго времени, гости и читатели блога! Сегодня продолжу рассматривать возможности пакета SAMBA. Перед прочтением данного материала я бы посоветовал ознакомиться со статьями основы SAMBA и CUPS. Итак, из прошлых статей мы знаем как установить пакет samba. После установки, файлы пакета могут располагаться в следующих каталогах:

  • Демоны и утилиты помещаются в каталог: /usr/sbin
  • Файлы настройки в: /etc/samba/
  • Файлы журналов в: /var/log/samba/
  • Некоторые управляющие файлы помещаются в: /var/lib/samba

конечно, возможны некоторые отклонения, например в старых версиях SAMBA настройки хранятся в /etc, а логи в /var/log, при сборке из исходников, samba устанавливается в /usr/local/samba. Т.о. можно убедиться, что SAMBA у нас установлена.

Настройка SAMBA

Настройка SAMBA заключается в редактировании конфигурационного файла /etc/samba/smb.conf. Структура конфига самба схожа с форматом файлов .ini в Windows и представляет собой записи вида:

[stanza0]
   key0=value0
   key1=value1
[stanza1]
   key0=value0
   key1=value1

То есть параметры, они же ключи (key0, key1 и т.д.) собраны в группы, которые называют стансами или строфами (stanza0, stanza1 и т.д.), название которых заключены в фигурные скобки. Каждый каталог или принтер, предоставляемый в общий доступ в Windows называется разделяемым ресурсом (share) или сервисом (service), или в простой терминологии — шАра :) Каждый ресурс можно представить в Linux отдельным разделом строфой с особым именем и набором параметров. SAMBA понимает громадное количество параметров, с которыми можно ознакомиться тут man smb.conf. Я опишу основные. Существует так же специальный раздел [global], хранящий параметры по умолчанию ко всем сервисам и к серверу в целом. Для начала, я бы посоветовал скопировать оригинальный файл (т.к. в нем большое количество комментариев, с которыми на досуге можно ознакомиться) и создать (например, с помощью редактора vi) на его месте новый, со следующими параметрами:

samba-server:~# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
samba-server:~# cat /etc/samba/smb.conf
[global]
 workgroup = WORKGROUP
 netbios name = SAMBA
 printing = CUPS
 wins support = yes
[homes]
 browsable = no
 read only = no
[printers]
 printable = yes
 printing = CUPS
 path = /var/spool/samba
[data]
 path = /export/data
 read only = no
 map archive = no

Давайте разберем параметры и разделы по порядку:

[global]

Как уже говорилось — содержит параметры, настраивающие пакет SAMBA в целом. Параметр workgroup определяет имя рабочей группы, к которой принадлежит сервер samba. Соответственно, если есть необходимость — нужно переименовать группу на подходящую Вам. Данный параметр необязательный, если его не указывать, то сервер будет принадлежать группе WORKGROUP. Далее, параметр netbios name, который указывает на имя сервера, которое будет отображаться в сетевом окружении Windows. Данный параметр так же необязательный, если его не указывать, то сервер будет отображаться под именем локального хоста (которое можно узнать командой echo $HOSTNAME). Тут необходимо сделать акцент на том, что указывать значение localhost в данном параметре неприемлемо, т.к. данное имя на машинах Wondows всегда будет разрешаться в адрес 127.0.0.1. Так же, в данном станзе можно указать параметр encrypt passwords, который указывает SAMBA шифровать пароли. Это необходимо для клиентов с ОС версией выше windows 98. Если используется версия SAMBA выше 3.0, то данный параметр указывать не обязательно, т.к. он используется по умолчанию. Параметр wins support требует от samba работать в качестве WINS сервера, это не обязательно, но способствует более эффективной работе, о чем я говорил в прошлой статье о SAMBA. Если Ваш Samba сервер использует несколько сетевых интерфейсов, то можно явно указать, на каком из интерфейсов слушать подключения с помощью параметра: interfaces = 192.168.1.1/24.

[homes]

Раздел [homes] определяет виртуальный сервис, указывая SAMBA автоматически расшаривать домашний каталог пользователя. То есть, при подключении к серверу SAMBA производится поиск имени пользователя в файле /etc/passwd и если в локальной системе есть учетная запись пользователя и она имеет домашний каталог, то данный каталог раcшаривается для подключенного пользователя. Параметр read only = no указывает предоставлять домашние каталоги в режиме чтения-записи. Параметр browsable=no указывает не отображать каталог homes в списке расшаренных ресурсов (но домашний каталог подключенного пользователя будет виден пользователю). Данное разрешение учитывает права доступа в Linux, то есть если файл в расшаренной папке с правами только на чтение, то он не станет доступным на запись. Иначе сказав: сервер не предоставит доступа больше чем UNIX система. В данной директории так же полезно указать параметр path = /path/to/homedir/%S, если вы хотите разделить системные домашние папки от расшариваемых.

[printers]

Раздел [printers], в  SAMBA, хранит настройки печати, то есть SAMBA получает указание сделать принтеры, подключенные к системе Linux, доступными клиентам сети. Точнее будет сказать, что данный раздел определяет доступ ко всем принтерам, указанным в файле /etc/printcap. Разделы, они же строфы, которые определяют совместно используемый принтер, включая раздел [printers] должен содержать строку printable = yes. Для доступа к принтерам, необходимо прописать в файле /etc/printcap настройки доступа к принтеру. Параметр printing = CUPS указывает использовать систему печати CUPS (возможно так же указать более старые системы печати, такие как BSD и LPRNG). Для того чтобы использовать свой файл printcap, необходимо его создать и указать в виде параметра printcap = /path/to/printcap. Параметр path = /var/spool/samba указывает, где будет размещен спулер (каталог временного хранилища очереди печати). Для данного каталога необходим установленный StickyBit.

[data]

Данный раздел приведен в качестве примера, как открыть совместный доступ к каталогу. Следуя данному примеру можно расшарить сколько угодно каталогов, указав для каждого свое имя раздела и значение path. Название раздела используется в качестве имени разделяемого ресурса и отображается клиентам Windows, как папка с таким именем. Параметр, отвечающий за функциональность, описанную ниже — map archive — установлен в no.

SAMBA не всегда выполняет задачу — заставить файловую систему UNIX выглядеть как файловая система Windows для клиентов Windows. Одно из различий между файловыми системами Windows и UNIX в том, что в Windows существует атрибут archive, с помощью которого программы резервного копирования определяют, был ли файл модифицирован с момента последнего копирования. В UNIX прямого аналога данного атрибута нет. SAMBA моделирует данный атрибут архивации с помощью бита исполнения для владельца файла UNIX. Данный костыль позволяет программам резервного копирования Windows корректно производить инкрементальное резервное копирование с ресурсов SAMBA. Но есть побочный эффект — файлы с данным атрибутом выглядят в Linux как исполняемые. В конфиге SAMBA в странсе [data] параметр, отвечающий за данную функцию называется map archive.

Хочу отметить кое-какие характеристики при разборе файла smb.conf:

  • Имена разделов и параметров не чувствительны к регистру.
  • Только первый символ равенства значимый.
  • Пробелы до и после первого символа равенства игнорируются.
  • Начальные, концевые и внутренние пробелы некорректны в названиях секций и именах параметров.
  • Начальные и концевые пробелы в значении параметров игнорируются.
  • Внутренний пробел в значении параметра сохраняется дословно.
  • Все строки начинающиеся с символа «;» с запятой или «#» игнорируются как строки содержащие только пробел (комментируются).
  • Все строки оканчивающиеся символом «» продолжаются на следующей строке в стиле UNIX.
  • Значения после символа равенства в параметрах содержат строку (без кавычек) или логическое значение, как то да/нет, 0/1 или истина/ложь.
  • Регистр не имеет значения в логических значениях, но сохраняется в строковых значениях.

После внесения изменений в конфигурационный файл, необходимо проверить его на корректность. Для этого есть команда testparm. Данная программа проверяет наличие ошибок и несовместимостей в конфигурационном файле SAMBA. Очень хорошая практика — документировать конфигурационные файлы. Но данная практика вступает в противоречие со способом, которым работает самба. Конфигурационный файл очень часто перечитывается демоном smbd, т.о. чем больше строк в файле и чем больше его объем, тем больше это сказывается на производительности системы. Для решения данной проблемы необходимо создать «редактируемый» конфиг, в котором все описано как нужно и из редактируемого файла создать рабочий с помощью команды:

samba-server: ~# testparam -s /etc/samba/smb.conf.edit > /etc/samba/smb.conf

Из редактируемого файла будут удалены все комментарии и будут находится только те параметры, которые отличаются от значения по умолчанию. Так же, стоит отметить, что из файла будут удалены все макросы, которые необходимо будет восстановить вручную. Например, строка include=/etc/samba/%m.conf превратиться в строку include=/etc/samba/.conf.

После запуска проверки параметров командой testparm возможно вы увидите дамп конфига, в котором отсутствуют некоторые наши параметры. Это говорит о том, что данные параметры совпадают с параметрами Samba по-умолчанию.

Запуск сервера SAMBA

Основу Samba составляют три демона, два из которых необходимы всегда:

nmbd

Демон nmbd отвечает за регистрацию всех имен и обслуживание запросов их разрешения. Обеспечивает основной механизм, обеспечивающий возможность обзора сети. Обрабатывает все протоколы на базе UDP. Демон nmbd должен запускаться первым.

smbd

Демон smbd обслуживает все соединения на базе протоколов TCP/IP к сервисам доступа к файлам и к принтерам. Кроме этого, демон заведует процессом локальной аутентификации. Должен запускаться сразу после nmbd.

winbindd

Демон winbindd должен запускаться, когда сервер Samba выступает в роли члена домена Win NT4 или Active Directory. Запуск так же необходим, когда Samba вступает в доверительные отношения с другим доменом. Демон winbindd проверяет файл smb.conf на наличие параметров idmap id и idmap gid, которые затем будут использоваться для отображения идентификаторов системы безопасности Windows (SID).  Указываемый в этих параметрах диапазон не должен находится в противоречии с уже используемыми в системе идентификаторами (начало значений пользовательских ID указывается в файле /etc/login.defs). Если указанные параметры не заданы, то демон winbindd не будет выполнять отображение Windows SID, а аутентификация будет выполняться только на уровне аутентификации пользователей.

Запуск данных демонов возможен как в standealone режиме, так и с помощью супердемона xinetd. В первом случае службы запущены постоянно и прослушивают сетевой интерфейс, во втором, службы запускаются с помощью демона inetd/xinetd и отвечают на запросы только при поступлении запроса от клиента. Для запуска Samba с помощью  супердемона необходимо добавить описание запуска в конфигурационный файл /etc/inetd.conf для inetd или /etc/xinetd.conf для xinetd. Супердемону xinetd обязательно посвящу отдельную тему и на сегодня с xinetd остановим обсуждение.

Запуск демонов Samba

Об уровнях выполнения, можно почитать тут. Данный демон должен быть разрешен для запуска на необходимых уровнях выполнения ОС (команда в RedHat-подобных дистрибутивах — /sbin/chkconfig samba on, в Debian — /usr/sbin/update-rc.d samba defaults). Хотя я и не делал акцент на сборку Samba из исходников, но описание запуска все же затрону для общего понимания. Итак, после сборки Samba, в двоичном пакете необходимо отыскать сценарий, который будет запускать и останавливать демоны в необходимом порядке. При этом необходимо проверить сценарий на корректность имен каталогов, где лежит исполняемый файл демона. Сценарий необходимо сделать исполняемым с помощью команды chmod +x,  положить в каталог /etc/init.d/ и создать соответствующие ссылки на скрипт в каталогах уровней запуска Linux (/etc/rc*.d), в которых необходим запуск демона и соответственно — остановка.

Запуск демона из bash вручную производится командой:

samba-server: ~# /etc/init.d/samba start

соответственно, для остановки заменить start на stop, для перезапуска restart.

Проверка Samba

После установки и настройки сервера, естественно, необходимо проверить работоспособность сервера. Для этого необходимо воспользоваться утилитой smbclient, чтобы получить список разделяемых ресурсов:

samba-server:~# smbclient -L localhost -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]

 Sharename       Type      Comment
 ---------       ----      -------
 data            Disk
 IPC$            IPC       IPC Service (Samba 3.5.6)
 it_216          Printer   Printer
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]

 Server               Comment
 ---------            -------
 HOST
 SAMBA                Samba 3.5.6

 Workgroup            Master
 ---------            -------
 WORKGROUP            SAMBA

Полученные результаты показывают, что сервер SAMBA допускает возможность анонимного подключения. В данном случае подключившийся пользователь получает права доступа гостевой учетной записи, которая обычно соответствует учетной записи пользователя nobody в файле /etc/passwd. Если на данном шаге получить информацию не удалось, то это означает, что трафик Samba блокируется фаерволом, либо гостевая учетка не была найдена в файле /etc/passwd.

Так же, в диагностике отлично помогает утилита smbstatus, которая отображает текущих подключенных клиентов.

Добавление пользователей

В нашей конфигурации клиенты должны быть аутентифицированы Samba, чтобы получить доступ к разделяемым ресурсам. От клиента требуется указать имя и пароль, которые имеются на хосте Linux, а так же, если в smb.conf есть раздел [homes], то у пользователя должен быть домашний каталог. Об управлении пользователями в Linux можно почитать тут. Обычно, добавление пользователей в Linux производится командой:

samba-server: ~# useradd -m username

Кроме того, у Samba есть свой файл паролей /etc/samba/smbpasswd, хранящий Microsoft Windows-совместимые зашифрованные пароли. Для каждого пользователя необходимо выполнить команду smbpasswd, чтобы добавить учетную запись Samba для этого пользователя. При этом, имя и пароль должны соответствовать тем, которые имеются у учетных записей Linux:

samba-server:~# smbpasswd -a username
New SMB password:
Retype new SMB password:

Создание простейшего файлового сервера и сервера печати с полным доступом всем без авторизации (абсолютная файлопомойка)

Итак, давайте рассмотрим простейший пример организации файловой помойки, когда нет необходимости запрашивать имя пользователя и пароль для доступа к серверу. Давайте предположим, что есть какой-то каталог, например /tmp/obmen, а так же принтеры, подключенные к локальной системе, к которым необходим общий доступ, при этом используется система печати CUPS.

Для начала, необходимо понимание, как организовать гостевой доступ к серверу samba. В разделе глобальных параметров [global] есть такой параметр как security, который отвечает за порядок доступа к расшаренным ресурсам. Данный параметр определяет режим безопасности для доступа к серверу и может принимать следующие значения:

USER

Значение USER используется по-умолчанию (в версиях Samba от 3.0 и выше), даже если параметр не задан в smb.conf. При этом параметре, клиент должен сначала произвести вход, с существующим именем пользователя и паролем Linux.

SHARE

Значение SHARE в старых версиях Samba использовалось по-умолчанию. При подключении к ресурсу с параметром security = SHARE клиентам не нужно регистрироваться с использованием действительного имени пользователя и пароля. Вместо этого, клиенты посылают информацию аутентификации (пароли) на конкретный ресурс, в тот момент, когда хотят получить доступ к этому ресурсу. Заметьте, что демон smbd ВСЕГДА использует реального пользователя UNIX, когда обслуживает клиента, даже если установлено security = SHARE. Т.к. в режиме SHARE от пользователя не требуется посыла его имени, smbd использует несколько приемов для определения пользователя UNIX.

Список предполагаемых имен пользователей UNIX и соответствующих им паролей определяется следующим образом:

  • Если установлен параметр guest only, тогда все остальные сценарии пропускаются и используется только имя гостевой учетки (guest account).
  • Если имя пользователя послано вместе с запросом на установление соединения после сопоставления (см. параметр username map), добавляется в список.
  • Если клиент выполнял запрос logon (вызов SessionSetup SMB), тогда имя пользователя, использовавшееся в этом вызове будет добавлено в список.
  • Если параметр guest only не установлен, тогда этот список пользователей обрабатывается с соответствующими паролями. Первый пользователь, пароль которого совпадет с реальным будет использован в качестве действующего пользователя UNIX.
  • Если параметр guest only установлен или не найдено подходящего имени пользователя, тогда, если Samba разрешено «принимать гостей» (usershare allow guests), будет использоваться гостевая учетка, в противном случае доступ будет запрещен.

Существуют так же такие значения параметра security, как SERVER, ADS и DOMAIN, которые используют удаленную аутентификацию. Но в данной статье я не буду затрагивать данные параметры.

Итак, из изложенного становиться понятно, что для гостевого доступа к серверу необходимо использовать параметр security = SHAREЧтобы не вникать в схему работы сопоставления пользователей запрашивающих доступ к ресурсам samba и локальных системных пользователей linux, предлагаю пойти по пути первого шага и задать параметр guest only.

При этом, чтобы система знала, с кем ассоциировать гостевую учетную запись, то есть с какой учетной записью UNIX ассоциировать неизвестного подключенного клиента, необходимо указать параметр guest account, равный одной из системной учетной записи Linux. Естественно, данная учетная запись Linux должна иметь необходимый доступ к разделяемым ресурсам, чтобы не возникло вопросов с удалением/добавлением/изменением файлов. Давайте взглянем на рабочий файл файлопомойки:

samba-server:~# cat /etc/samba/smb.conf
[global]
 netbios name = SAMBA
 security = SHARE
 guest account = dostup
 wins support = Yes
[printers]
 path = /var/spool/samba
 guest only = Yes
 read only = No
 printable = Yes
 browseable = No
[obmennik]
 path = /tmp/obmen
 guest only = Yes
 force user = dostup
 force group = dostup
 read only = No
 create mask = 0777
 directory mask = 0777
 guest only = Yes

Как видно, в нашем конфиге появилось несколько уже известных нам параметров и параметров, о которых мы не говорили… Итак по порядку: параметр guest account задает имя учетной записи Linux, с помощью которой анонимные пользователи будут получать доступ к разделяемым ресурсам. Данный пользователь (в нашем случае — dostup) должен  иметь права на чтение и запись в каталог, который будет указан в разделяемом ресурсе (в нашем примере — раздел [obmennik] и каталог /tmp/obmen). Следующий параметр guest only — разрешает только гостевые соединения к общему ресурсу, то есть для сетевого ресурса нет необходимости указывать пароль. Далее появились 2 параметра — force user и force group, которые определяют владельца и группу Linux, с правами которых в разделяемом ресурсе будут создаваться файлы и каталоги при гостевом доступе. Параметры create mask и directory mask, не трудно догадаться, что это маски прав доступа для создания файлов. (Без данных параметров у меня на Debian 6 и samba присваивались права rwxr—r— на файлы в подкаталогах расшаренного ресурса, в результате чего было невозможно удалить созданные файлы.) Вот собственно и весь конфиг.

Примечание: указывать параметр guest account нет особой необходимости. При установке samba через пакетный менеджер, по умолчанию уже будет задан некий пользователь (скорей всего nobody). Узнать, какой пользователь задан по умолчанию можно командой /usr/bin/testparm -sv /etc/samba/smb.conf | grep acco. При этом, необходимо учитывать права доступа заданного пользователя на файловую систему.

Автоматическая загрузка драйвера принтера

Давайте рассмотрим возможность упрощения своей работы за счет хранения драйверов принтера на сервере и возможность автоматической установки драйвера при подключении принтера. Но давайте сначала немного теории.

Итак, в Linux есть два способа сделать системный принтер доступным для совместного использования клиентами Windows.  Первый — в режиме неформатированных данных (raw mode), второй — интеллектуальный режим (smart mode). Давайте рассмотрим оба способа.

режим неформатированных данных (raw mode)

В raw mode система печати просто передает на принтер полученное задание для печати без какой-либо обработки. Для работы CUPS в режиме неформатированных данных, необходимо указать в конфиге параметр cups option — raw. Если данный параметр отсутствует и CUPS получит задание для печати, которое содержит последовательность фильтров не известное системе печати, то задание может быть удалено так и не увидев бумагу. Чтобы исправить данную ситуацию, необходимо отредактировать файлы /etc/cups/mime.types и /etc/cups/mime.convs и раскомментировать строку application/octet-stream. Данное действие позволит CUPS отправлять на принтер задания с неизвестными последовательностями символов.

Данный режим требует установки корректного драйвера на все клиенты Windows. То есть клиент Windows должен сам выполнить обработку задания печати и подготовить к непосредственной передаче на принтер.

интеллектуальный режим (smart mode)

Для режима smart mode необходимо установить на сервере CUPS локальную систему фильтрации. В данном режиме, сервер будет пытаться интерпретировать тип файла, отправленный на принтер, и затем фильтровать данные, автоматически выбирая преобразование соответствующие принтеру. При работе CUPS в интеллектуальном режиме, на клиенты Windows допускается использовать драйвер CUPS Post Script. Данный режим мы рассматривать не будем.

Итак, режим RAW. Давайте подредактируем конфигурационный файл /etc/samba/smb.conf до следующего вида и рассмотрим его параметры:

samba-server:# cat /etc/samba/smb.conf
[global]
 workgroup = WORKGROUP
 printing = CUPS
 wins support = yes
 netbios name = SAMBA
 security = SHARE
 guest account = dostup
 cups options = raw
 show add printer wizard = yes
 printer admin = root, dostup
[printers]
 comment = Очередь печати SMB
 printable = yes
 path = /var/spool/samba
 guest only = Yes
 guest ok = yes
 read only = No
[print$]
 comment = Драйверы принтера
 path = /var/lib/samba/drivers
 guest only = Yes
 guest ok = yes
 read only = No
 create mask = 0777
 directory mask = 0777
 force user = dostup
 force group = dostup
 write list = root, dostup
[obmennik]
 path = /share/obmen
 guest only = Yes
 guest ok = yes
 read only = No
 create mask = 0777
 directory mask = 0777
 force user = dostup
 force group = dostup

общий ресурс драйверов принтеров WindowsУ нас добавились следующие пункты: параметр cups options, который определяет режим raw и раздел [print$], аналогичный общему ресурсу Windows (\hostprint$), в котором хранятся файлы драйверов, параметр printer admin задает пользователей Linux, которым разрешено иметь полный доступ для управления свойствами расшаренных принтеров, а так же параметр write list, задающий список пользователей Linux, имеющих право добавлять драйвер в ресурс [print$]. Для корректной работы ресурса [print$], нам необходимо создать указанный в параметре path каталог со структурой аналогичной Windows, для этого необходимо выполнить следующее:

samba-server:~# mkdir /var/lib/samba/drivers
samba-server:~# cd /var/lib/samba/
samba-server:/var/lib/samba# mkdir -p drivers/{W32ALPHA,W32MIPS,W32PPC}
samba-server:/var/lib/samba# mkdir -p drivers/{W32X86/{2,3},WIN40,COLOR,IA64,x64}
samba-server:/var/lib/samba# chown -R dostup:root drivers
samba-server:/var/lib/samba# chmod -R u+rwx,g+rwx,o+rx-w drivers

Далее, необходимо установить и настроить локальные принтеры в систему печати. Для загрузки драйверов в SAMBA, после установки принтеров, необходимо выполнить следующие шаги (шаги рассматриваются на ОС Windows XP):

  1. Загрузить Windows и залогинется.
  2. отображение каталога принетры и факсыВ сетевом окружении найти машину, которую мы планируем использовать для общего доступа и как сервер печати. (в нашем случае — samba). При этом, должен отобразиться список общих ресурсов и расшаренных принтеров, а так же специальная папка «Принтеры и факсы«. Если данного каталога нет, то скорее всего удален куст реестра, отвечающий за его отображение. Для восстановления, необходимо скачать файл и из архива импортировать в реестр его параметры.
  3. В данном каталоге будет список принтеров Samba. Из списка выбираем правой кнопкой необходимый нам принтер (тот, для которого хотим организовать загрузку драйверов), нажимаем «Свойства«. При этом появиться предложение на установку драйверов данного принтера — НЕ соглашаемся. Далее появиться сообщение «Сервер для данного принтера не имеет требуемого установленного драйвера принтера сервер печати….» — нажимаем Отмена.
  4. копирование драйвера принтера на сервер самбаПереходим на вкладку «Дополнительно» и напротив поля «Драйвер» нажимаем «Сменить…«. При этом запуститься «Мастер установки драйверов принтера на «имя_сервера_печати»», нажимаем Далее и отвечаем на вопросы местера. На втором шаге, драйвер желательно устанавливать свежий, скачанный с сайта производителя принтера. После выбора драйвера и нажатия кнопки «Готово» начнется копирование драйвера на сервер-samba!!!
  5. После данной процедуры при установке принтера на клиента Windows, драйвер должен устанавливаться автоматически.

Фух, тяжелая получилась статься и немного размытая. Надеюсь, что будет понятно.

Резюме.

В сегодняшней статье я продолжил первую часть изучения пакета SAMBA. Были рассмотрены примеры работы абсолютной файлопомойки и сервера печати на Linux. А так же, описан процесс настройки сервера печати на SAMBA и CUPS с автоматической загрузкой драйверов. Про самба можно писать тома книг, всех моментов не затронешь, но надеюсь, что полученных знаний будет вполне достаточно для быстрого старта и дальнейшего развития. С радостью отвечу на Ваши комментарии.

Upd 2012.05.08: дополнил раздел с файлопомойкой

С Уважением, Mc.Sim!


Теги: CUPS, Debian, Linux, Microsoft Windows, SAMBA, основы

Понравилась статья? Поделить с друзьями:
  • Принтскрин выбранной области в windows 10
  • Принтер перенаправлено 2 как удалить windows 10
  • Принтер лазерный hp laserjet 1010 драйвер для windows 10
  • Принт сервер linux в домене windows
  • Принтскрин в windows 10 где находится