A CUPS használata FreeBSD rendszereken

$FreeBSD: doc/hu_HU.ISO8859-2/articles/cups/article.sgml,v 1.2 2008/10/30 06:34:55 pgj Exp $

A FreeBSD a FreeBSD Foundation bejegyzett védjegye.

A gyártók és terjesztők által használt megnevezések közül sok védjegy jogot követel. Ahol ilyen megnevezés tűnik fel ebben a dokumentumban, és a FreeBSD Projektnek tudomása volt a védjegyről, a megnevezést a “™” vagy a “®” szimbólum követi.

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


1. 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® 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 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 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® Mac OS® X vagy Windows® típusú rendszereket vegyesen tartalmazó környezetekben.

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


2. 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:

# 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:

# pkg_add -r cups

További nem kötelezően telepítendő, de határozottan ajánlott csomagok még a print/gutenprint-cups és a 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 /usr/local/etc/cups könyvtárban találhatjuk.


3. 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 /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:

[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups

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

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® Windows rendszert használó kliensekkel csak akkor fogunk tudni nyomtatni a CUPS esetében, ha a /usr/local/etc/cups/mime.types és /usr/local/etc/cups/mime.convs állományokban kivesszük a megjegyzésből ezt a sort:

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 devfs(8) és CUPS szolgáltatásokat:

# /etc/rc.d/devfs restart
# /usr/local/etc/rc.d/cupsd restart

4. 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 alapú rendszerek, például Linux 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 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 print/gutenprint-cups és 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.


5. 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.


5.1. UNIX® kliensek

A UNIX 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 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:

ipp://szervernév-vagy-ip/printers/nyomtatónév
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 /usr/local/etc/cups/client.conf állományhoz a következő sort:

ServerName szerver-ip

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


5.2. Windows® kliensek

A Windows XP előtti változatai nem képesek együttműködni a hálózaton megosztott IPP alapú nyomtatókkal. A Windows 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 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:

http://szervernév-vagy-ip:631/printers/nyomtatónév

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


6. 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 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 /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 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.

# Á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>

7. A CUPS portok finomhangolása

Ha a CUPS lesz az elsődlegesen használt nyomtatási rendszer, akkor az /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:

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.


Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.