Вместо предисловия…
Этот пост уже пропах нафталином, как и пара последующих. Всё дело в том, что публикацию части статей я постоянно переносил на более поздние сроки. И, в конечном итоге, допереносился до сегодняшнего дня. Все эти приключения случились на Linux Lubuntu 16.04, установленной на моём походном ветеране. Если этот пост кому-то поможет в текущем моменте — буду рад.
Теперь, собственно, сабж…
Про установку CUPS я рассказывать не стану, хотя и коснусь настройки файла конфигурации сервера печати. Принципиально установка CUPS ничем не отличается от установки любого другого пакета.
Небольшие сложности возникли только с поиском драйверов принтера, но здесь на помощь пришла официальная документация Linux Ubuntu.
Изначально доступ к страничке сервера печати организован только в рамках локального хоста. Для того чтобы открыть доступ к веб-странице сервера печати другим устройствам в сети, нужно немного поменять файл конфигурации CUPS и открыть порт 631 в настройках сетевого экрана. В моём случае в качестве сетевого экрана выступал UFW (где-то здесь про него был отдельный пост).
К слову, после установки CUPS, в UFW добавляется соответствующее правило:

Всё, что нужно — разрешить именованное правило:
sudo ufw allow CUPS
Думаю, проблем с доступом к порту приложения быть не должно. Берёмся за настройку файла конфигурации CUPS. Конфиг уютно поселился здесь:
/etc/cups/cupsd.conf
Создадим на всякий случай копию файла конфигурации:
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak
Теперь можно открыть файл и начать вносить изменения. Я использую редактор nano:
sudo nano /etc/cups/cupsd.conf
Доступ к серверу печати можно оставить максимально ограниченным или же выдать доступ определённым хостам. Для того, чтобы разрешить доступ с какого-то определённого IP адреса или подсети нужно найти строку:
Listen localhost:631
Следующей строкой для доступа с IP-адреса 192.168.1.101 дописываем:
Listen 192.168.1.101:631
Ну, или добавляем всю подсеть:
Listen 192.168.1.0:631
А чтобы не мелочиться и разрешить доступ всем устройствам в сети — вместо Listen localhost:631 пишем такое:
Port 631
В таком случае прописывать подсети и адреса не нужно. Все уже и без того смогут зайти на страничку веб-интерфейса сервера печати.
Теперь нужно разрешить доступ к путям веб-интерфейса, чтобы не получить такую ошибку:

Для этого добавляем конструкцию Allow all в блоки Location. К примеру, мой файл конфигурации без учёта блока Policy выглядит так:
LogLevel warn PageLogFormat MaxLogSize 1m # Allow remote access Port 631 Listen /var/run/cups/cups.sock # Share local printers on the local network. Browsing Off #BrowseLocalProtocols dnssd DefaultAuthType Basic WebInterface Yes <Location /> # Allow shared printing and remote administration... Order allow,deny Allow all </Location> <Location /admin> # Allow remote administration... Order allow,deny Allow all </Location> <Location /admin/conf> AuthType Default Require user @SYSTEM # Allow remote access to the configuration files... Order allow,deny Allow all </Location> <Location /admin/log> AuthType Default Require user @SYSTEM Order allow,deny Allow all # Allow remote access to the log files... Order allow,deny Allow all </Location>
Перезапускаем CUPS и наслаждаемся работой сервера печати. Но! Теперь любой подключённый принтер будет подсвечиваться в общих ресурсах хоста. Избавиться от этого с помощью файла конфигурации CUPS нельзя. Нужно обращаться к конфигу Samba (тег).
Открываем файл конфигурации Samba:
sudo nano /etc/samba/smb.conf
И приводим блок printers к такому виду:
[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 available = no public = no
Перезапускаем службу Samba и радуемся видимости исключительно общих папок.