projects - introduction to IRIX projects
Many sites need to be able to charge individual departments separately
for their usage of a given system. Typically, this can be done by
billing the total usage for each userid on the system to the appropriate
department. However, some sites may have users that do work for more
than one department, so billing such a user's total usage to a single
department would not be appropriate. It would be possible to give this
sort of user multiple user IDs or group IDs, but that can be difficult to
manage administratively, and besides it would be using a security feature
of the operating system to accomplish an accounting function. Therefore,
IRIX has the concept of a project ID.
A project ID is similar to a group ID, with two major exceptions:
1. The current project ID is associated with an entire array session,
not an individual process.
2. The project ID does not affect access permissions - it is intended
mainly for accounting purposes, and is in fact reported in extended
accounting information (see extacct(5) for details).
Users have a default project ID associated with their user IDs. Whenever
it is necessary for a user to do work that should be billed to a
different project, the newproj(1) command can be used to switch to a new
project ID. The user's UID and GID are unchanged by the newproj command,
so access permissions are unaffected. The newproj command starts a new
shell and array session so that programs running in the background under
the old shell will continue to be accounted for under the old project ID.
To prevent users from specifying a project for which they are not
authorized, the newproj command consults a file (/etc/project) that lists
the projects that are valid for each user. /etc/project is similar in
style to /etc/passwd or /etc/group (see project(4) for details). Because
the project ID is a numeric value, an additional file (/etc/projid, see
projid(4)) is used to correlate ASCII project names, which are used by
/etc/project, with numeric project IDs. A standard default project ID is
used when a user cannot be found in these files. This default value can
be changed by modifying the dfltprid variable using systune(1).
The standard IRIX utilities for logging in to the system (e.g. login,
rshd) will automatically create a new array session and assign the user's
default project ID to it. User-provided programs that perform a login or
the moral equivalent can (and should) do the same thing using the
newarraysess(2) and setprid(2) functions. To assist in this, a number of
libc functions are provided for parsing /etc/project and /etc/projid;
see, for example, projid(3C), getdfltprojuser(3C) and validateproj(3C)
for more details.
systune(1), getprid(2), newarraysess(2), setprid(2), getdfltprojuser(3C),
getprojuser(3C), project(4), projid(4), array_sessions(5), extacct(5).
PPPPaaaaggggeeee 2222 [ Back ]