PROJECT(5) File Formats and Configurations PROJECT(5)
NAME
project - project file
DESCRIPTION
The
project file is a local source of project information. The
project file can be used in conjunction with other project sources, including the
NIS maps
project.byname and
project.bynumber and the
LDAP database
project. Programs use the
getprojent(3PROJECT) routines to access this
information.
The
project file contains a one-line entry for each project recognized by
the system, of the form:
projname:
projid:
comment:
user-list:
group-list:
attributes where the fields are defined as:
projname The name of the project. The name must be a string that
consists of alphanumeric characters, underline (_)
characters, hyphens (-), and periods (.). The period, which
is reserved for projects with special meaning to the
operating system, can be used only in the names of default
projects for users.
projname cannot contain colons (:) or
newline characters.
projid The project's unique numerical
ID (
PROJID) within the
system. The maximum value of the
projid field is
MAXPROJID.
Project IDs below 100 are reserved for the use of the
operating system.
comment The project's description.
user-list A comma-separated list of users allowed in the project.
With the exception of the special projects referred to
below, an empty field indicates no users are allowed. See
note about the use of wildcards below.
group-list A comma-separated list of groups of users allowed in the
project. With the exception of the special projects
referred to below, an empty field indicates no groups are
allowed. See note about the use of wildcards below.
attributes A semicolon-separated list of name value pairs. Each pair
has the following format:
name[=
value]
where
name is the arbitrary string specifying the key's
name and
value is the optional key value. An explanation of
the valid name-value pair syntax is provided in the
USAGE section of this page. The expected most frequent use of the
attribute field is for the specification of resource
controls. See
resource_controls(7) for a description of the
resource controls supported in the current release of the
Solaris operating system. You can also use the attribute
field for resource caps (see
rcapd(8)) and for the
project.pool attribute (see
setproject(3PROJECT)).
Null entries (empty fields) in the
user-list and
group-list fields, which
normally mean "no users" and "no groups", respectively, have a different
meaning in the entries for three special projects,
user.username,
group.groupname, and
default. See
getprojent(3PROJECT) for a description
of these projects.
Wildcards can be used in user-list and group-list fields of the project
database entry. The asterisk (
*), allows all users or groups to join the
project. The exclamation mark followed by the asterisk (
!*), excludes all
users or groups from the project. The exclamation mark (
!) followed by a
username or groupname excludes the specified user or group from the
project. See EXAMPLES, below.
Malformed entries cause routines that read this file to halt, in which
case project assignments specified further along are never made. Blank
lines are treated as malformed entries in the
project file, and cause
getprojent(3PROJECT) and derived interfaces to fail.
EXAMPLES
Example 1: Sample project File
The following is a sample
project file:
system:0:System:::
user.root:1:Super-User:::
noproject:2:No Project:::
default:3::::
group.staff:10::::
beatles:100:The Beatles:john,paul,george,ringo::task.max-lwps=
(privileged,100,signal=SIGTERM),(privileged,110,deny);
process.max-file-descriptor
Note that the two line breaks in the line that begins with
beatles are
not valid in a
project file. They are shown here only to allow the
example to display on a printed or displayed page. Each entry must be on
one and only one line.
An example project entry for
nsswitch.conf(5) is:
project: files nis
With these entries, the project
beatles will have members
john,
paul,
george, and
ringo, and all projects listed in the
NIS project table are
effectively incorporated after the entry for
beatles.
The
beatles project has two values set on the
task.max-lwps resource
control. When a task in the
beatles project requests (via one of its
member processes) its 100th and 110th LWPs, an action associated with the
encountered threshold triggers. Upon the request for the 100th LWP, the
process making the request is sent the signal
SIGTERM and is granted the
request for an additional lightweight process (LWP). At this point, the
threshold for 110 LWPs becomes the active threshold. When a request for
the 110th LWP in the task is made, the requesting process is denied the
request--no LWP will be created. Since the 110th LWP is never granted,
the threshold remains active, and all subsequent requests for an 110th
LWP will fail. (If LWPs are given up, then subsequent requests will
succeed, unless they would take the total number of LWPs across the task
over 110.) The
process.max-file-descriptor resource control is given no
values. This means that processes entering this project will only have
the system resource control value on this
rctl.
Example 2: Project Entry with Wildcards
The following entries use wildcards:
notroot:200:Shared Project:*,!root::
notused:300:Unused Project::!*:
In this example, any user except "root" is a member of project "notroot".
For the project "notused", all groups are excluded.
USAGE
The
project database offers a reasonably flexible attribute mechanism in
the final name-value pair field. Name-value pairs are separated from one
another with the semicolon (;) character. The name is in turn
distinguished from the (optional) value by the equals (=) character. The
value field can contain multiple values separated by the comma (,)
character, with grouping support (into further values lists) by
parentheses. Each of these values can be composed of the upper and lower
case alphabetic characters, the digits '0' through '9', and the
punctuation characters hyphen (-), plus (+), period (.), slash (/), and
underscore (_). Example resource control value specifications are
provided in EXAMPLES, above, and in
resource_controls(7) and
getprojent(3PROJECT).
SEE ALSO
newtask(1),
prctl(1),
projects(1),
setrctl(2),
unistd.h(3HEAD),
getprojent(3PROJECT),
nsswitch.conf(5),
resource_controls(7) May 9, 2005
PROJECT(5)