SUMMARY: Do printer quotas exist?

From: David Mostardi (
Date: Fri Dec 13 1991 - 00:26:15 CST

     -------Begin Original Question-------------------------

     I am presently using SunOS (4.1.1) disk quotas to keep users from
     hogging too much disk space. Works fine, no complaints.

     Rumor: there is a "printer quota" system which, for example,
     could limit user Fred to 200 pages per month. Rumor also has it
     that there is a "login quota" where I could limit Fred to, e.g.,
     10 hours of login time per week.

     Is there any truth in these rumors?

     -------End Original Question-------------------------

About Printer Quotas: In general, the answer seems to be: "Nothing
  canned exists, but you can write one yourself." Two respondents
  have written programs which maintain databases like:

        fred 12/5 20 (i.e. fred printed 20 pages on 12/5)
        mary 12/6 5
        fred 12/6 9
        john 12/6 11
        fred 12/7 30

  which can then be summarized into reports. However, these
  programs are only useful Postscript printers, not the SPARCprinters
  we have (which use NEWSprint, not Postscript). The two respondents
  with working systems are:

        Raymond Chen, UC Berkeley
  (until 12/31/91)
  (begins 2/15/92)
        Phil Moyer, Purdue

About Login Quotas: No one responded to that part of my question,
  so I must assume they don't exist yet. However, good news is on
  the horizon. Sun has developed two packages, called ARM and ASET,
  which deal with account management and security. I believe ARM
  will be bundled with the Solaris 5.0 release in May '92, while ASET
  will be released with a later version on Solaris. One of these
  products (I can't remember which) will allow such things as:

  - allow a user to logon only x times
  - deactivate an account after x days/weeks/months
  - activate an account during the week, deactivate it on weekends
  - etc.

Here are the responses about print quotas:


1. Use PLP
PLP is a public domain substitute for lpd,lpr,etc which supports printer
quotas amongst other things.

2. Write your own printer filter.
This is not as hard as it seems. Basically you take an existing filter and
add the quota stuff. I have done this with a line printer by adding code
which queried a dbm file containing paper quotas.


Printer quotas are generall implemented in the filter side, and are not
built into the lpd software. Login quotas are implemented by some of
the security systems, but not by vanillia 4.1.1.


I use a system called lpa which was developed (I think) by the
Engineering Computing Network group here at Purdue. You should be
able to get more info from: < Phil Moyer >


We have a system here called lpa that uses dbm routines to keep track
of printer usage. You must have source to your printer filters to add
the appropriate routines; we have *not* modified our SparcPrinters yet,
so I don't know how hard/easy it will be. I am not altogether happy with
lpa, and I'd like to re-write it someday.

Here's a short summary of lpa:

        The lpa (Line Printer Accounting) system running at the ECN at
        Purdue is an add-in set of library routines that keep track of
        printer use.

        A dbm database is kept in the printer's spool directory, along with
        log files and messages to display for the user (such as "you're out
        of paper; see this person to buy more" or "you don't have permission
        to print on this printer").

        The actual routines are compiled into the print filter for that
        particular kind of printer. We have modified Adobe's pscomm for
        laserwriters, QMS's ies for ethernet Imagen printers, and some of
        the standard filters for line printers.

        There are three kinds of users in lpa: superuser, administrator, and
        user. An account with superuser privs can do anything, an account
        with administrator privs can do almost anything, and a user can only
        look at his/her own account. There are three kinds of accounts:
        paynow, paylater, and paynever. Paynow accounts must have pre-
        purchased the pages, which means that the pages-to-print field must
        always be positive in order for that user to print. Paylater accounts
        are allowed to run a tab, which means that the pages-to-print field
        is allowed to go negative, assuming the user will pay up later. The
        paynever accounts are for systems administrators who never have to
        pay up, since they paid for the paper in the first place. :-)

        There are shell scripts included that will print daily and monthy
        usage summaries and mail them to whoever wants to see them.


Yes we have - we developed some daemons, which includes classes of
users also.


I had to implement printer quotas here myself, as part of the printer's
"if" filter. It's a perl program which does a bunch of other things
(like spooling to a printer on a terminal server) as well.


Not with the bundled software. You could get a public-domain printer
spooling system (plp? or some such from Columbia?), and it can do quotas
(along with a lot of other fun stuff). Only difficulty is that you have
to replace the spooler executables (like lpd, lpq, lpc, lpd) on ALL your

The bundled spooling system (BSD) DOES allow for printer accounting,
allowing for after-the-fact billing and/or finger-pointing.

Never yet heard of a login quota system (though other operating systems
allow for it). Again, you can do accounting for what has been used, but
not control it (see ac, last, etc.).

David Mostardi Phone: (510) 643-6071
Systems Administrator FAX: (510) 643-5348
Mathematical Sciences Research Institute Email:
1000 Centennial Drive, Berkeley CA 94720

This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:06:21 CDT