/etc/lprng/lpd.perms is in lprng 3.8.B-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | ###########################################################################
# LPRng - An Extended Print Spooler System
#
# Copyright 1988-2001 Patrick Powell, San Diego, CA
# papowell@lprng.com
# See LICENSE for conditions of use.
#
###########################################################################
# MODULE: TESTSUPPORT/lpd.perms.proto
# PURPOSE: prototype printer permissions file
##########################################################################
# Printer permissions data base
## #
## LPRng - An Enhanced Printer Spooler
## lpd.perms file
## Patrick Powell <papowell@lprng.com>
##
## Access control to the LPRng facilities is controlled by entries
## in a set of lpd.perms files. The common location for these files
## are: /etc/lpd.perms, /usr/etc/lpd.perms, and /var/spool/lpd/lpd.perms.
## The locations of these files are set by the perms_path entry
## in the lpd.conf file or by compile time defaults in the
## src/common/defaults.c file.
##
## Each time the lpd server is given a user request or carries out an
## operation, it searches to the perms files to determine if the action
## is ACCEPT or REJECT. The first ACCEPT or REJECT found terminates the search.
## If none is found, then the last DEFAULT action is used.
##
## Permissions are checked by the use of 'keys' and matches. For each of
## the following LPR activities, the following keys have a value.
##
## Key Match Connect Job Job LPQ LPRM LPC
## Spool Print
## SERVICE S 'X' 'R' 'P' 'Q' 'M' 'C'
## USER S - JUSR JUSR JUSR JUSR JUSR
## HOST S RH JH JH JH JH JH
## GROUP S - JUSR JUSR JUSR JUSR JUSR
## IP IP RIP JIP JIP RIP JIP JIP
## PORT N PORT PORT PORT PORT PORT PORT
## UNIXSOCKET V SK SK SK SK SK SK
## REMOTEUSER S - JUSR JUSR JUSR CUSR CUSR
## REMOTEHOST S RH RH JH RH RH RH
## REMOTEGROUP S - JUSR JUSR JUSR CUSR CUSR
## CONTROLLINE S - CL CL CL CL CL
## PRINTER S - PR PR PR PR PR
## FORWARD V - SA - - SA SA
## SAMEHOST V - SA - SA SA SA
## SAMEUSER V - - - SU SU SU
## SERVER V - SV - SV SV SV
## LPC S - - - - - LPC
## AUTH V - AU AU AU AU AU
## AUTHTYPE S - AU AU AU AU AU
## AUTHUSER S - AU AU AU AU AU
## AUTHFROM S - AU AU AU AU AU
## AUTHSAMEUSER S - AU AU AU AU AU
## REMOTEIP is an alias for REMOTEHOST
## REMOTEPORT is an alias for PORT
## IP is an alias for HOST
##
## KEY:
## JH = HOST IP address/DNS name of host in control file
## RH = REMOTEHOST connecting host IP address/DNS Name
## JUSR = USER user in control file
## CUSR = REMOTEUSER user making control operation request
## JIP= IP IP address/DNS name of host in control file
## RIP= REMOTEIP IP address/DNS name of requesting host
## PORT= connecting host origination port
## SK= true (match) if connection from a unix socket
## CONTROLLINE= pattern match of control line in control file
##
## SA= IP of source of request == IP of host in control file
## SU= user name making request == user in control file
## SV= IP of source of request = IP of server host or server Localhost
## LPC= lpc command globmatched against values
## AU= Authorization check on transfer
## AUTH will be true (match) if authenticated request
## AUTHTYPE will match authentication type of request to pattern
## AUTHUSER will match client authentication id to pattern
## AUTHFROM will match request originator authentication id to pattern
## AUTHSAMEUSER will match requestor authentication id
## to authentication id in job
##
## Match: S = globmatch, IP = IPaddress[/netmask],
## N = low[-high] number range, V= matching or compatible values
## SERVICE: 'X' - Connection request; 'R' - lpr request from remote host;
## 'P' - print job in queue; 'Q' - lpq request, 'M' - lprm request;
## 'C' - lpc spool control request;
## NOTE: when printing (P action), the remote and job check values
## (i.e. - RUSR, JUSR) are identical.
## NOTE: the HOST, USER, SAMEUSER and SAMEHOST checks always succeed
## when checking permissions for a spool queue; they are active only when
## checking permissions of a spooled job.
##
## The UNIXSOCKET will match (true) when connection was made over a UNIX
## socket.
##
## The SAMEHOST match checks to see that one (or more) of the
## IP addresses of the host originating a request is/are the
## matches one or more of the IP addresses of the host whose
## hostname appears in the control file.
## The SAMEHOST match checks to see that one (or more) of the
## IP addresses of the host originating a request is/are the
## matches one or more of the IP addresses of the server.
## FORWARD is the same as NOT SAMEHOST, i.e. - request is
## forwarded.
##
## The special key letter=patterns searches the control file
## line starting with the (upper case) letter, and is usually
## used with printing and spooling checks. For example,
## C=A*,B* would check that the class information (i.e.- line
## in the control file starting with C) had a value starting
## with A or B.
##
## A permission line consists of list of tests and an a result value
## If all of the tests succeed, then a match has been found and the
## permission testing completes with the result value. You use the
## DEFAULT reserved word to set the default ACCEPT/DENY result.
## The NOT keyword will reverse the sense of a test.
##
## Each test can have one or more optional values separated by
## commas. For example USER=john,paul,mark has 3 test values.
##
## The Match type specifies how the matching is done.
## S = glob type string match OR </path
## Format: string with wildcards (*) and ranges
## * matches 0 or more chars
## [a-d] matches a or b or c or d
## Character comparison is case insensitive.
## For example - USER=th*s matches uTHS, This, This, Theses
## USER=[d-f]x matches dx, ex, fx
## If the match is </path then the specified file is
## opened and read, and the file contents are treated like
## S type entries separated by whitespace
##
##
## IP = IP address and submask. IP address must be in dotted form.
## OR </path
## Format: x.x.x.x[/y.y.y.y] x.x.x.x is IP address
## y.y.y.y is optional submask, default is 255.255.255.255
## Match is done by converting to 32 bit x, y, and IP value and using:
## success = ((x ^ IP ) & y) == 0 (C language notation)
## i.e.- only bits where mask is non-zero are used in comparison.
## For example - REMOTEIP=130.191.0.0/255.255.0.0 matches all address 130.191.X.X
## If the match is </path then the specified file is
## opened and read, and the file contents are treated like
## S type entries separated by whitespace
##
## N = numerical range - low-high integer range.
## Format: low[-high]
## Example: PORT=0-1023 matches a port in range 0 - 1023 (privileged)
##
## The SAMEUSER and SAMEHOST are options that form values from information
## in control files or connections. The GROUP entry searches the user group
## database for group names matching the pattern, and then searches these
## for the user name. If the name is found, the search is successful.
## The SERVER entry is successful if the request originated from the current
## lpd server host.
##
## Note carefully that the USER, HOST, and IP values are based on values found
## in the control file currently being checked for permissions. The
## REMOTEUSER, REMOTEHOST, and REMOTEIP are based on values supplied as part
## of a connection to the LPD server, or on the actual TCP/IP connection.
##
## The LPC entry matches an LPC command. For example LPC=topq would match
## when an lpc topq command is being executed. You must still have the
## SERVICE=C entry to trigger this action.
##
## Note: the SERVICE=R and SERVICE=P both check the LPR actions
## of sending a job. However, SERVICE=R does it when the job is being
## sent to the LPD server. Some LPD (and LPR) implementations cannot
## handle a job being rejected due to lack of permissions, and sit in
## an endless loop trying to resend the job. This is the reason for
## the SERVICE=P check. You can accept the job for printing, and then
## have the SERVICE=P check remove the job.
##
## NOTE: if you do not have an explicit ACCEPT SERVICE=P or
## DEFAULT ACCEPT action then your print jobs will be accepted
## and then quietly discarded.
##
## Example Permissions
##
## # All operations allowed except those specifically forbidden
## DEFAULT ACCEPT
##
## # Accept connections from hosts on subnet 130.191.0.0 or
## # from the server.
## ACCEPT SERVICE=X REMOTEIP=130.191.0.0/255.255.0.0,\
## 128.0.0.0/8
## # from a named set of sites
## ACCEPT SERVICE=X REMOTEHOST=engpc*
## # listed in the /etc/accepthost file
## ACCEPT SERVICE=X REMOTEHOST=</etc/accepthost
## - /etc/rejecthost contains list of entries separated
## by whitespace. For example:
## 10.0.0.0/8 128.0.0.0/8
## 192.168.10.1 192.168.10.2
## # don't take them from this particular host
## REJECT SERVICE=X REMOTEHOST=badhost.eng.com
## # Reject all others
## REJECT SERVICE=X
##
## #Do not allow anybody but root or papowell on
## #astart1.astart.com or listed in the /etc/ok file
## #to use lpc commands:
## ACCEPT SERVICE=C SERVER REMOTEUSER=root
## ACCEPT SERVICE=C REMOTEHOST=astart1.astart.com \
## REMOTEUSER=papowell,</etc/ok
## /etc/ok has list of users:
## root papowell nobody
## user1 user2
##
## #Allow root on talker.astart.com to control printer hpjet
## ACCEPT SERVICE=C HOST=talker.astart.com PRINTER=hpjet REMOTEUSER=root
## #Reject all others
## REJECT SERVICE=C
##
## #Do not allow forwarded jobs or requests
## REJECT SERVICE=R,C,M FORWARD
##
## If you want to have connections only from programs on
## the local host, either set lpd_listen_port in lpd.conf to off,
## uncomment the next line, or both:
REJECT NOT SERVER
## You can make sure that connections come from a privileged port.
## Default is to allow them from any port so that non-setuid programs
# can do printing.
# Totally RFC1179
#REJECT SERVICE=X NOT PORT=1-1023
#REJECT SERVICE=X NOT PORT=1-1023
# Privileged
#REJECT SERVICE=X NOT PORT=721-731
#
# allow root on server to control jobs
ACCEPT SERVICE=C SERVER REMOTEUSER=root
# allow anybody to get server, status, and printcap
ACCEPT SERVICE=C LPC=lpd,status,printcap
# reject all others
REJECT SERVICE=C
#
# allow same user on originating host to remove a job
ACCEPT SERVICE=M SAMEHOST SAMEUSER
# allow root on server to remove a job
ACCEPT SERVICE=M SERVER REMOTEUSER=root
REJECT SERVICE=M
# all other operations allowed
DEFAULT ACCEPT
|