---
title: A CUPS használata FreeBSD rendszereken
authors:
  - author: Chess Griffin
    email: chess@chessgriffin.com
trademarks: ["freebsd", "general"]
---

= A CUPS használata FreeBSD rendszereken
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/cups/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Kivonat

Ez a cikk a CUPS beállítását és használatát mutatja be a FreeBSD operációs rendszeren.

_Fordította: Páli Gábor, utolsó ellenõrzés: 2010.11.28._

'''

toc::[]

[[printing-cups]]
== A Common Unix Printing System (CUPS) rövid bemutatása

A CUPS, avagy _Common UNIX Printing System_ (Egységes UNIX Nyomtatási Rendszer) a UNIX(R) alapú operációs rendszerekhez fejlesztett hordozható nyomtatási réteg. Az Easy Software Products egy szabványos nyomtatási technológiaként alkotta meg a UNIX(R) gyártók és felhasználók számára.

A CUPS az ún. _Internet Printing Protocol_ (IPP, Internetes Nyomtatási Protokoll) megoldásaira támaszkodóan kezeli a nyomtatási feladatokat és sorokat. Emellett még a _Line Printer Daemon_ (LPD), a _Server Message Block_ (SMB) és _AppSocket_ (vagy más néven __JetDirect__) protokollokat is ismeri valamennyire. A CUPS a hétköznapi igényeknek megfelelõ UNIX(R) alapú nyomtatás megteremtéséhez ezenkívül még támogatja a hálózati nyomtatók böngészésének lehetõségét, illetve a _PostScript Printer Description_ (PPD, PostScript Nyomtató Leírás) használatát. Ennek eredményeképpen a CUPS tökéletesen alkalmas nyomtatók megosztására és elérésére FreeBSD, Linux(R) Mac OS(R) X vagy Windows(R) típusú rendszereket vegyesen tartalmazó környezetekben.

A CUPS hivatalos oldala a http://www.cups.org/[http://www.cups.org/] címen érhetõ el.

[[printing-cups-install]]
== A CUPS nyomtatószerver telepítése

A CUPS telepíthetõ portként vagy csomagként. Ha portként szeretnénk telepíteni, akkor ahhoz a következõ parancsot kell kiadnunk rendszergazdaként:

[source,shell]
....
# cd /usr/ports/print/cups && make install clean
....

A CUPS csomagjának telepítését pedig ezzel a paranccsal tudjuk (szintén rendszergazdaként) elvégezni:

[source,shell]
....
# pkg_add -r cups
....

További nem kötelezõen telepítendõ, de határozottan ajánlott csomagok még a package:print/gutenprint-cups[] és a package:print/hplip[], amelyek különbözõ típusú nyomtatókhoz tartalmaznak meghajtókat és segédprogramokat. A CUPS telepítése után a hozzá tartozó konfigurációs állományokat a [.filename]#/usr/local/etc/cups# könyvtárban találhatjuk.

[[printing-cups-configuring-server]]
== A CUPS nyomtatószerver beállítása

A CUPS szerver telepítése után néhány állomány módosításával végezhetjük el a szükséges beállításokat. Elõször is hozzunk létre (ha még nem létezne) vagy nyissuk meg az [.filename]#/etc/devfs.rules# állományt és a `cups` csoport számára adjunk hozzáférést a rendszerünkben található összes nyomtatóra:

[.programlisting]
....
[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb/X.Y.Z' mode 0660 group cups
....

[NOTE]
====
Az _X_, _Y_ és _Z_ helyén a nyomtató [.filename]#/dev/usb# könyvtárban szereplõ értékeit adjuk meg. A nyomtatóhoz tartozó eszközleírót a man:dmesg[8] kimenetében találjuk meg [.filename]#ugenX.Y# néven, amely egy szimbolikus link a [.filename]#/dev/usb# könyvtárban található megfelelõjére.
====

Ezután az [.filename]#/etc/rc.conf# állományba még vegyük fel a következõ két sort:

[.programlisting]
....
cupsd_enable="YES"
devfs_system_ruleset="system"
....

Az iménti bejegyzések gondoskodnak a CUPS nyomtatószerver beüzemelésérõl a rendszer indítása során, illetve töltik be az elõbbi lépésben létrehozott helyi devfs szabályokat.

Bizonyos Microsoft(R) Windows(R) rendszert használó kliensekkel csak akkor fogunk tudni nyomtatni a CUPS esetében, ha a [.filename]#/usr/local/etc/cups/mime.types# és [.filename]#/usr/local/etc/cups/mime.convs# állományokban kivesszük a megjegyzésbõl ezt a sort:

[.programlisting]
....
application/octet-stream
....

Miután végrehajtottuk ezeket a módosításokat, az alábbi parancsok használatával vagy az operációs rendszerrel együtt indítsuk újra a man:devfs[8] és CUPS szolgáltatásokat:

[source,shell]
....
# /etc/rc.d/devfs restart
# /usr/local/etc/rc.d/cupsd restart
....

[[printing-cups-configuring-printers]]
== Nyomtatók beállítása a CUPS nyomtatószerveréhez

A CUPS sikeres telepítését és beállítását követõen elkezdhetjük a nyomtatószerverhez kapcsolódó helyi nyomtatók hozzáadását. Ez nagyon hasonló, ha nem is teljesen megegyezõ más UNIX(R) alapú rendszerek, például Linux(R) esetén a nyomtatók beállításához.

A CUPS szerver irányítása és mûködtetése elsõsorban az általa felkínált webes felületen történik, amelyet a http://localhost:631[http://localhost:631] címen keresztül tudunk elérni. Amennyiben a CUPS egy másik számítógépen fut, akkor a címben természetesen a `localhost` (saját gépünk) helyén az adott gép IP-címét kell megadnunk. A CUPS webes felületén meglehetõsen könnyen lehet tájékozódni, külön menüket találunk a nyomtatók és nyomtatási sorok beállítására, a felhasználók hitelesítésére és a többi. Ezeken felül még az "Administration" képernyõ jobb oldalán különbözõ jelölõnégyzetekkel tudunk egyszerûen dönteni a gyakori beállításokról, például a szerverhez csatlakozó nyomtatókat megosztjuk-e a hálózaton keresztül, engedünk-e további felhasználókat hozzáférni a szolgáltatásokhoz, kinek milyen engédelyei legyenek a nyomtatókra és nyomtatási sorokra.

A nyomtatók hozzáadásához elegendõ a CUPS webes felületén az "Administration" menün belül az "Add Printer" gombra vagy valamelyik "New Printers Found" gombra kattintani. A "Device" legördülõ menü megjelenése után egyszerûen válasszuk ki belõle a megfelelõ helyileg csatlakoztatott nyomtatót, majd folytassuk a telepítését. Ha telepítettük a korábban ajánlott package:print/gutenprint-cups[] és package:print/hplip[] programokat, akkor ennek során a hozzájuk tartozó meghajtók is meg fognak jelenni, amelyek esetleg többet tudnak vagy megbízhatóbbak.

[[printing-cups-clients]]
== A CUPS kliensek beállítása

A CUPS szerver beállítása, illetve a nyomtatók telepítése és megosztása után a kliensek, vagyis a CUPS által kínált szolgáltatásokat elérni kívánó gépek beállítása következik. Ha csupán egyetlen gépünk van, amely egyszerre szerver és kliens, akkor az itt szereplõ információk nagy részére nem lesz szükségünk.

[[printing-cups-clients-unix]]
=== UNIX(R) kliensek

A UNIX(R) kliensek esetében is a CUPS használatára lesz szükségünk. Miután rájuk is telepítettük, a CUPS által hálózaton megosztott nyomtatókat maguktól fel is ismerik a különbözõ munkakörnyezetek, például a GNOME vagy KDE nyomtatókezelõi. Emellett a szerverhez hasonlóan a kliensen is el tudjuk érni a http://localhost:631[http://localhost:631] címen a CUPS helyi felhasználói felületét, ahol az "Administration" menüben az "Add Printer" gombbal tudunk felvenni a szervernél tapasztalt módon hasonlóhoz. Amikor viszont megjelenik a "Device" legördülõ menü, akkor válasszuk az automatikusan felismert hálózati CUPS nyomtatót, vagy az `ipp` és `http` elemek valamelyikén keresztül adjuk meg a hálózati CUPS nyomtató IPP vagy HTTP alapú egységes forrásazonosítóját (URI) a következõ formák valamelyikében:

[.programlisting]
....
ipp://szervernév-vagy-ip/printers/nyomtatónév
....

[.programlisting]
....
http://szervernév-vagy-ip:631/printers/nyomtatónév
....

Ha a CUPS kliensek valamiért nem látnák a hálózaton megosztott nyomtatókat, akkor próbáljuk meg hozzáadni a [.filename]#/usr/local/etc/cups/client.conf# állományhoz a következõ sort:

[.programlisting]
....
ServerName szerver-ip
....

Ahol a _szerver-ip_ helyére írjuk be a hálózatunkon található CUPS szerver helyi IP-címét.

[[printing-cups-clients-windows]]
=== Windows(R) kliensek

A Windows(R) XP elõtti változatai nem képesek együttmûködni a hálózaton megosztott IPP alapú nyomtatókkal. A Windows(R) XP rendszertõl kezdõdõen azonban már rendelkeznek a szükséges támogatással, ezért itt már nagyon könnyû beállítani a CUPS nyomtatókat. Ehhez rendszeradminisztrátorként futtassuk a Windows(R) a nyomtatók hozzáadásához tartozó varázslóját, ahol válasszuk a "Hálózati nyomtató" típust, majd a következõ formában töltsük ki az eszköz forrásazonosítóját:

[.programlisting]
....
http://szervernév-vagy-ip:631/printers/nyomtatónév
....

Ha az IPP támogatását még nem tartalmazó régebbi Windows(R) változatunk van, akkor a CUPS szolgáltatásait a package:net/samba3[] szerveren keresztül tudjuk elérhetõvé tenni, azonban ennek bemutatásával itt most nem foglalkozunk.

[[printing-cups-troubleshooting]]
== Hibakeresés

A CUPS használata során tapasztalható problémák többségét az engedélyek helytelen beállítása okozza. Elõször tehát, ha valami nem mûködik rendesen, akkor ellenõrizzük újra az elõbb felvázolt man:devfs[8] beállításokat. Ezután gyõzõdjünk meg arról is, hogy az állományrendszerben ténylegesen keletkezõ eszközök engedélyei megfelelõek. Továbbá segíthet megoldani a problémát, ha felvesszük a felhasználónkat a korábban tárgyalt `cups` csoportba. Ha a CUPS felhasználói felületének "Administration" képernyõjén található beállítások látszólag hatástalanok, akkor érdemes úgy próbálkoznunk, hogy elõször készítünk egy bizonsági másolatot a [.filename]#/usr/local/etc/cups/cupsd.conf# állományról és kézzel módosítgatva kísérletezünk különféle konfigurációs lehetõségek kombinációival. Ehhez találhatunk itt egy példát. Ezzel kapcsolatban azonban megjegyezzük, hogy a bemutatott [.filename]#cupsd.conf# állomány inkább áttekinthetõ mintsem biztonságos módon tárgyalja a lehetõségeket. Ezért javasoljuk, hogy miután sikerült elérnünk a CUPS szervert és beállítani a klienseket, nézzük át alaposan a mintául szolgáló opciókat és korlátozzuk le minél jobban a hozzáférést.

[.programlisting]
....

# Általános információk naplózása.  Ha hibát keresünk, írjuk az
# "info" helyett a "debug" értéket.
LogLevel info

# A rendszergazdák csoportja.
SystemGroup wheel

# A 631-es porton várjuk a kliensek kapcsolódását.
Port 631
#Listen localhost:631
Listen /var/run/cups.sock

# A helyi hálózaton megosztott nyomtatók mutatása.
Browsing On
BrowseOrder allow,deny
#BrowseAllow @LOCAL
BrowseAllow 192.168.1.*   # Adjuk meg a helyi hálózatunkat.
BrowseAddress 192.168.1.* # Adjuk meg a helyi hálózatunkat.

# Alapértelmezett hitelesítési módszer, amikor szükség van rá.
DefaultAuthType Basic
DefaultEncryption Never # Vegyük ki ezt a sort, ha titkosítani akarunk.

# A szervert a helyi hálózaton bármelyik gép elérheti.
<Location />
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # Adjuk meg a helyi hálózatunkat.
</Location>

# A helyi hálózatról el tudjuk érni az adminisztrációs felületet.
<Location /admin>
  #Encryption Required
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # Adjuk meg a helyi hálózatunkat.
</Location>

# A helyi hálózatunkról el tudjuk érni a konfigurációs állományt.
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # Adjuk meg a helyi hálózatunkat.
</Location>

# Az alapértelmezett nyomtatási és feladatkezelési házirendek.
<Policy default>
  # A feladatokat kizárólag csak a tulajdonosaik vagy a rendszergazda
  # képesek elvégezni.
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # A karbantartást csak megfelelõ hitelesítés után végezhetünk.
  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
    AuthType Basic
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # A feladatokat csak a tulajdonosaik és a rendszergazda tudják törölni.
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
....

[[printing-cups-ports-knobs]]
== A CUPS portok finomhangolása

Ha a CUPS lesz az elsõdlegesen használt nyomtatási rendszer, akkor az [.filename]#/etc/make.conf# állományban érdemes lehet még további olyan változókat beállítanunk, amelyek elõtérbe helyezik a CUPS használatát a többi nyomtatási lehetõséggel szemben. Ezek közül most szót ejtünk néhányról:

[.programlisting]
....
WITH_CUPS=YES
CUPS_OVERWRITE_BASE=YES
WITHOUT_LPR=YES
....

Elsõként a `WITH_CUPS` látható, amely hatására a portok telepítésük során lehetõség szerint a CUPS megoldásaira fognak építkezni. Másodikként a `CUPS_OVERWRITE_BASE` szerepel, amely megadásával a telepítés során a FreeBSD alapértelmezett nyomtatási rendszere, az LPR szimbolikus linkjei és állományai cserélõdnek le, illetve megakadályozza, hogy ez visszaforduljon a rendszer egy késõbbi frissítésekor. A harmadik, a `WITHOUT_LPR` az LPR használatának mellõzésére utasítja az érintett portokat.
