Ten przewodnik jest oparty na konfiguracji samba + cups. Najpierw należy więc zaznajomić się z dokumentacją : http://pl.docs.pld-linux.org/uslugi_samba.html http://pl.docs.pld-linux.org/uslugi_cups.html Ten artykuł w zamyśle najbardziej dotyczy umieszczania sterowników dla windows na serwerze samba, tak, aby maszyny na Windows mogły samodzielnie instalować dla siebie sterowniki dotyczące danej drukarki.
Opis dotyczy konfiguracji Windows NT/XP oraz samba 3.0 i wyższej, w której hasła są przechowywane w TrivialDataBase, czyli de facto takiej, jaka jest w PLD TH. Należy doprowadzić do sytuacji, gdy drukarki są widoczne przez stacje robocze Windows, natomiast nie moga znaleźć sterowników dla znalezionej drukarki. W tym pomocne mogą być w/w artykuły oraz google… ;) Instalujemy poldkiem pakiet cups-clients :
poldek:/all-avail> install cups-clients
Budujemy ze speca pakiet cups-windows:
$ builder cups-windows.spec
No i oczywiście instalujemy cups-windows-6.0-1.noarch.rpm :
rpm -i cups-windows-6.0-1.noarch.rpm
No i teraz dowolną drogą z istniejącej legalnej instalacji windows wyciągamy pliki ps5ui.dll, pscript.ntf, pscript5.dll oraz pscript.hlp (W WindowsXP - w katalogu C:\WINDOWS\Driver Cache\i386\ w archiwach sp2.cab oraz driver.cab)
Pliki te następnie kopiujemy do /usr/share/cups/drivers na naszym serwerze samby.
Tworzymy zasób w sambie - w pliku /etc/samba/smb.conf :
[print$] comment = Printer Drivers path = /usr/share/cups/drivers browseable = yes guest ok = no read only = yes write list = root
W PLD root jest ze względów bezpieczeństwa wykluczony z użytkowników samby :
# kto nie moze sie logowac do samby invalid users = root
Więc na czas konfiguracji drukarek musimy zakomentować ten wpis średnikiem. Jeśli jeszcze nie mamy konta root w sambie to je tworzymy :
# pdbedit -a root -t *NaszeHaslo* *NaszeHaslo* Unix username: root NT username: Account Flags: [U ] User SID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Primary Group SID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Full Name: root Home Directory: \\localhost\root HomeDir Drive: Logon Script: Profile Path: \\localhost\root\profile Domain: DOMENANASZA Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: XXXXXXXXXXXXXXXXXXXXXX Password can change: XXXXXXXXXXXXXXXXXXXXXX Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Teraz trzeba zrestartować sambę :
# service smb restart Zatrzymywanie usługi smbd......................................... [ ZROBIONE ] Zatrzymywanie usługi nmbd......................................... [ ZROBIONE ] Uruchamianie usługi smbd.......................................... [ ZROBIONE ] Uruchamianie usługi nmbd.......................................... [ ZROBIONE ]
Kolej na nasze magiczne polecenie konfigurujące maskowanie drukarek przez CUPS jako Postscript :
# cupsaddsmb -v -a Wymagane jest hasło dla root, aby uzyskać dostęp do localhost przez Sambę: Uruchamiam polecenie: smbclient //localhost/print$ -N -A /tmp/47c6827d0ecbe -c "mkdir W32X86;put /tmp/47c6827424663 W32X86/HP_LaserJet_5L.ppd;put /usr/share/cups/drivers/ps5ui.dll W32X86/ps5ui.dll;put /usr/share/cups/drivers/pscript.hlp W32X86/pscript.hlp;put /usr/share/cups/drivers/pscript.ntf W32X86/pscript.ntf;put /usr/share/cups/drivers/pscript5.dll W32X86/pscript5.dll" Domain=[DOMENANASZA] OS=[Unix] Server=[Samba 3.0.28] putting file /tmp/47c6827424663 as \W32X86/HP_LaserJet_5L.ppd (20773.4 kb/s) (average 20775.4 kb/s) putting file /usr/share/cups/drivers/ps5ui.dll as \W32X86/ps5ui.dll (10916.6 kb/s) (average 11675.0 kb/s) putting file /usr/share/cups/drivers/pscript.hlp as \W32X86/pscript.hlp (4453.4 kb/s) (average 9394.5 kb/s) putting file /usr/share/cups/drivers/pscript.ntf as \W32X86/pscript.ntf (21501.8 kb/s) (average 17319.3 kb/s) putting file /usr/share/cups/drivers/pscript5.dll as \W32X86/pscript5.dll (20613.5 kb/s) (average 18260.6 kb/s) Uruchamiam polecenie: smbclient //localhost/print$ -N -A /tmp/47c6827d0ecbe -c "put /usr/share/cups/drivers/cups6.ini W32X86/cups6.ini;put /usr/share/cups/drivers/cupsps6.dll W32X86/cupsps6.dll;put /usr/share/cups/drivers/cupsui6.dll W32X86/cupsui6.dll" Domain=[DOMENANASZA] OS=[Unix] Server=[Samba 3.0.28] putting file /usr/share/cups/drivers/cups6.ini as \W32X86/cups6.ini (7.8 kb/s) (average 7.8 kb/s) putting file /usr/share/cups/drivers/cupsps6.dll as \W32X86/cupsps6.dll (12272.2 kb/s) (average 1234.4 kb/s) putting file /usr/share/cups/drivers/cupsui6.dll as \W32X86/cupsui6.dll (13350.3 kb/s) (average 2335.9 kb/s) Uruchamiam polecenie: rpcclient localhost -N -A /tmp/47c6827d0ecbe -c "adddriver "Windows NT x86" "HP_LaserJet_5L:pscript5.dll:HP_LaserJet_5L.ppd:ps5ui.dll:pscript.hlp:NULL:RAW:pscript5.dll,HP_LaserJet_5L.ppd,ps5ui.dll,pscript.hlp,pscript.ntf,cups6.ini,cupsps6.dll,cupsui6.dll"" Printer Driver HP_LaserJet_5L successfully installed. Uruchamiam polecenie: rpcclient localhost -N -A /tmp/47c6827d0ecbe -c "setdriver HP_LaserJet_5L HP_LaserJet_5L" Succesfully set HP_LaserJet_5L to driver HP_LaserJet_5L.
Tutaj pokazałem prawidłową reakcję dla jednej drukarki, nazwanej w CUPS HP_LaserJet_5L. Reakcja taka powinna się powtórzyć dla każdej zainstalowanej drukarki, ewentualnie może wystąpić komunikat o niemożliwości utworzenia istniejących plików/katalogów, ale to nie powinno nas martwić.
Po tym poleceniu sprzątamy pliki /tmp/47* zawierające hasła, wywalamy średnik sprzed invalid users = root oraz ponownie restartujemy sambę….
I to by było na tyle, miłej pracy…