Samba (2) - Tlač

30.09.2008 21:45 | Články | Erik Mocný
V dnešnej časti seriálu si predstavíme tlačové služby Samby. Ukážeme si tlač z linuxového klienta na tlačiareň pripojenú k Windows boxu a takisto si nastavíme Samba server na Linux boxe, ku ktorému máme pripojenú tlačiareň a tlačiť budeme z Windowsu.

1. Tlačiareň pripojená k Windowsu

Pri použití tlačového démona CUPS (Common UNIX Printing System) máte v podstate 2 možnosti, ako spojazdniť tlač z Windows boxu. Prvá metóda používa LPD protocol. Tá druhá, ako ste si určite domysleli, využíva na tlač Sambu, teda protokol SMB a keďže práve o nej je náš seriál, prvej metóde sa venovať nebudeme.

Na Windows boxe nemusíte nastavovať takmer nič, jediná vec, ktorú je potrebné vykonať, je dať zdielať tlačiareň a nastaviť jej nejaké vhodné meno.

Na počítači, kde máme Linux musíme mať nainštalované balíčky CUPS, Sambu a gutenprint, čo je sada driverov pre vačšinu tlačiarní. Ak sú nainštalované, máme vystarané a môžeme sa pustiť do samotnej konfigurácii. Spustíme si teda CUPS démon a taktiež aj Sambu. Gentoo má defaultne skripty v adresári /etc/init.d/ a spustenie je veľmi jednoduché:

# /etc/init.d/samba start
# /etc/init.d/cupsd start

Následne si v prehliadači otvoríme adresu localhost:631. Na akom porte vám bude CUPS démon bežať si samozrejme môžete zmeniť. Stačí editovať súbor /etc/cups/cupsd.conf, vyhľadať riadok Listen localhost:631, upraviť ho podľa potrieb a následne reštartovať démon.

Ak všetko prebehlo v poriadku, mali by ste vidieť administračné rozhranie podobné tomu, aké môžete vidieť na obrázku nižšie.

Klikneme na tlačítko Add Printer, nejako výstižne ju pomenujeme (Name), (Location a Description sú nepovinné), v ďalšom kroku vyberieme z ponuky možností voľbu Windows Printer via SAMBA, ďalej nastavíme URI našej tlačiarne a to v tvare:

smb://meno:heslo@IP_adresa/nazov_zdielanej_tlaciarne

kde meno a heslo patria existujúcemu užívateľovi na Windowse, ostatné položky sú dúfam jasné.

V posledných krokoch už len zvolíme výrobcu tlačiarne a výrobný model. Je možné, že práve pridaná tlačiareň sa nezobrazí v administračnom rozhraní a budete musieť reštartovať Sambu a CUPS démon, čo je zároveň posledný krok, o nič viac sa nemusíte starať ani nastavovať, už len veselo používať vašu tlačiareň ;).

2. Tlačiareň pripojená k Linuxovému serveru

V prípade tlačiarne, ktorá je pripojená k Linuxu a tlače z Windows klienta je situácia o trochu ,,zložitejšia", čo značí o niečo viac konfigurácie, no nič extra zložité to v praxi nie je.

Predpokladám, že balíčky samba a cups uz máte nainštalované a teda sa pustíme do samotejne konfigurácie nášho servera.

Prvá vec, ktorú musíme zistiť, je typ našej USB zbernice cez príkaz lspci. Rozlišujeme dva typy, OHCI a UHCI. Podľa toho aký typ máme, si nastavíme jadro. Výpis by mal vyzerať podobne, ako u mňa:

2.1 Nastavenie jadra

Pre USB tlačiareň

V jadre prejdeme na položku Device Drivers -> USB Support, kde zaškrtneme položky:

  • Support for Host-side USB
  • EHCI HCD (USB 2.0) support
  • UHCI HCD (most Intel and VIA) support
  • USB Printer support

Pre tlačiareň s paralelným portom

Dostname sa na položku Device Drivers -> Character devices a zakompilujeme:

  • Parallel printer support

2.2 Konfigurácia CUPS

