在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

软件包内容:操作

操作定义了包含软件包的软件;还定义了创建此软件组件所需的数据。软件包内容在软件包清单文件中表示为一组操作。

软件包清单主要是使用程序创建的。软件开发者提供很少信息,并且清单是使用软件包开发工具完成的,如Chapter 2, 使用 IPS 打包软件中所述。

操作在软件包清单文件中表示为以下形式:

action_name attribute1=value1 attribute2=value2 ...

在以下示例操作中,dir 表示该操作指定一个目录。以 name=value 形式表示的特性描述了该目录的属性:

dir path=a/b/c group=sys mode=0755 owner=root

以下示例显示了一个具有关联数据的操作。在此 file 操作中,第二个字段(没有 name= 前缀)称为有效负荷:

file 11dfc625cf4b266aaa9a77a73c23f5525220a0ef path=etc/release owner=root \
    group=sys mode=0444 chash=099953b6a315dc44f33bca742619c636cdac3ed6 \
    pkg.csize=139 pkg.size=189 variant.arch=i386

在此示例中,有效负荷为文件的 SHA-1 散列。此有效负荷还可以显示为名称为 hash 的一般属性,如以下示例中所示。如果同一操作中同时存在这两种形式,则它们必须具有完全相同的值。

file hash=11dfc625cf4b266aaa9a77a73c23f5525220a0ef path=etc/release owner=root \
    group=sys mode=0444 chash=099953b6a315dc44f33bca742619c636cdac3ed6 \
    pkg.csize=139 pkg.size=189 variant.arch=i386

操作元数据是可以自由扩展的。可以根据需要向操作添加其他属性。属性名称不能包括空格、引号或等号 (=)。属性值中可以包含所有这些符号,但是包含空格的值必须括在单引号或双引号中。位于括在双引号中的字符串内的单引号不需要进行转义,位于括在单引号中的字符串内的双引号也不需要进行转义。可在引号前使用反斜杠 (\) 来避免终止带引号的字符串。反斜杠可使用反斜杠进行转义。定制属性名称应使用唯一的前缀以防止出现意外的名称空间重叠。请参见软件包发布者中有关发布者名称的论述。

操作可以具有多个属性。可以针对单个操作使用不同的值来多次命名某些属性。具有相同名称的多个属性将被视为无序列表。

具有多个属性的操作可以在清单文件中创建长行。可以通过使用反斜杠终止每个不完整的行来对此类行进行折行。请注意,属性/值对之间必须具有此接续字符。属性、属性值及其组合均不可分离。

大多数操作都有一个关键属性。关键属性是指将此操作与映像中的其他所有操作区分开来的属性。对于文件系统对象,关键属性是该对象的路径。

以下各节介绍了每种 IPS 操作类型以及定义这些操作的属性。操作类型在 pkg(5) 手册页中进行了详细介绍,但在此处再次介绍以供参考。每节中都包含一个示例操作,该操作与其在创建软件包期间在软件包清单中显示的一样。其他属性在发布期间可以自动添加到操作中。

文件操作

file 操作是到目前为止最常见的操作。file 操作表示普通文件。file 操作引用有效负荷,具有以下四个标准属性:

path

安装文件的文件系统路径。这是 file 操作的关键属性。path 属性的值相对于映像根目录的路径。不要包括前导 /

mode

文件的访问权限。mode 属性的值是采用数字形式的简单权限,而非 ACL。

owner

拥有文件的用户的名称。

group

拥有文件的组的名称。

