A CUPS használata FreeBSD rendszereken

Chess Griffin

Jogi közlemény

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.

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
add path 'usb/X.Y.Z' mode 0660 group cups

Az X, Y és Z helyén a nyomtató /dev/usb könyvtárban szereplõ értékeit adjuk meg. A nyomtatóhoz tartozó eszközleírót a dmesg(8) kimenetében találjuk meg ugenX.Y néven, amely egy szimbolikus link a /dev/usb könyvtárban található megfelelõjére.

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.