Заметки · 26.12.2025

Cups: принтеры без шаринга

Вместо предисловия…

Этот пост уже пропах нафталином, как и пара последующих. Всё дело в том, что публикацию части статей я постоянно переносил на более поздние сроки. И, в конечном итоге, допереносился до сегодняшнего дня. Все эти приключения случились на 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 и радуемся видимости исключительно общих папок.