有效负荷通常指定为位置属性:有效负荷是操作名称后面的第一个单词,它没有属性名称。在已发布的清单中,有效负荷的值是文件内容的 SHA-1 散列。如果在尚未发布的清单中存在有效负荷,则该值表示可以找到有效负荷的路径,如 pkgsend(1) 手册页中所述。如果有效负荷的值包含一个等号 (=)、双引号 (") 或空格字符,则必须使用已命名的 hash 属性而非位置属性。在同一操作中可以同时使用位置属性和 hash 属性,但散列必须完全相同。

preserveoverlay 属性影响是否以及如何安装 file 操作。

preserve

指定在软件包操作过程中何时以及如何保留文件。

初始安装软件包时,如果软件包提供的文件使用任何值定义了 preserve 属性并且该文件已经存在于映像中,则现有文件将存储在 /var/pkg/lost+found 中并且安装打包的文件。

初始安装软件包时,如果软件包提供的文件定义了 preserve 属性,但该文件尚未存在于映像中,则是否安装该文件取决于 preserve 属性的值:

  • 如果 preserve 的值是 legacy,则不安装打包的文件。

  • 如果 preserve 的值不是 legacy,则安装打包的文件。

软件包降级时,如果软件包的降级版本提供的文件使用任何值定义了 preserve 属性并且以下所有条件都为 true,将使用扩展名 .update 重命名映像中当前存在的文件并安装降级软件包中的文件。

  • 文件存在于映像中。

  • 软件包的降级版本提供的文件的内容不同于软件包的当前安装版本提供的文件的内容。

  • 软件包的降级版本提供的文件的内容不同于映像中存在的文件的内容。

如果以上任一条件不为 true,处理文件的方式与升级(而不是降级)软件包时相同。

升级软件包时,如果软件包的升级版本提供的 file 操作使用任何值定义了 preserve 属性并且 file 操作与软件包的当前安装版本提供的 file 操作相同,则不安装文件并且不修改映像中存在的文件。将保留自安装先前版本以来进行的所有修改。

升级软件包时,如果软件包的升级版本提供的 file 操作定义了 preserve 属性并且 file 操作是新的或者不同于软件包的当前安装版本提供的 file 操作,则以下面的方式执行升级:

  • 如果文件不存在于映像中,将安装新文件。

  • 如果软件包的升级版本提供的文件存在于映像中,不存在于软件包的当前安装版本中并且未使用 original_name 属性进行重命名或移动(请参见下文),则现有文件将存储在 /var/pkg/lost+found 中并且安装软件包的升级版本提供的文件。

  • 如果软件包的升级版本提供的文件存在于映像中并且其内容不同于软件包的当前安装版本提供的文件,则根据 preserve 属性的值进行升级:

    • 如果软件包的升级版本提供的文件具有的 preserve 值为 renameold,将使用扩展名 .old 重命名现有文件并且使用更新的权限和时间戳(如果存在)安装新文件。请参见下文的 timestamp 属性描述。

    • 如果软件包的升级版本提供的文件具有的 preserve 值为 renamenew,将使用扩展名 .new 安装新文件并且不修改现有文件。

    • 如果软件包的升级版本提供的文件具有的 preserve 值为 true,则不安装新文件,但是在现有文件中重置权限和时间戳(如果存在)。

  • 如果软件包的升级版本提供的文件存在于映像中,具有的内容与软件包的当前安装版本提供的文件相同并且具有的 preserve 值为 renameoldrenamenew,则现有文件将替换为软件包的升级版本提供的文件,包括替换权限和时间戳(如果存在)。

  • 如果软件包的升级版本提供的文件存在于映像中,在升级的软件包中具有的 preserve 值为 legacy,并且在软件包的当前安装版本中具有不同的 preserve 值,则使用扩展名 .legacy 重命名现有文件,并使用更新的权限和时间戳(如果存在)安装新文件。

  • 如果软件包的升级版本提供的文件存在于映像中并且在升级的软件包和软件包的当前安装版本中具有的 preserve 值为 legacy,则在现有文件中重置权限和时间戳(如果存在)。

overlay

指定操作是允许其他软件包在同一位置交付文件,还是用交付的文件覆盖其他文件。此功能设计用于不参与任何自组装且可安全覆盖的配置文件。

如果未指定 overlay,多个软件包将无法向同一位置交付文件。

overlay 属性可以使用以下值之一:

allow

允许另一个软件包将文件交付到同一位置。除非也设置了 preserve 属性,否则此值没有效果。

true

该操作交付的文件将覆盖已指定了 allow 的任何其他操作。

基于覆盖文件的 preserve 属性值保留对已安装文件进行的更改。在删除时,如果仍要安装将被覆盖的操作,则将保留文件的内容,无论是否指定了 preserve 属性。只能一个操作覆盖另一个操作,且 modeownergroup 属性必须匹配。

对于 ELF 文件,可识别下列属性:

elfarch

ELF 文件的体系结构。此值是 uname -p 在构建文件的体系结构上的输出。

elfbits

此值为 32 或 64。

elfhash

此值是文件中在装入二进制文件时映射到内存中的 ELF 部分的散列值。在确定两个二进制文件的可执行行为是否将不同时,仅需要考虑这些部分。

对于 file 操作,可识别下列其他属性:

original_name

此属性用于处理可编辑文件在软件包之间、在位置之间或在这两者之间的移动操作。此属性的值采用的格式为源软件包的名称后跟一个冒号和文件的原始路径。所删除的任何文件将使用其软件包和路径或 original_name 属性的值(如果指定)进行记录。所安装的已设置 original_name 属性的任何可编辑文件将使用具有该名称的文件(如果它在同一打包操作中被删除)。

一旦设置此属性后,就不要更改其值,即使重复重命名软件包或文件也是如此。保持同一个值将允许从所有先前的版本进行升级。

release-note

该属性用于指明此文件包含发行说明文本。该属性的值为软件包 FMRI。如果 FMRI 指定的软件包名称存在于原始映像中,指定的版本比原始映像中的软件包版本更高,则此文件将成为发行说明的一部分。特殊 FMRI feature/pkg/self 是指包含软件包。如果 feature/pkg/self 的版本为 0,则此文件仅在初次安装时是发行说明的一部分。

revert-tag

此属性用于标记应恢复为一个组的可编辑文件。revert-tag 属性的值为 tagname。可为单个 file 操作指定多个 revert-tag 属性。在使用所指定的任意标记调用 pkg revert 时,文件将恢复为其清单定义的状态。有关 pkg revert 命令的信息,请参见在 Oracle Solaris 11.2 中添加和更新软件 中的恢复标记的文件和目录pkg(1) 手册页。

还可以在目录级别指定 revert-tag 属性。请参见下文中的“目录操作”。

sysattr

此属性用于指定应该为此文件设置的任何系统属性。sysattr 属性的值可以是逗号分隔的详细系统属性列表,也可以是精简系统属性选项的字符串序列,如以下示例中所示。支持的系统属性在 chmod(1) 手册页中有介绍。在清单中指定的系统属性是一种额外设置,是对可能已由操作系统的其他子系统设置的系统属性的进一步设置。

file path=opt/secret_file sysattr=hidden,sensitive
file path=opt/secret_file sysattr=HT
timestamp

此属性用于设置文件的访问权限和修改时间。必须以 ISO-8601 格式使用 UTC 表示 timestamp 属性值,省略冒号和连字符。

为 Python 打包 .pyc.pyo 文件时需要 timestamp 属性。.pyc.pyo 文件的相关 .py 文件必须使用这些文件内嵌入的时间戳进行标记,如以下示例中所示:

file path=usr/lib/python2.6/vendor-packages/pkg/__init__.pyc ...
file path=usr/lib/python2.6/vendor-packages/pkg/__init__.py \
     timestamp=20130311T221521Z ...

file 操作的以下属性由系统自动生成,不能由软件包开发者指定:

hash

未压缩文件的 SHA-1 散列。

chash

压缩文件的 SHA-1 散列。

pkg.size

未压缩文件的大小(字节)。

pkg.csize

压缩文件的大小(字节)。

下面是 file 操作的示例:

file path=usr/bin/pkg owner=root group=bin mode=0755

目录操作

dir 操作类似于 file 操作,因为它表示文件系统对象。但 dir 操作表示目录而不是普通文件。dir 操作具有与 file 操作相同的 pathmodeownergroup 属性,其中 path 是关键属性。dir 操作也接受 revert-tag 属性,但该属性的值对 filedir 操作是不同的。

在 IPS 中对目录进行引用计数。当显式或隐式引用某目录的最新软件包不再引用该目录时,将删除该目录。如果该目录包含未打包的文件系统对象,则将这些项移动到 $IMAGE_META/lost+found 中。$IMAGE_META 的值通常为 /var/pkg

revert-tag

此属性用于标识应作为一个集合删除的未打包文件。有关如何为 file 操作指定此属性的说明,请参见上文中的“文件操作”。对于目录,revert-tag 属性的值为 tagname=pattern。可为单个 dir 操作指定多个 revert-tag 属性。在使用匹配的 tagname 调用 pkg revert 时,将删除此 dir 目录下匹配 pattern(使用 shell glob 字符)的所有未打包文件或目录。有关 pkg revert 命令的信息,请参见在 Oracle Solaris 11.2 中添加和更新软件 中的恢复标记的文件和目录pkg(1) 手册页。

salvage-from

此属性可用于将未打包的内容移动到一个新目录中。此属性的值是所挽救项的目录的名称。创建以 salvage-from 属性的值命名的目录的任何内容时,具有 salvage-from 属性的目录会继承。

在安装期间,pkg(1) 会检查系统上给定目录操作的所有实例是否具有相同的 ownergroupmode 属性值。如果在系统上或在其他要在同一操作中安装的软件包中发现冲突值,则不会安装 dir 操作。

下面是 dir 操作的示例:

dir path=usr/share/lib owner=root group=sys mode=0755

链接操作

link 操作表示符号链接。link 操作具有以下标准属性:

path

安装符号链接的文件系统路径。这是 link 操作的关键属性。

target

符号链接的目标。链接将解析到的文件系统对象。

link 操作还采用以下属性,它们可用于同时在系统上安装给定软件部分的多个版本或实现:mediatormediator-versionmediator-implementationmediator-priority。此类链接是中介链接,允许管理员根据需要轻松切换哪些链接指向哪个版本或实现。这些中介链接属性在交付应用程序的多个实现中进行了详细论述。在 Oracle Solaris 11.2 中添加和更新软件 中的指定缺省的应用程序实现中还对中介进行了论述。

下面是 link 操作的示例:

link path=usr/lib/libpython2.6.so target=libpython2.6.so.1.0

硬链接操作

hardlink 操作表示硬链接。它具有与 link 操作相同的 pathtarget 属性,而且 path 也是其关键属性。

下面是 hardlink 操作的示例:

hardlink path=opt/myapplication/hardlink target=foo

设置操作

set 操作表示软件包级别的属性或元数据,例如软件包描述。

可以识别下列属性:

name

属性的名称。

value

提供给属性的值。

set 操作可以提供软件包设计者选择的任何元数据。以下属性名称对包管理系统具有特定意义:

info.classification

pkg(5) 客户机可以使用一个或多个标记对软件包进行分类。该值应包含一个方案(例如 org.opensolaris.category.2008org.acm.class.1998)和实际分类(例如 Applications/Games),以冒号 (:) 分隔。Appendix A, 对软件包进行分类中提供了一组 info.classification 值。

pkg.description

软件包的内容和功能的详细描述,长度通常约为一个段落。此值应描述为何用户可能需要安装此软件包。

pkg.fmri

包含方软件包的名称和版本。请参见软件包版本

pkg.human-version

IPS 使用的版本方案较为严格。请参见软件包版本。可以提供更灵活的版本,作为 pkg.human-version 属性的值。值由 IPS 工具显示,如 pkg infopkg contentspkg searchpkg.human-version 值不用作版本比较的基准,并且不能用来替换 pkg.fmri 版本。

pkg.obsolete

如果为 true,则将软件包标记为过时。过时的软件包除了 set 操作外不能具有任何其他操作,且不得标记为已重命名。使软件包过时中介绍了软件包过时。

pkg.renamed

如果为 true,则软件包已被重命名。软件包还必须包括一个或多个 depend 操作,且这些操作指向此软件包已重命名到的软件包版本。软件包不能同时标记为已重命名和过时,但在其他情况下可以具有任意多个 set 操作。重命名、合并和拆分软件包中介绍了软件包重命名过程。

pkg.summary

描述的简短概要。此值显示在 pkg list -s 输出的每行末尾,还显示在 pkg info 输出的某一行中。此值的长度不应超过 60 个字符。此值应对软件包进行描述,但不得重复软件包的名称或版本。

Appendix B, 如何使用 IPS 打包 Oracle Solaris OS中介绍了一些其他信息性属性以及由 Oracle Solaris 使用的一些属性。

下面是 set 操作的示例:

set name=pkg.summary value="Image Packaging System"

驱动程序操作

driver 操作表示设备驱动程序。driver 操作不引用有效负荷。驱动程序文件自身必须作为 file 操作进行安装。可以识别下列属性。有关这些属性值的更多信息,请参见 add_drv(1M) 手册页。

name

驱动程序的名称。这通常是(但并不总是)二进制驱动程序文件的文件名。此属性是驱动程序操作的关键属性。

alias

驱动程序的别名。给定的驱动程序可以具有多个 alias 属性。无需任何特殊的引号规则。

class

一个驱动程序类。给定的驱动程序可以具有多个 class 属性。

perms

驱动程序的设备节点的文件系统权限。

clone_perms

此驱动程序的克隆驱动程序的次要节点的文件系统权限。

policy

设备的其他安全策略。给定的驱动程序可以具有多个 policy 属性,但次要设备规范不可以存在于多个属性中。

privs

驱动程序使用的特权。给定的驱动程序可以具有多个 privs 属性。

devlink

/etc/devlink.tab 中的一个项。该值定义了进入文件的确切行,带有由 \t 表示的制表符。有关更多信息,请参见 devlinks(1M) 手册页。给定的驱动程序可以具有多个 devlink 属性。

下面是 driver 操作的示例:

driver name=vgatext \
    alias=pciclass,000100 \
    alias=pciclass,030000 \
    alias=pciclass,030001 \
    alias=pnpPNP,900 variant.arch=i386 variant.opensolaris.zone=global

依赖操作

depend 操作表示软件包间的相关项。一个软件包可以依赖于另一个软件包,因为第一个软件包需要第二个软件包中的功能才能运行自身包含的功能或者进行安装。相关项可以是可选的。如果安装时未满足某个相关项,包管理系统会尝试安装或更新相关软件包至足够新的版本(受其他约束限制)。Chapter 4, 指定软件包相关项中介绍了相关项。

可以识别下列属性:

fmri

表示相关项的目标的 FMRI。此属性是 depend 操作的关键属性。FMRI 值不得包括发布者。将假定软件包名称是有根的,即使此名称没有以正斜杠 (/) 开头。require-any 类型的相关项可具有多个 fmri 属性。fmri 值中的版本是可选项,虽然对于某些类型的相关项来说,不带版本的 FMRI 没有任何意义。

FMRI 值不能使用星号 (*),也不能将 latest 标记用于版本。

type

相关项的类型。

require

目标软件包是必需的,而且其版本必须为 fmri 属性中所指定的版本或更高版本。如果未指定版本,则任何版本都满足相关项。如果不能满足其任一 require 相关项,则无法安装软件包。

optional

相关项目标(如果存在)必须处于指定的版本级别或更高级别。

exclude

如果相关项目标处于指定的版本级别或更高级别,则无法安装包含软件包。如果未指定版本,则目标软件包无法与指定相关项的软件包同时安装。

incorporate

该相关项是可选项,但是目标软件包的版本会受到约束。有关约束和冻结的说明,请参见Chapter 4, 指定软件包相关项

require-any

多个 fmri 属性指定的多个目标软件包中的任一个都可满足相关项(遵循与 require 相关项类型相同的规则)。

conditional

仅当系统上存在 predicate 属性定义的软件包时,才需要相关项目标。

origin

在安装此软件包之前,相关项目标(如果存在)在要修改的映像上必须具有指定值或更大值。如果 root-image 属性的值为 true,则目标必须存在于根目录为 / 的映像上,才能安装此软件包。如果 root-image 属性的值为 true,并且 fmri 属性的值以 pkg:/feature/firmware/ 开头,则将剩余的 fmri 值视为 /usr/lib/fwenum 中计算固件依赖项的命令。

group

除非软件包出现在映像避免列表上,否则该相关项目标是必需的。请注意,过时软件包会无提示地满足 group 相关项。有关映像避免列表的信息,请参见 pkg(1) 手册页中的 avoid 子命令。

parent

如果映像不是子映像(例如区域),则会忽略相关项。如果映像是子映像,则相关项目标必须存在于父映像中。与 parent 相关项匹配的版本与用于 incorporate 相关项的版本相同。

predicate

表示条件性相关项的谓词的 FMRI。

root-image

仅对 origin 相关项有影响,如上所述。

下面是 depend 操作的示例:

depend fmri=crypto/ca-certificates type=require

许可证操作

license 操作表示许可证或其他与软件包内容相关联的信息文件。软件包可以通过 license 操作将许可证、免责声明或其他指南交付到软件包安装程序。

license 操作的有效负荷将交付到与软件包相关的映像元数据目录中,且应仅包含用户可读的文本数据。license 操作有效负荷不应包含 HTML 或任何其他形式的标记。通过各个属性,license 操作可以向客户机指示必须显示或接受相关的有效负荷。显示或接受的方法由客户机决定。

可以识别下列属性:

license

为许可证提供有意义的描述,以帮助用户在无需阅读许可证文本本身的情况下确定内容。此属性是 license 操作的关键属性。

其中一些示例值包括:

  • ABC Co. Copyright Notice

  • ABC Co. Custom License

  • Common Development and Distribution License 1.0 (CDDL)

  • GNU General Public License 2.0 (GPL)

  • GNU General Public License 2.0 (GPL) Only

  • MIT License

  • Mozilla Public License 1.1 (MPL)

  • Simplified BSD License

建议尽可能在描述中包括许可证的版本,如上所示。license 值在软件包内必须唯一。

must-accept

如果为 true,则用户必须先接受此许可证,才能安装或更新相关软件包。省略此属性等效于 false。接受的方法(例如,交互式或基于配置)由客户端决定。对于软件包更新,如果未更改许可证操作或有效负荷,将忽略此属性。

must-display

如果为 true,则在执行打包操作期间客户机必须显示 license 操作的有效负荷。省略此属性等效于 false。此属性不应该用于版权声明。此属性应该仅用于许可证或执行操作期间必须显示的其他材料。显示的方法由客户端决定。对于软件包更新,如果未更改许可证操作或有效负荷,将忽略此属性。

下面是 license 操作的示例:

license license="Apache v2.0"

传统操作

legacy 操作表示由传统 SVR4 包管理系统使用的软件包数据。与 legacy 操作相关联的属性将添加到传统 SVR4 包管理系统的数据库中,以便查询这些数据库的工具可以像实际安装了传统软件包一样工作。特别是,指定 legacy 操作应该会导致由 pkg 属性指定的软件包满足 SVR4 相关项。

可以识别下列属性。有关关联参数的描述,请参见 pkginfo(4) 手册页。

category

CATEGORY 参数的值。缺省值为 system

desc

DESC 参数的值。

hotline

HOTLINE 参数的值。

name

NAME 参数的值。缺省值为 none provided

pkg

要安装的软件包的缩写。缺省值为软件包的 FMRI 中的名称。此属性是 legacy 操作的关键属性。

vendor

VENDOR 参数的值。

version

VERSION 参数的值。缺省值为软件包的 FMRI 中的版本。

下面是 legacy 操作的示例:

legacy pkg=SUNWcsu arch=i386 category=system \
    desc="core software for a specific instruction-set architecture" \
    hotline="Please contact your local service provider" \
    name="Core Solaris, (Usr)" vendor="Oracle Corporation" \
    version=11.11,REV=2009.11.11 variant.arch=i386

签名操作

在 IPS 中,签名操作用作软件包签名支持功能的一部分。Chapter 9, 对 IPS 软件包进行签名中详细介绍了签名操作。

用户操作

user 操作按照 /etc/passwd/etc/shadow/etc/group/etc/ftpd/ftpusers 文件中指定的方式定义 UNIX 用户。来自 user 操作的信息将添加到相应文件中。

user 操作用于为要使用的守护进程或其他软件定义用户。不使用 user 操作定义管理帐户或交互式帐户。

可以识别下列属性:

username

用户的唯一名称。

password

用户的加密口令。缺省值为 *LK*

uid

用户的唯一数字 ID。缺省值为 100 之下的第一个自由值。

group

用户的主组名称。在 /etc/group 中必须能够找到此名称。

gcos-field

用户的真实姓名,如 /etc/passwd 中的 GECOS 字段所定义。缺省值为 username 属性的值。

home-dir

用户的起始目录。此目录必须位于系统映像目录中,不在 /home 等其他挂载点下。缺省值为 /

login-shell

用户的缺省 shell。缺省值为空。

group-list

用户所属的辅助组。请参见 group(4) 手册页。

ftpuser

可设置为 truefalse。缺省值 true 指示允许用户通过 FTP 登录。请参见 ftpusers(4) 手册页。

lastchg

1970 年 1 月 1 日至上次修改口令的日期之间的天数。缺省值为空。

min

所需的相邻两次更改口令之间的最小天数。必须将此字段设置为 0 或更大值才能启用口令有效期。缺省值为空。

max

口令的最大有效天数。缺省值为空。请参见 shadow(4) 手册页。

warn

用户在口令到期之前多少天收到警告。

inactive

允许该用户不活动的天数。按每台计算机对此进行计数。可从计算机的 lastlog 文件获取有关上次登录的信息。

expire

表示为自 UNIX 纪元(1970 年 1 月 1 日)后的天数的绝对日期。达到此数字时,将无法再进行登录。例如,到期值为 13514 指定登录将在 2007 年 1 月 1 日失效。

flag

设置为空。

下面是 user 操作的示例:

user gcos-field="pkg(5) server UID" group=pkg5srv uid=97 username=pkg5srv

组操作

group 操作按照 group(4) 文件中指定的方式定义 UNIX 组。不支持组口令。使用 group 操作定义的组最初不具有用户列表。可以使用 user 操作添加用户。

可以识别下列属性:

groupname

组名的值。

gid

组的唯一数字 ID。缺省值为小于 100 的第一个自由组。

下面是 group 操作的示例:

group groupname=pkg5srv gid=97