Ako prvý si editujeme súbor /etc/cups/mime.convs, čo je súbor, z ktorého CUPS zisťuje ako má zaobchádzať z rôznymi dátovými súbormi, teda ako prekonvertovať jeden dátový typ na iný. V našom prípade si v tomto súbore odkomentujeme riadok:

application/octet-stream application/vnd.cups-raw 0 -

Následne upravíme súbor /etc/cups/mime.types a odkomentujeme riadok:

application/octet-stream

Teraz potrebujeme nastaviť našu tlačiareň, buď cez užívateľsky prívetivejšie web rozhranie http://localhost:631/, alebo úpravou súboru /etc/cups/printers.conf, ktorého obsah vymažeme a pridáme nasledovné (podľa potreby samozrejme upravíme):

<DefaultPrinter HPLaserJet1000> -- Názov tlačiarne.
Info HP LaserJet 1000 -- Nejaký popis tlačiarne.
Location usb:/dev/usb/lp0 -- Umiestnenie našej tlačiarne v súb. systeme (dev zariadenie)
DeviceURI usb://uri/mojej/tlaciarne -- URI tlačiarne
State Idle -- Nastavuje počiatočný status tlačiarne (Idle/Stopped)
Accepting Yes -- Špecifikuje, či tlačiareň prijíma nové joby
JobSheets none none -- Nastavuje banner stránky použitý pre tlačiareň, v tomto prípade žiaden
QuotaPeriod 0 -- Hodnota nastavuje job-quota-period (v sekundách)
PageLimit 0 -- Hodnota špecifikuje job-page-limit
KLimit 0 -- Nastavuje job-k-limit
</Printer>

Možných volieb je samozrejme viacero a kvôli stručnosti článku vás navigujem sem.

Poslednou vecou, ktorú na tomto mieste potrebujeme urobiť, je editácia súboru /etc/cups/cupsd.conf (podrobnejšie nastavenie bude ukázané v niektorej z nasledujúcej časti seriálu), doležité sú prvé 2 riadky:

User lp
Group lp
Ak potrebujete pristupovať k web rozhraniu z nejakého subnetu, napr. v našom prípade 192.168.1.x, zapíšte nasledujúce riadky:
<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>


Alebo ak chcete blokovať prístup: 

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.*
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.*
</Location>

Ak vám niečo z vyššie uvedeného príkladu nie je zrozumiteľné, odporúčam preštudovať manuálové stránky CUPS, ktoré sú vo väčšine prípadov bohaté na informácie, ktoré by vás mohli zaujímať.

Od tohto momentu máte nakonfigurovaný démon CUPS a mali by ste byť schopný lokálne tlačiť súbory. Či je to naozaj tak, si môžete overiť cez webové rozhranie, kde si môžete vytlačiť skúšobnú stránku.

2.3 Konfigurácia Samby

V tomto bode si musíme najprv vytvoriť 2 adresáre:

# mkdir -p /usr/share/cups/drivers -- adresár, kde sa nám budú sťahovať ovládače pre Windows workstation
# mkdir -m 777 /home/shared-folder -- tento budeme používať na kopírovanie nejakých súborov z Windows boxu

Teraz si vytvoríme súbor /etc/samba/smb.conf:

[global]
        workgroup = MSHOME
        netbios name = mini-itx
        server string = file and printer server
        hosts allow = 192.168.1.
        security = user
        load printers = yes
        printing = cups
        printcap name = cups
        use client driver = no

[share]
        path = /home/shared-folder
        comment = shared files
        read only = no
        browseable = yes
        guest ok = yes

