PROJMOD(8) Maintenance Commands and Procedures PROJMOD(8)

NAME


projmod - modify a project's information on the system

SYNOPSIS


projmod [-n] [-A|-f filename | -]


projmod [-n] [-A|-f filename | -] [-p projid [-o]]
[-c comment] [-a|-s|-r] [-U user[,user]...]
[-G group[,group]...]
[-K name[=value[,value]...]]...
[-l new_projectname] project


DESCRIPTION


The projmod utility modifies a project's definition on the system.
projmod changes the definition of the specified project and makes the
appropriate project-related system file and file system changes.

OPTIONS


The following options are supported:

-A
Apply the project's resource controls, as
defined in the system's project database, to
the project if it is active.


-a
Specify that the users, groups, attributes,
or attribute values specified by the -U, -G
or -K options should be added to the
project, rather than replacing the existing
member or attribute list.


-c comment
Specify comment as a text string. Generally,
comment contains a short description of the
project. This information is stored in the
project's /etc/project entry.


-f filename | -
Specify the project file to modify or
validate or specify input from stdin for
validation. As noted under OPERANDS, if you
do not specify a project in a projmod
command line, projmod validates the argument
to -f. If you do not use this option, the
system project file, /etc/project, is
modified.


-G group[,group]...]fR
Specify a replacement list of member groups
of the project. When used in conjunction
with the -a or -r options, this option
specifies a list of groups to be added or
removed from the project.


-K name[=value[,value]...]
Specify a replacement list of project
attributes for the project. When used in
conjunction with the -a, -r, or -s options,
this option specifies a list of attribute
values to be added, removed, or replaced in
the project. Attributes must be delimited by
semicolons (;). Multiple -K options can be
specified to set, add, remove, or substitute
values on multiple keys, such as:

-K key1=value1 -K "key2=(value2a),(value2b)"

Resource control attributes use parentheses
to specify values for a key. Because many
user shells interpret parentheses as special
characters, it is best to enclose an
argument to -K that contains parentheses
with double quotes, as shown above and in
EXAMPLES, below. See resource_controls(7)
for a description of the resource controls
you can specify for a project.


-l new_projectname
Specify the new project name for the
project. The new_projectname argument is a
string consisting of characters from the set
of alphabetic characters, numeric
characters, period (.), underline (_), and
hyphen (-). The first character should be
alphabetic. An error message is written if
these restrictions are not met. The project
name must also be unique within the project
file.


-n
Syntax check. Check the format of the
existing system project file and
modifications only. The contents of the
existing project file, such as user names,
group names, and resources that are
specified in the project attributes are not
checked.


-o
This option allows the project ID specified
by the -p option to be non-unique within the
project file.


-p projid
Specify a new project ID for the project. It
must be a non-negative decimal integer less
than MAXUID as defined in <sys/param.h>.
This value must be unique within the project
file if the -o option is not specified.


-r
Specify that the users, groups, attributes,
or attribute values specified by the -U, -G
or -K options should be removed from the
project, rather than replacing the existing
member or attribute list.


-s
Specify that the list of attributes
specified by the -K option should have their
values replaced. If the attributes do not
exist, they are added as if the a option was
used. This option has no effect the -U or -G
options.


-U user[,user]...
Specify a replacement list of member users
of the project. When used in conjunction
with the -a or -r options, this option
specifies a list of users to be added or
removed from the project.


OPERANDS


The following operands are supported:

project
An existing project name to be modified or displayed.


(none)
If no operand is given, the project file is validated without
modifying any project.


EXAMPLES


Example 1: Using the -K Option for Addition of an Attribute Value




Consider the following project(5) entry:


salesaudit:111:Auditing Project::sales,finance: \
process.max-file-size=(priv,52428800,deny); \
task.max-lwps=(priv,100,deny)


The preceding would appear as one line in /etc/project. For this and the
following examples, the focus is on the attributes field in the project
entry. That is, the last field, the field following the last semicolon.


The attributes field for the project salesaudit lists the following
resource control:


task.max-lwps=(priv,1000,signal=KILL)


The following projmod command adds an action clause to the preceding
entry:


# projmod -a -K "task.max-lwps=(priv,100,deny)" salesaudit


...with the resulting attributes field in the entry for salesaudit:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)


Example 2: Using the -K Option for the Substitution of an Attribute Value




Assume an attributes field in a project(5) entry for the project
salesaudit that lists the following resource control:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)


The following projmod command substitutes the action clause specified in
the command for the action clauses in the preceding entry:


# projmod -s -K "task.max-lwps=(priv,500,signal=SIGSTOP)" salesaudit


...with the resulting attributes field in the entry for salesaudit:


task.max-lwps=(priv,500,signal=SIGSTOP)


Example 3: Using the -K Option for Removal of an Attribute Value




Assume an attributes field in a project(5) entry for a project salesaudit
that lists the following resource control:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)


The following projmod command removes the first action clause from the
preceding entry:


# projmod -r -K "task.max-lwps=(priv,100,deny)" salesaudit


...with the resulting attributes field in the entry for salesaudit:


task.max-lwps=(priv,1000,signal=KILL)


Example 4: Specifying Multiple Attribute Values




Suppose you want to achieve the following resource controls for the
project salesaudit:


task.max-lwps=(priv,100,deny)
process.max-file-size=(priv,50MB,deny)


The following projmod command adds these resource controls for
salesaudit:


# projmod -a -K "task.max-lwps=(priv,100,deny)" \
-K "process.max-file-size=(priv,50MB,deny)" salesaudit


...with the resulting attributes field in the entry for salesaudit:


task.max-lwps=(priv,100,deny);process.max-file-size=(priv,52428800,deny)


In this example, note the effect of the use of the modifier and scaling
factor for the resource control process.max-file-size. The specification
in projmod:


"process.max-file-size=(priv,50MB,deny)"


...becomes, in /etc/project:


process.max-file-size=(priv,52428800,deny)


That is, 50MB is expanded to 52428800. The modifiers, such as MB, and
scaling factors you can use for resource controls are specified in
resource_controls(7).


Example 5: Binding a Pool to a Project




The following command sets the project.pool attribute for the project
sales.


# projmod -a -K project.pool=salespool sales


Example 6: Evaluating Input from stdin




The following command uses the -f option without a project name operand
to evaluate the contents of an NIS projects map.


# ypcat project | projmod -f -


EXIT STATUS


In case of an error, projmod prints an error message and exits with one
of the following values:


The following exit values are returned:

0
Successful completion.


2
The command syntax was invalid. A usage message for projmod is
displayed.


3
An invalid argument was provided to an option.


4
The projid given with the -p option is already in use.


5
The project files contain an error. See project(5).


6
The project to be modified, group, user, or resource does not
exist.


9
The project is already in use.


10
Cannot update the /etc/project file.


FILES


/etc/group
System file containing group definitions


/etc/project
System project file


/etc/passwd
System password file


/etc/shadow
System file containing users' encrypted passwords and
related information


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | See below. |
+--------------------+-----------------+


Invocation is evolving. Human readable output is unstable.

SEE ALSO


passwd(5), project(5), attributes(7), resource_controls(7), groupadd(8),
groupdel(8), groupmod(8), projadd(8), projdel(8), useradd(8), userdel(8),
usermod(8)

NOTES


The projmod utility modifies project definitions only in the local
/etc/project file. If a network name service is being used to supplement
the local files with additional entries, projmod cannot change
information supplied by the network name service. However projmod
verifies the uniqueness of project name and project ID against the
external name service.

January 7, 2018 PROJMOD(8)