====== Samba jako serwer wydruku dla Windows ======
===== Wstęp =====
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.
===== Oprogramowanie =====
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.specNo i oczywiście instalujemy cups-windows-6.0-1.noarch.rpm :rpm -i cups-windows-6.0-1.noarch.rpmNo i teraz dowolną drogą z istniejącej legalnej instalacji windows wyciągamy pliki ''ps5ui.dll'', ''pscript.ntf'', ''pscript5.dl''l 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.
===== Konfiguracja =====
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 : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFTeraz 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...