[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = yes
        printable = yes
        writable = no
        guest ok = yes

[print$]
        comment = Printer Drivers
        path = /usr/share/cups/drivers
        browseable = yes
        guest ok = yes
        read only = yes
        write list = root

Pre vaše potreby si upravte nasledovné položky:

  • netbios name -- nastavuje NetBIOS name, pomocou ktorého je Samba server rozpoznávaný. Je to názov, ktorý uvidíte vo Windowse pod Network Neighborhood (Susedia v sieti, resp. Miesta v sieti)
  • workgroup -- ovláda, pod akou pracovnou skupinou sa váš server bude klientom zobrazovať
  • server string -- určuje, aký string sa zobrazí v tlačovom manažéri a v IPC connection cez net view
  • hosts allow -- čiarkou, medzerou alebo tabom oddeľuje povolených hostov, ktorí sú oprávnení používať tlačový server
  • security -- ak nastavíte "users", iba používateľské kontá, ktoré špecifikujete budú mať oprávnenie. Ak by ste chceli povolenie pre každého, nastavili by ste "share", no v našom prípade MUSÍTE ponechať túto položku nastavenú na "users", ináč by ste mali problémy v ďalších krokoch.

Ostatné nastavenia necháme pre dnešok tak, o nastavení smb.conf chystám samostatný článok ;).

2.4 Pridanie služieb do runlevelu

Na tomto mieste si pridáme cupsd a sambu do defaultného runlevelu:

rc-update add cupsd default
rc-update add samba default
/etc/init.d/cupsd start
/etc/init.d/samba start

príp. môžete použiť toto riešenie, zároveň aj so spustením služieb:

for x in cupsd samba ; do rc-update add $x default ; /etc/init.d/$x start ; done

2.5 Príprava Windows ovládača

Pri prvom použití nášho tlačového servera z Windowsu, chceme zaistiť aby sa nám automaticky stiahli potrebné ovládače z nášho servera a nainštalovali. Budeme potrebovať:

  • CUPS Windows Driver, ktorý pracuje s existujúcimi Windows PostScript drivermi a pridáva aj nejakú funkcionalitu navyše. Posledná verejná verzia je 6.0
  • Originálne Adobe ovládače pre windows, v adresári \WINDOWS\system32\spool\drivers\w32x86\3

Gentoo vám ich automaticky nainštaluje do adresára /usr/share/cups/drivers po ich emergnutí, ostatní si ich tam budú musieť nainštalovať sami:

# emerge -av net-print/cups-windows net-print/adobeps

S nastaveniami na strane servera sme skončili, teraz je už len potrebné nastavenie na Windows boxe. No prv než s tým začneme, musíme si vytvoriť nejakého Samba užívateľa, aby sme mohli pristupovať z Windowsu k nášmu serveru.

# smbpasswd -a root
# smbpasswd -a <nejaky_uzivatel>

Následne príkazom cupsaddsmb exportujeme našu tlačiareň/tlačiarne do samby:

# cupsaddsmb -H localhost -U root -a

Tento príkaz exportuje všetky naše tlačiarne. Ak potrebujete exportovať len nejakú špecifickú prezrite si manuálové stránky príkazu cupsaddsmb.

V tejto chvíli by ste mali bez problémov vedieť používať tlačiareň z Windows boxu. Stačí, keď kliknete na tlačiareň cez "Miesta v sieti" prípadne použijete wizarda pre pridanie novej tlačiarne.

Taktiež si už môžete povoliť prístup na váš Samba server všetkým užívateľom, zmenou security = user na security = share v súbore /etc/samba/smb.conf.

Záver

V dnešnej časti sme sa naučili niečo o spolupráci tlačiarní a Samby. Do tej ďalšej chystám rozobrať administráciu Samby, či už cez nejaké GUI rozhranie (SWAT), ale hlavne manuálnu úpravu konfiguračného súboru /etc/samba/smb.conf. Určite som neopísal všetky možnosti nastavenia tlače, je ich mnoho a všetko závisí od potrieb koncového použiváteľa, čím nabádam samozrejme k samoštúdiu. Kritika, nejasnosti a postrehy sú taktiež vítane.

    • chyba riadok 12.10.2008 | 01:00
      ondro   Návštevník
      skusal som tento navod, ale zasekol som sa pri bode 2.2, =>

      Následne upravíme súbor /etc/cups/mime.types a odkomentujeme riadok:
      /etc/cups/mime.types

      ktory som tam nenasiel

      help
      • Re: chyba riadok 12.10.2008 | 02:51
        Avatar Erik Mocný arch  Používateľ
        Ehm... chybicka se vloudila :[ ... opravene ;)