Once you got CUPS up and running (check out this page for a more detailed description),
you can easily provide printing services to the Windows world.
(I'll use the Debian packages samba-2.2.3a and cupsys-1.1.14-3 with my description here.)
Thanks to Jason Buberel for his great instructions at
http://www.buberel.org/linux/cups-samba.php.
Another site dealling with CUPS under Debian can be found here.
The important settings in the [global] section are printcap name = lpstat
and printing = cups.
[printers] holds print command, lpq command and lprm command besides the usual
settings for a (printer) share.
The option use client driver = yes should solve the problem if you get
an "access denied, no connection possible" message on the Windows client's printer window.
/etc/samba/smb.conf
[global]
workgroup = WOODS
netbios name = forest
server string = %h server (Samba %v)
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096
time server = yes
client code page = 850
character set = ISO8859-15
invalid users = bin daemon adm sync shutdown halt mail news uucp operator gopher
hosts allow = 192.168.0.0/255.255.255.0 localhost
domain logons = yes
security = user
os level = 255
local master = yes
preferred master = yes
domain master = yes
logon script = logon.bat
logon drive = u:
encrypt passwords = yes
log file = /var/log/samba/log.%m
max log size = 50
deadtime = 60
#max 02-05-04 -- Deactivating Roaming User-Profiles:
logon home =
logon path =
domain admin group = @n-admin
nt acl support = no
# cups
printcap name = lpstat
printing = cups
[netlogon]
comment = The domain logon service
path = /data/netlogon
public = no
writeable = no
browsable = no
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = yes
writable = no
printable = yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
# use client driver = yes
[homes]
comment = "Verzeichnis fuer: %u"
browsable = no
writeable = yes
guest ok = no
Add-on - 03-01-14:
According to Linux New Media's
Linux Magazin,
edition 2/2003,
article "Druckverteiler", it reads to set "print command = lp -c -d%p -oraw; rm %s"
for CUPS without Libcups and "printcap name = cups". Nevertheless, the configuration
mentioned above works perfectly for me.
BTW: There are 2 possibilities for Windows-clients to print: 1. Either by using printer-drivers
installed on the client specific for the destination-printer and having Samba and CUPS just passing them
through (keyword "raw"). 2. Have the client print to a Postscript-File and hand it to the server which
then converts it to the corresponding printer-format according to its own drivers.
The article also explains on how to automatically install the correct printer drivers on a Windows-client
with the driver being loaded from the Samba-server for both ways just mentioned above.
After running testparm and restarting Samba, simply add the printer to the Windows client. You can use the "Add Printer Wizard" for this selecting the Linux server as the printer's host. You should install the corresponding printer driver locally, using the database of Windows 2000 itself.
Taken from Buberel's homepage:
"Lastly, a note about your system startup scripts: In order for Samba to recognize that CUPS is available as a printing system, the cups daemon must be up and running before you start your sabma daemon. On RedHat 7.3, the startup order is Samba first, then CUPS. You should change this around so that cups starts before samba. This can be done by using the 'chkconfig' tool."