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
projmod 实用程序用于修改系统中的项目定义。projmod 可以更改指定项目的定义并对系统文件和文件系统进行与项目相关的相应更改。
支持以下选项:
将系统项目数据库中定义的项目资源控制应用于项目(如果项目处于活动状态)。
指定应将 –U、–G 或 –K 选项指定的用户、组、属性或属性值添加到项目中,而不是替换现有的成员或属性列表。
将 comment 指定为文本字符串。通常,comment 包含项目的简短描述。此信息存储在项目的 /etc/project 条目中。
指定要修改或验证的项目文件或指定 stdin 输入用于验证。如“操作数”部分的说明,如果您没有在 projmod 命令行中指定项目,projmod 将验证 –f 的参数。如果没有使用此选项,将修改系统项目文件 /etc/project。
指定项目成员组的替换列表。与 –a 或 –r 选项结合使用时,此选项将指定要添加到项目中或从中删除的组的列表。
指定项目的项目属性替换列表。与 –a、–r 或 –s 选项结合使用时,此选项将指定要在项目中添加、删除或替换的属性值列表。属性必须以分号 (;) 进行分隔。可以指定多个 –K 选项以设置、添加、删除或替换多个键的值,例如:
-K key1=value1 -K "key2=(value2a),(value2b)"
资源控制属性使用括号来指定键值。由于许多用户 shell 都将括号解释为特殊字符,因此最好使用双引号将包含括号的 –K 参数括起来,如上例和下文的“示例”部分所示。有关可为项目指定的资源控制的说明,请参见 resource_controls (5)。
指定项目的新项目名称。new_projectname 参数是一个以下字符组成的字符串:字母字符、数字字符、句点 (.)、下划线 (_) 和连字符 (-)。第一个字符应为字母。如果不满足这些限制,将写入一条错误消息。项目名称在项目文件中还必须是唯一的。
语法检查。仅检查现有系统项目文件格式和相关修改。不检查现有项目文件内容,例如项目属性中指定的用户名、组名和资源。
此选项允许 –p 选项指定的项目 ID 在项目文件中不唯一。
为项目指定新的项目 ID。该值必须为小于 param.h 中定义的 MAXUID 的非负十进制整数。如果未指定 –o 选项,此值在项目文件中必须是唯一的。
指定应从项目中删除由 –U、–G 或 –K 选项指定的用户、组、属性或属性值,而不是替换现有成员或属性列表。
指定应替换 –K 选项指定的属性列表中相应属性的值。如果属性不存在,会像使用 a 选项一样添加这些属性。此选项不会对 –U 或 –G 选项造成任何影响。
指定项目的成员用户的替换列表。与 –a 或 –r 选项结合使用时,该选项会指定要在项目中添加或删除的用户列表。
支持下列操作数:
要修改或显示的现有项目名称。
如果没有给定任何操作数,将验证项目文件而不修改任何项目。
请考虑以下 project(4) 条目:
salesaudit:111:Auditing Project::sales,finance: \ process.max-file-size=(priv,52428800,deny); \ task.max-lwps=(priv,100,deny)
以上条目在 /etc/project 中将显示为一行。对于本例和以下示例,重点在于 project 条目中的属性字段。即,最后一个字段,也就是最后一个分号后面的字段。
项目 salesaudit 的属性字段列出了以下资源控制:
task.max-lwps=(priv,1000,signal=KILL)
以下 projmod 命令将操作子句添加到以上条目中:
# projmod -a -K "task.max-lwps=(priv,100,deny)" salesaudit
在 salesaudit 的条目中将生成以下属性字段:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)示例 2 使用 –K 选项替换属性值
假定项目 salesaudit 的 project(4) 条目中的属性字段列出了以下资源控制:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
以下 projmod 命令使用命令中指定的操作子句替换以上条目中的操作子句:
# projmod -s -K "task.max-lwps=(priv,500,signal=SIGSTOP)" salesaudit
在 salesaudit 的条目中将生成以下属性字段:
task.max-lwps=(priv,500,signal=SIGSTOP)示例 3 使用 –K 选项删除属性值
假定项目 salesaudit 的 project(4) 条目中的属性字段列出了以下资源控制:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
以下 projmod 命令删除以上条目中的第一个操作子句:
# projmod -r -K "task.max-lwps=(priv,100,deny)" salesaudit
在 salesaudit 的条目中将生成以下属性字段:
task.max-lwps=(priv,1000,signal=KILL)示例 4 指定多个属性值
假定您要对项目 salesaudit 实现以下资源控制:
task.max-lwps=(priv,100,deny) process.max-file-size=(priv,50MB,deny)
以下 projmod 命令为 salesaudit 添加这些资源控制:
# projmod -a -K "task.max-lwps=(priv,100,deny)" \ -K "process.max-file-size=(priv,50MB,deny)" salesaudit
在 salesaudit 的条目中将生成以下属性字段:
task.max-lwps=(priv,100,deny);process.max-file-size=(priv,52428800,deny)
请注意此示例中使用的修饰符和比例系数对资源控制 process.max-file-size 的作用。projmod 中指定的内容:
"process.max-file-size=(priv,50MB,deny)"
在 /etc/project 中将变为:
process.max-file-size=(priv,52428800,deny)
即,50MB 扩展为 52428800。可用于资源控制的修饰符(例如 MB)以及比例系数是在 resource_controls (5) 中指定的。
示例 5 将池绑定到项目以下命令设置项目 sales 的 project.pool 属性。
# projmod -a -K project.pool=salespool sales示例 6 评估 stdin 中的输入
以下命令使用不带项目名称操作数的 –f 选项评估 NIS 项目图的内容。
# ypcat project | projmod -f -
如果出现错误,projmod 将输出错误消息并以下列某一值退出:
将返回以下退出值:
成功完成。
命令语法无效。将显示 projmod 的用法消息。
为选项提供的参数无效。
使用 –p 选项指定的 projid 已在使用中。
项目文件中包含错误。请参见 project(4)。
要修改的项目、组、用户或资源不存在。
项目已在使用中。
无法更新 /etc/project 文件。
包含组定义的系统文件
系统项目文件
系统口令文件
包含用户加密口令和相关信息的系统文件
有关下列属性的说明,请参见 attributes(5):
|
调用正在发展中。用户可读的输出不稳定。
groupadd(1M)、groupdel(1M)、groupmod(1M)、projadd(1M)、projdel(1M)、useradd(1M)、userdel(1M)、usermod(1M)、passwd(4)、project(4)、attributes(5)、resource_controls (5)
projmod 实用程序仅在本地 /etc/project 文件中修改项目定义。如果在使用网络名称服务(如 NIS 或 LDAP)为本地文件补充其他条目,projmod 将无法更改网络名称服务提供的信息。但是,projmod 将依据外部名称服务验证项目名称和项目 ID 的唯一性。