MacOS X und cups

Druckjobs tauchen immer wieder auf

Problem: Ein lokal angeschlossener Drucker wird von einem Mac im Netz freigegeben. Ein anderer Mac druckt darauf. Irgendwas geht aber schief, die Datei wird nicht gedruckt. Im Druckmanager von OS x kann der Job zwar gelöscht werden, taucht dann aber sofort wieder auf. Scheinbar ist die einzige Lösung das Löschen und Neuanlegen des Druckers.

Betroffene Systeme: Mac OS X 10.3.x, Mac OS X 10.4.y (mind. bis 10.4.3), vermutlich auch frühere OS X-Versionen.

Hintergrund: Eigentlich löscht der Druckmanager die Jobs gar nicht, diese werden von cups verwaltet und die von einem anderen Rechner aus abgeschickten Jobs darf ein Benutzer gar nicht löschen (cups Sicherheitsfeature). Allerdings hat das Apple-Programm einen Bug, so dass hier keine Fehlermeldung ausgegeben wird.

Lösung: Das Löschen ist nur über das cups-Webinterface (http://localhost:631) möglich. Allerdings werdet ihr beim Löschen eines Jobs standardmäßig eine Fehlermeldung wie "client-error-forbidden" bekommen, weil ihr bei cups nicht angemeldet seid und daher auch keine Jobs löschen dürft. Abhilfe schafft hier ein Eintrag in der /private/etc/cups/cupsd.conf.

<Location /jobs>
     # You may wish to limit access to job operations, either with Allow
     # and Deny lines, or by requiring a username and password.
     AuthType Basic
     AuthClass System
     Allow from 127.0.0.1
</Location>

Anschließend mittels ps aux | grep cups die Prozess-ID ermitteln, mit kill cups beenden und mittels cupsd wieder neu starten (vielen Dank übrigens an Adam Rosi Kessel für diese Lösung). Allerdings können damit nur "Admin"-User sich anmelden bzw. Jobs löschen.

Damit das auch bei allen anderen geht, wird die Gruppe cupsadmins angelegt. Das geht entweder über den Netinfo-Manager oder (wie ich finde einfacher) über die Konsole. Dazu benötigt ihr zwei Skripte: add-group und add-user2group (Dank an die Macher von OSXFAQ.com, die diese Skripte bereit gestellt haben (http://www.osxfaq.com/tips/unix-tricks/week91/thursday.ws, http://www.osxfaq.com/tips/unix-tricks/week91/friday.ws). Diese ladet ihr runter und macht sie ausführbar (chmod 0700 add-*).

./add-group cupsadmins 137
./add-user2group cupsadmins <usernamen>

Die Gruppen-ID 137 ist übrigens willkürlich von mir gewählt, vielleicht gibt das später Probleme. Bei mir klappts aber erst mal.

Anschließend muss noch die cupsd.conf wieder angepasst werden und zwar der Eintrag SystemGroup wird um cupsadmins ergänzt, so dass alle Benutzer der Gruppe cupsadmins das cups-System vollständig verwalten können.

Mit MacOS X 10.3 (Panther) gibt es noch weitere Probleme, da hat Apple nochmals Mist gebaut (s. cups-Webinterface kaputt). Bei neueren und älteren Versionen (Jaguar, Tiger) könnt ihr euch zum Glück jetzt erst mal zurücklehnen.

cups-Webinterface kaputt

Problem: Ihr versucht euch unter http://localhost:631 ins cups-Webinterface einzuloggen, was aber nicht klappt, da euer Passwort scheinbar nicht akzeptiert wird.

Betroffene Systeme: nur Mac OS X 10.3.x (mind. bis 10.3.9)

Hintergrund: Apple hat Systemschnittstellen geändert, aber das mitgelieferte cups nicht angepasst. Ich finde es höchst ärgerlich und extrem peinlich für Apple, dass sie es bis 10.3.9 nicht für nötig befunden haben, den Bug zu beheben. Für weitere technische Hintergründe verweise ich auf What Password Do I Need to Use in the Web Interface?. Vielen Dank auch an die Forenmitglieder von OSXFAQ, da ich dort einen Ansatzpunkt für das Problem gefunden habe.

Lösung: Wie schon unter cups.org beschrieben, müsst ihr wohl die Passwörter der User auf Basic zurückstellen, da ihr ohne Authentifizierung keine Druckjobs löschen könnt (Problem s.o.).