|
|
PAPI Client CommandsDelivered in Solaris Nevada build 44What are they ?
Since their beginning, the printing commands have been tied to a
specific print system because they have been implemented on top of
print system specific protocols and interfaces. This is true of BSD
4.x LPR, SysV LP,
LPRng, CUPS, and more. With the recent
introduction of
the FSG OpenPrinting Open
Standard Print (PAPI),
it is now possible to move these commands on top of a print
service/protocol neutral interface. Currently, the PAPI include enough
functionality to support replacement of the following commands:
Destination NamesEach of the printing commands listed
above takes a printer/queue/destination name as at least one of it's
arguments. These destination names can be specified in one of
three forms:
Printer URI formats currently supported include the following:
Some additional information
/usr/bin/lp, /usr/bin/lpstat,
/usr/bin/cancel, /usr/bin/lpmove,
/usr/{ucb|bin}/lpr, /usr/{ucb|bin}lpq, /usr/{ucb|bin}/lprm, /usr/lib/print/printd. In the past, they were installed SUID
root because they needed some elevated privilege to either open a
reserved port, allocate a sequential job-id number, or maniplate
files in /var/spool/print. Since this functionality has been
localized into a small "helper" application (/usr/lib/print/lpd-port),
applications using RFC1179 based PAPI support no longer need elevated
privilege. lpd-port contains minimal support for passing RFC1179
protocol requests on a reserved port and allocating sequential job-id
numbers. While it is installed SUID root, it temporarily drops
all elevated privilege until the moment that they are needed.
When needed, the privilege is elevated for the required operation and
perminently dropped if it is no longer required. On Solaris, this
is done through the use of privileges(5). On other platforms,
this is done using setuid/seteuid/setreuid().
# svcadm disable
application/print/ipp-listener \
application/print/rfc1179 (lpd-listener)
Where can I get access to the bits ?
Where is the Code ?
|