Using Samba and CUPS, the Common UNIX Printing System, Ubuntu can easily be configured to provide printing services to a heterogeneous network of Windows, Macintosh and Linux clients.
Printing with CUPS
Get the necessary packages with the following command:
user@ubuntu:~$ sudo apt-get install cupsys foomatic-filters-ppds
Add the user cupsys to the group shadow:
user@ubuntu:~$ sudo adduser cupsys shadow
Get the file cupsd.conf and move it to /etc/cups/:
user@ubuntu:~# sudo wget "https://edafe.org/ubuntu/cups/cupsd.conf"
user@ubuntu:~# sudo mv cupsd.conf /etc/cups/
The downloaded file contains the following changes from the Ubuntu default configuration:
# Default authentication type, when authentication is required...
# Restrict access to the admin pages...
Setting these options enables members of the admin group to modify the configuration of the CUPS server from clients sharing the same local network.
Modify the file /etc/cups/cups.d/ports.conf to read:
For 192.168.0.123, substitute the IP address of your machine on the local network.
Restart cupsd with the following command:
user@ubuntu:~$ sudo /etc/init.d/cupsys restart
Use a web browser to access http://localhost:631/admin (or http://192.168.0.123:631/admin from another machine on your local network). Go to Administration > Add Printer and begin to set up your printer. When prompted by the system, authenticate yourself as a member of the admin group. If necessary, obtain the correct PostScript Printer Description (PPD) file for your printer model. Print a test page to confirm that your printer is working properly with CUPS.
Making Printers Available over the Network
Install and configure a Samba server and then add the following options to /etc/samba/smb.conf:
printing = cups
load printers = Yes
printcap name = cups
comment = All Printers
printable = Yes
path = /var/spool/samba/print
browseable = No
guest ok = Yes
read only = Yes
Create the directory /var/spool/samba/print and set its permissions with the following two commands:
user@ubuntu:~$ sudo mkdir -p /var/spool/samba/print
user@ubuntu:~$ sudo chmod 1777 /var/spool/samba/print
Restart the Samba server with the following command:
user@ubuntu:~$ sudo /etc/init.d/samba restart
Set your Samba clients to use a printer driver that outputs generic PostScript. Use the the Apple LaserWriter driver on Windows, the Generic PostScript driver on Mac OS X or the Raw Standard driver on Ubuntu.