как расшарить принтер на линуксе
Как расшарить принтер по сети в Ubuntu (через IPP)
Самый распространенный способ расшарить принтер по сети в Ubuntu Linux заключается в использовании Samba. Например в Ubuntu 12.04, при установке локального принтера он автоматически делается общим сетевым принтером через Samba (конечно если перед этим была установлена служба Samba).
Примечание. Samba это linux-сервер который воссоздает сетевую среду Windows, позволяя разделять сетевые ресурсы с компьютерами под управлением Windows. При этом компьютеры Windows «видят» компьютеры Linux так будто это тоже компьютеры Windows. Samba позволяет разделять по сети файлы и принтеры.
В этой статье будет описано как настроить сетевой принтер в Ubuntu 12.04. Есть несколько протоколов сетевой печати, один из них IPP (Internet Printing Protocol). Этот протокол дает возможность печати через сетевые протоколы TCP/IP. Хотя он называется «Печатный протокол Интернет», доступ к принтеру через него возможен и через локальную сеть, поскольку в ней используется те же протоколы TCP/IP. С технической точки зрения нет разницы между Интернет и локальной сетью.
Общий доступ к принтеру в Ubuntu Linux (через IPP)
Шаг первый
Естественно, первое что нужно сделать это установить и настроить локальный принтер на том компьютере к которому он подключен. Обычно, в Ubuntu, это делается автоматически, через некоторое время после того, как вы воткнули принтер в USB разъем и включили его. После подключения локального принтера нужно проверить его работу. И уже после этого расшаривать принтер по сети.
Шаг второй
Это нужно сделать на том компьютере к которому принтер подключен локально! Это будет компьютер-сервер.
Шаг третий
Шаг четвертый
Подключение принтера по сети, на компьютере-клиенте. Выполняется через стандартный GUI интерфейс, для GNOME это апплет «Печать» (Printing). Нажимаете кнопку добавить принтер, затем в диалоговом окне выбираете «Найти сетевой принтер», вводите IP адрес компьютера-сервера и нажимаете кнопку «Найти»:
В результате будет найден принтер (или несколько принтеров) выделяете его и жмете кнопку «Вперед»:
После установки сетевого принтера нужно проверить его работу.
IPP через локальную сеть
Общий (сетевой) доступ к принтеру через IPP имеет плюсы в сравнении с доступом через Samba:
При использовании IPP через локальную сеть нужно обеспечить чтобы компьютер-сервер имел постоянный IP адрес. Если сетевые настройки раздаются через DHCP сервер (очень распространенный вариант роутер с DHCP сервером), тогда в настройках DHCP сервера нужно указать постоянный IP адрес для компьютера-сервера (через MAC адрес).
Если доступа к DHCP серверу нет, тогда можно указать ручные настройки для сетевой карты на компьютере-сервере.
Как расшарить принтер через Интернет
Для того, чтобы этот принтер был доступен через Интернет, необходимо чтобы компьютер-сервер имел «прямой» IP адрес. То есть должен быть подключен к Интернет не через шлюз. Проверить это просто:
Если адреса одинаковые, значит адрес «прямой». Если адреса разные значит вы подключены через шлюз (роутер). Если вы подключены к Интернет через собственный роутер, тогда IP адрес нужно смотреть не на компьютере, а на этом роутере. Если вы подключены к Интернет через роутер и ваш роутер имеет «прямой» IP адрес, тогда в настройках роутера нужно сделать «проброс порта» (port forwarding) для TCP порта 631.
Если IP адрес вашего компьютера или роутера не «прямой», тогда печатать через Интернет не получится.
Даже небольшая сумма может помочь написанию новых статей 🙂
Или поделитесь ссылкой на эту статью со своими друзьями.
Как расшарить принтер в Linux?
Кстати, расшаривал принтер через микро-компьютер OrangePi – anonymous 5 лет назад |
Спасибо! Помогло! – anonymous 5 лет назад |
7 ответов
Чтобы расшарить принтер на linux, идём на следующий адрес с помощью любого браузера (порт 631):
Шаг1. Открыть общий доступ к принтеру в Ubuntu Linux (через IPP)
Идём на адрес http://localhost:631/, открываем вкладку Администрирование, установить чекбокс Разрешить совместный доступ к принтерам, подключенным к этой системе
Компьютер с непосредственно подключенным (и уже расшаренным) принтером назовём «сервер«. Понадобится IP сервера, который можно узнать командой ifconfig
Шаг 2. Подключение share-принтера на Linux-клиенте.
Если общий принтер на linux, то для подключения принтера на клиенте Linux скорее всего будет достаточно в настройках апплета «Печать» выбрать одно из: новый принтер, найти сетевой принтер, сетевой адрес и т.д., ввести ip сервера и нажать поиск. Принтер будет найден и подключен автоматически. Если вдруг по ip не удалось найти принтер, то проделать шаг 3 как для Windows-клиента.
Шаг 3. Подключение share-принтера на Windows-клиенте.
Для Linux тоже работает. Открываем в браузере настройки службы CUPS, указав ip сервера, например:
http://192.168.0.106:631/printers,
Если компьютер виден в сети, то откроется страница со списком принтеров:
Общий принтер в локальной сети на Linux
Использование одного общего принтера в сети из нескольких компьютеров давно стало обычным явлением. Эта задача свободно решается как в сетях с операционной системой Windows, так и с Linux. Ниже будет рассмотрен пример статьи, которой описана настройка сети, состоящей из машин под управлением Linux, к одной из которых подключен принтер.
Итак, исходные данные:
Считаем, что cups уже установлен и принтер подключен к соответствующему компьютеру.
Для начала на компьютере, к которому подключен принтер, нужно браузером зайти на адрес http://127.0.0.1:631 (Это веб-интерфейс сервера печати cups (Common Unix Print System)) и настроить принтер. В качестве имени принтера используем «Default_Printer». После этого заходим в свойства принтера и жмём кнопку «Publish Printer». Если её там нет значит принтер уже итак является общим.
Далее открываем в редакторе файл /etc/cups/cupsd.conf и рядом со строкой:
И перезапускаем cups:
Теперь cups будет слушать не только localhost, но и локальную сеть. Убедиться в этом можно командой:
Вывод будет выглядеть примерно вот так:
Затем снова открываем в редакторе файл /etc/cups/cupsd.conf и секцию:
Нужно привести к виду:
И снова перезапустить cups:
На этом настройке компьютера с подключенным принтером заканчивается. Переходим к настройке остальных компьютеров. Здесь настройка много проще: достаточно привести файл /etc/cups/printer.conf к виду:
И перезапустить cups.
Всё! Можно пользоваться.
Основным преимуществом такого подхода является простота замены принтера (в случае необходимости), поскольку при смене принтера достаточно дать новому принтеру в cups такое же имя, какое было у старого и тогда даже не придётся менять настройки на других компьютерах.
Расшаривание принтера в Ubuntu для Windows и наоборот
Расшариваем в Убунту для Виндовс СПОСОБ 1
В Ubuntu проделываем следующее:
Заходим в Система — Администрирование — Печать…
Затем в Сервер — Параметры
Отмечаем галочкой «Публиковать общие принтеры, подключенные к этой системе»
В Windows проделываем следующее:
Заходим в браузер по адресу http://ip-адрес-компьютера-с-принтером:631/printers/
Копируем адрес вида http://192.168.1.2:631/printers/hp-LaserJet-1010
Заходим в раздел «Принтеры и другое оборудование» «Панели управления»
Выбираем пункт «Установка принтера»
Ставим галочку на «Сетевой принтер…». Жмем «Далее»
Ставим галочку на «Подключиться к принтеру в интернете, в домашней сети или в интрасети», вставляем полученный ранее адрес принтера
Выбираем драйвер и завершаем установку*
Расшариваем в Виндовс для Убунту СПОСОБ 2
Думаю как расшарить принтер в винде объяснять не нужно, главное попробуйте расшарить принтер, чтобы можно было печатать из другого виндового компьютера, убедитесь, что принтер действительно расшарен.
Включаем поддержку самбы в винде (как это сделать чуть позже напишу).
В убунту добавляем сетевой принтер, далее выбираем способ: виндовс принтер через самба,
Далее ищем, если не находит, то добавляем по форме: smb://guest@айпи-компьютера/имя_принтера_в_сети
Например: smb://guest@192.168.1.127/Canon_MP250_2
Кстати в Лубунту и ЮнибиксЛубунту по умолчанию нет возможности добавить виндовс принтер через самба, но это легко включить, установив три пакета: libsmbclient, smbclient, pyton-smbc
Расшариваем в Убунту для Убунту СПОСОБ 3
Установить и настроить локальный принтер на том компьютере к которому он подключен
ОТкрываем localhost:631 и нажимаем напротив принтера: Разрешить совместный доступ и Разрешить печать из Интернета (если надо)
Далее идем на второй компьютер с линуксом, пуск-администрирование-епчать-добавить принтер-найти сетевой принтер.
Расшариваем в Виндовс для Виндовс СПОСОБ 4
Это самый простой и детский спобоб, поэтому его распишу как будет время.
Настройка с нуля принтсервера CUPS с доменной авторизацией и без нее в сети с разными ОС
Настройка с нуля принтсервера CUPS с доменной авторизацией и без нее в сети с разными ОС
Вступление
Итак. Предположительно, сервис печати 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 соответственно.
Настройка принтсервера
В первую очередь мы настроим принтсервер, а точнее, настроим административный доступ на него, затем настроим печать на него, а затем опишем настройку клиентских машин.
Заходим на принтсервер любым удобным способом и обновим на нем пакеты:
Далее проверим, установлен ли CUPS на сервере:
Если вывод выглядит как то так:
то CUPS установлен, если вывода нет — устанавливаем CUPS:
Теперь настроим административный доступ к веб-интерфейсу CUPS. Все файлы конфигурации находятся по пути /etc/cups/. Для начала, на всякий случай сделаем резервные копии основных файлов конфигурации CUPS:
Впрочем, если вы этого не сделали — не беда, образцы данных файлов по умолчанию лежат по пути /usr/share/cups. Также нужно упомянуть, что вы можете проверить любые добавленные опции в файлы конфигурации CUPS с помощью команды:
Если вы что-то напутали, опечатались или использовали опцию, которая уже не поддерживается CUPS’ом, то вывод команды отразит данные ошибки.
Но приступим наконец к настройке. После любых изменений файлов в папке /etc/cups/ для получения эффекта необходимо перезапускать сервис CUPS:
А если вы отредактировали файл /etc/cups/cups-browsed.conf, то за него отвечает отдельный сервис cups-browsed, который тоже нужно перезапустить:
Первой незакомментированной опцией является
Она определяет минимальную информативность логов CUPS. Лог-файлы CUPS находятся по пути /var/log/cups/. На время установки, настройки и отладки принтсервера будет разумным перевести логгирование в debug-режим. Для этого изменим warn на debug2:
По умолчанию CUPS слушает входящие подключения только от localhost, то бишь на loopback интерфейсе. Чтобы убедится в этом, можете выполнить команду
Одна из строк будет выглядеть приблизительно так:
Дальнейшие действия зависят от степени вашей паранойи. Вы можете добавить в блоке, который условно начинается с комментария #Only listen for connections from the local machine несколько строк с указанием IP адресов или подсетей, откуда CUPS’у будет позволено слушать подключения.
Либо же вы можете разрешить CUPS’у слушать подключения со всех адресов
Следующий момент настройки — это обнаружение сетевых и расшаренных принтеров.
На мой взгляд эта опция так и должна остаться выключенной, так как она определяет, будет ли рассылаться широковещательная информация по сети о подключенных к принтсерверу принтерах. А они ведь будут подключены к ней все. И соответственно у всех клиентских машин будут отображаться сразу все принтера. Наш принтсервер должен искать и обнаруживать все принтера в сети, но не рассылать их бездумно по всей сети.
Далее идут настройки аутентификации:
Определяет права доступа к веб-интерфейсу CUPS, а также к его административной части. Чтобы пользователь user имел право на администрирование CUPS, его нужно добавить в системную группу lpadmin:
Вообще, группы, которым позволен административный доступ к CUPS, определяются в файле конфигурации cups-files.conf в блоке
Если вы хотите добавить некой группе пользователей Linux права на администрирование принтсервера, например printadmins, то просто добавьте их через пробел к lpadmin. Если группа доменная, то это немного сложнее и будет описано позже.
Теперь перейдем к блоку :
Order allow,deny означает, что запрещены подключения отовсюду, если специально не указано разрешение. То есть нужно добавлять IP-адреса, подсети, хосты или хосты по маске (.example.com) в виде «Allow from [разрешенный адрес]*»:
Для полной уверености и отладки, можно оставить, пока не настроите все остальное, такую констукцию, которая позволит печать отовсюду:
Приступим к настройке административного доступа к CUPS на принтсервере. Определитесь, с какого/каких IP и/или подсетей вы собираетесь подключаться к CUPS, и добавить их по аналогии с блоком :
Еще, по желанию, можно добавить язык интерфейса по умолчанию. Список доступных языков можно посмотреть с помощью команды:
Если нужная вам локализация, например ru, есть, то добавьте строчку в /etc/cups/cupsd.conf:
Чтобы к вашему принтсерверу cupsserver.example.com можно было обращатся по его хосту (hostname), необходимо создать в папке /etc/cups/ файл client.conf с таким содержимым:
Самым простым способом это можно сделать так:
Поскольку мы предполагаем, что в сети есть DNS сервер, то будет предпочтительным, чтобы можно было обращатся к принтсерверу по его доменному имени (cupsserver.example.com). Также серверу может быть присвоен CNAME псевдоним на DNS сервере, например print или cups. Чтобы принтсервер принимал подключения по таким обращениям, необходимо добавить такую строчку в файл /etc/cups/cupsd.conf:
Если вы хотите, чтобы принтсервер примимал любые обращения, или не хотите заморачиваться, то можно добавить это:
Еще нужно взглянуть внутрь файла /etc/cups/cups-browsed.conf. Этот файл управляет тем, как принтсервер будет искать принтеры в сети и проводить широковещательную рассылку своих принтеров. Я предлагаю совершенно отключить опцию рассылки. Принтсервер будет искать принтера в сети, но с него принтеры на клиентские машины будут подключатся вручную. Ниже будет описано, почему. Пока же мы находим строку BrowseRemoteProtocols dnssd cups:
Благодаря этой опции принтсервер ищет расшаренные принтера в сети. Ее мы оставляем включенной, так как в наших интересах, чтобы принтсервер искал принтера в сети. Но нам совершенно не нужно, чтобы принтсервер рассылал вообще все подключенные к нему принтеры, иначе возникнет большая путаница. Для предотвращения такого сценария находим следующую опцию #BrowseLocalProtocols none и раскомментируем ее:
На этом настройку принтсервера приостанавливаем и переходим к настройке клиентких машин Windows и Linux. Требования к ним такие — позволять посылать на себя задания печати принтсерверу, и посылать задания на печать именно (и только) на принтсервер в случае необходимости печати на сетевой принтер.
Теперь выполним аналогичную операцию на клиентской машине Linux c именем хоста linux1. Вообще, данная часть будет куда объемнее, так как у клиентской машины есть свой сервис CUPS и его тоже нужно настроить во многом так же, как и принтсервер, за исключением его подчиненной роли в организации печати.
Исправление ошибки обращения к CUPS через loopback по имени хоста
Есть неприятный момент. Если вы введете linux1 в домен, настроите на нем CUPS по этим инструкциям, то можете заметить абсурдную ситуацию, когда на WEB-интерфейс linux1 можно зайти снаружи, но на самом хосте этого сделать нельзя! И графические приложения для локальной настройки принтеров, вроде приложения system-config-printer в Linux Mint, отказываются работать. При попытке подключения на свой же CUPS по по адресу http://linux1:631/ будет сообщение «Запрещено» или «Bad Request». Это известная и толком не решенная на множестве форумов интернета проблема.
В большинстве инструкций по введению Linux в домен одним из пунктов является приведение файла /etc/hosts приблизительно к такому виду:
Почему то CUPS не в силах ассоциировать обращение через 127.0.1.1, то есть через Loopback интерфейс, с именем хоста.
Исправляется эта ошибка двумя способами. Если в вашей сети IP адреса статичные, то в файле /etc/hosts исправьте 127.0.1.1 на IP адрес внешнего сетевого интерфейса клиентской машины, например:
Либо же, раз уж вы вводите Linux в домен, то это предполагает, что в вашей сети работает DHCP и DNS сервер Active Directory. В таком случае просто закомментируйте данную строчку:
Разницы в работоспособности или проблем от данного действия пока обнаружено не было.
Настройка адресов прослушивания подключений к CUPS у клиентских машин Linux
Заходим на linux1 любым удобным способом. Редактируем файл /etc/cups/cupsd.conf:
Находим, добавляем или изменяем в нем строки:
Настройка адресов прослушивания подключений к CUPS
Настройка раздачи и получения широковещательной рассылки сетевых принтеров
Еще у клиетской машины Linux, в данном случае linux1, необходимо отредактировать файл /etc/cups/cups-browsed.conf:
Настройка административного доступа
Еще пару слов по поводу административного доступа, как на WEB-интерфейс CUPS на принтсервере, так и на любой клиентской машине Linux. Даже при условии наличия 30-50 компьютеров нужно унифицировать авторизацию на CUPS, а не держать в голове или еще где пароли каждой машины. И это важно на всех Linux машинах, ведь чтобы добавить принтер на сервер, его сперва нужно установить локально. Я вижу несколько путей.
Первый — на каждой системе Linux создать пользователя printeradmin (например) и добавить в группу lpadmin:
и авторизовываться на http://имя_хоста:631/admin c помощью его учетных данных.
Второй вариант практически идентичен и предлагает создать группу в системе, например, printersadmins, добавить туда требуемого администратора CUPS (printeradmin, user):
Затем нужно найти в файле /etc/cups/cups-files.conf строку
и добавить через пробел одну или несколько групп пользователей с правом администрировать CUPS.
И наконец, третий вариант. Сделать администраторами принтсервера и 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 такую строку:
Если Linux введен в домен через SSSD, то необходимо указать расположение его pipe в /etc/apparmod.d/local/usr.sbin.cupsd, добавив туда строку:
К тому же, в случае с SSSD это позволяет пройти аутентификацию (узнать кто заходит), но чтобы пройти авторизацию (узнать есть ли право у пользователя управлять CUPS) необходимо также добавить в файл конфигурации SSSD /etc/sssd/sssd.conf строку:
Это, условно выражаюсь, дает CUPS’у право «заглядывать» в SSSD.
К тому же, в силу того, что CUPS теперь зависит от сервиса SSSD, нужно указать CUPS’у что он должен запускаться после SSSD, иначе он будет отваливаться при включении и его будет необходимо каждый раз включать вручную.
Добавим CUPS’у указание грузиться после SSSD. Отредактируем файл сервиса cups.service по пути /lib/systemd/system/, добавив инструкцию After в секцию [Unit]:
Таким образом CUPS настроен на Basic авторизацию через домен, то есть авторизацию с помощью ввода логина и пароля доменного пользователя с правом администрирования CUPS.
Авторизация может быть настроена и иначе, но принцип (pipe-файл) в целом универсален и есть шанс настроить и для LDAP, FreeIPA и прочих служб каталогов по аналогии.
Установка принтера в Linux
Теперь, когда сервер и клиенские машины Linux настроены, к некоторым из них присоединены принтеры, а также есть машины на Windows, которым и с которых нужно печатать, и вся эта система должна быть стабильной и в случае, если на одном из ПК необходимо заменить принтер, то это не должно повлечь за собой перенастройку доброй половины всех ПК, если не всех. К тому же нужно как можно меньше проблем с драйверами. И это вполне возможно.
Группы принтеров (Classes)
Главная прелесть данного метода в том, что если на любом из ПК заменяется принтер, заменяется сам компьютер, или то и другое сразу, то это никак не влияет на тех, кто был к ним подключен через группу на принтсервере. Единственная настройка производится на принтсервере — к принтсерверу подключается новый принтер, затем из группы, в которой состоял старый принтер, он удаляется, и добавляется новый принтер на замену старому. И никаких дополнительных настроек на любом количестве ПК, только на принтсервере и собственно ПК на котором меняли принтер. Драйвера «IPP Everywhere» и «MS Publisher Imagesetter» содержат большое количество настроек бумаги, печати и т.д., так что нет проблем настроить нужный вид печати через них.
Заключение
Тема слишком обширна, чтобы изложить сколько-нибудь подробно, и даже так статья вышла крайне объемной. Любые уточнения, указания на ошибки, нераскрытые вопросы и советы, данные в комментариях к данной статье, будут приняты во внимание и в случае необходимости включены в статью.