CLI 包含 pgtool 命令,此命令在单行命令模式下运行,每次执行一个命令。pgtool 包含多个子命令、选项和操作数,命令摘要部分对它们进行了介绍。可以使用完整的关键字或关键字缩写来指定选项。以下命令说明中使用的是完整的关键字,但您也可以从表 3–2 中找到这些关键字所对应的快捷键。
引导信息用于定位并查询存储实体和策略组的数据存储。所需的引导信息包含服务器、端口号、基本标识名 (DN) 和类型。这些信息可以在命令行中指定,也可以从引导文件中获取。
可以在命令行中指定引导文件的位置。如果不指定,将使用随 CLI 一起安装的引导文件。此文件安装时只包含关键字名称,管理员必须对其进行编辑以提供正确的引导值。
CLI 还允许您在命令行中指定引导信息。用于指定详细引导信息的选项如下:
--hostname=<hostname>(存储系统后端所在的服务器的名称)
--base=<base name>(存储系统后端的基本条目)
--port=<port number>(存储系统后端使用的端口号)
--type=<type of back end>(例如 LDAP)
每次执行一个命令时,都需要输入用户名和口令。
CLI 提供了一个 login 命令,允许将用户名/口令对存储在管理员主目录中的证书文件中。此文件名为 .apocpass,对它的访问受到严格的限制。运行 login 命令时,CLI 将检查主目录中是否存在 .apocpass 文件。如果该文件存在但不具有正确的权限(即 600),login 命令将退出并报告错误。如果已指定用户名,将提示用户输入口令。如果未指定用户名,将提示用户输入用户名和口令。系统将使用匿名访问来验证输入的用户名和口令。如果不支持匿名访问,将提示用户输入授权的 DN 和口令。如果成功通过验证,将在 .apocpass 文件中添加一个条目。此条目的关键字由服务器/端口/基本 DN 和用户名组成。
例如,用户 "jmonroe" 可以使用关键字 cdelab1.ireland.sun.com:389;o=apoc:jmonroe 为位于端口 389、基本条目为 o apoc 的服务器 cdelab1.ireland.sun.com 存储一个口令。存储的值为用户 DN 和口令。通过这种方式,可以存储此存储系统后端的多个用户的用户名/口令对。类似地,也可以为其他存储系统后端存储用户名/口令对。成功运行 login 命令后,就可以执行其他 CLI 命令了,无需再指定用户名或口令。
对于其他命令,CLI 将首先检查是否存在此用户的 .apocpass 文件。如果不存在,将提示用户输入用户名和口令。如果输入的用户名和口令成功通过验证,将执行命令。如果证书文件不存在,但已在命令行中指定了用户名,CLI 将查找与此主机、端口、基本 DN 和用户名对应的条目。如果存在对应的条目,将使用存储的用户 DN 和口令来执行命令;否则,将提示用户输入口令。如果未在命令行中指定用户名,将在 .apocpass 文件中搜索使用主机/端口和基本 DN 组合的关键字。如果此组合只有一个对应的条目,将使用存储的用户 DN 和口令来执行命令。如果存在多个条目,将提示用户输入用户名。如果输入的用户名与某个条目匹配,将使用存储的用户 DN 和口令来执行命令。如果输入的用户名与任何条目都不匹配,将提示用户输入口令。提示用户输入口令之后,将使用 .apocpass 文件中与此主机/端口/基本 DN 组合对应的条目来验证用户名和口令。如果不存在这样的条目,将使用匿名访问进行验证。
每次运行命令时都将创建并初始化与 policymgr API 的连接,并在执行命令后立即退出。如果退出命令时显示 errir,则说明未对配置策略应用任何更改。
实体使用 LDAP DN 进行表示,例如 uid=jmonroe,ou=People,o=apoc。
本节介绍 Configuration Manager 的 CLI 功能。
要获取所有可用 CLI 命令的列表,请键入 pgtool --help。
要显示版本信息,请键入 pgtool --version。
将策略组系统信息库中的策略组指定给实体。
add [--username=<name>] [--scope=<user/host>] <name> <entity>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。
--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
<name>:指定要为实体指定的策略组的名称。
<entity>:实体的名称将按照存储系统后端使用的格式指定,例如,对于 LDAP 存储系统后端,将使用标识名来指定实体。
% pgtool add --username=jmonroe UserPolicyGroup1 cn Role1,o=staff,o=apoc
用户 "jmonroe" 将策略组 "UserPolicyGroup1" 指定给实体 "cn=Role1,o=staff,o=apoc"。
create 命令用于创建一个新的空策略组。
create [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] [--priority=<priority integer>]
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。
--name=<policy group name>:指定策略组的名称。如果同一层已存在同名同范围的策略组,命令将退出并报告错误。此选项不能与 --entity 选项一起使用,因为实体策略组具有受限制的默认名称。
--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
--entity=<entity name>:在其中创建策略组的实体。如果不指定此选项,策略组将来自策略组系统信息库。此选项不能与 --name 选项一起使用,因为实体策略组具有受限制的默认名称。
--priority=<priority integer> :用于指定策略组优先级的整数 (>=1)。此选项不能与 --entity 选项一起使用,因为实体策略组具有无法更改的默认优先级。如果指定的优先级与同一层同一范围的某个现有策略组的优先级相同,命令将退出并报告错误。如果不指定优先级,系统将为其指定一个。
% pgtool create --username=jmonroe --scope=host --name=NewHostGroup1
创建名为 "NewHostGroup1" 的新策略组,其范围为“主机”。
删除策略组。
delete [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>]
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。
--name=<policy group name>:指定要删除的策略组的名称。此选项不能与 --entity 选项一起使用,因为实体策略组具有受限制的默认名称。如果策略组不存在或无法唯一标识,命令将退出并报告错误。
--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
--entity=<entity name>:在其中存储策略组的实体。如果不指定此选项,策略组将来自策略组系统信息库。此选项不能与 --name 选项一起使用,因为实体策略组具有受限制的默认名称。
% pgtool delete --username=jmonroe --scope=host --name=renamedNewHostGroup1
删除“renamedNewHostGroup1”策略组。
将策略组以 ZIP 文件格式导出到指定的目标文件中。这些策略组可能来自策略组系统信息库,也可能是实体策略组。
export [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] <target>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。
--name=<policy group name>:指定策略组的名称。此选项不能与 --entity 选项一起使用,因为实体策略组具有受限制的默认名称。策略组系统信息库中可能存在两个同名的策略组,一个策略组的范围为用户,另一个策略组的范围为主机。如果不指定,则默认范围为用户。
--scope=<user/host>:指定策略组的范围。可以是用户或主机。如果不指定,则默认范围为用户。
--entity=<entity name>:在其中存储策略组的实体。此选项不能与 --name 选项一起使用,因为实体策略组具有受限制的默认名称。如果不指定此选项,策略组将来自策略组系统信息库。实体的名称将按照存储系统后端使用的格式指定,例如,对于 LDAP 存储系统后端,将使用标识名来指定实体。
<target>:存储 ZIP 文件的路径和文件名。如果不指定文件名,则默认为 /tmp/<policy group name>.zip。如果目标文件不可写,命令将退出并报告错误。
% pgtool export --scope=host --name=HostPolicyGroup1 --username=jmonroe /tmp/newdir
将策略组“HostPolicyGroup1”导出到 HostPolicyGroup1.zip 文件中,该文件是在新目录 /tmp/newdir 中创建的。
从指定的源文件导入以 ZIP 文件格式存储的策略组。可以将策略组导入到策略组系统信息库或实体中。
import [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] [--priority=<priority integer>] <source>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。
--name=<policy group name>:指定策略组的名称。此选项不能与 --entity 选项一起使用,因为实体策略组具有受限制的默认名称。同一位置不能存在两个具有相同名称和相同范围的策略组。如果不指定策略组的名称,则默认为 .zip 文件的名称。如果策略组系统信息库中已经存在具有此名称和此范围的策略组,该策略组将被覆写。
--scope=<user/host>:指定策略组的范围。可以是用户或主机。如果不指定,则默认范围为用户。
--entity=<entity name>:在其中存储策略组的实体。如果不指定此选项,策略组将来自策略组系统信息库。此选项不能与 --name 选项一起使用,因为实体策略组具有受限制的默认名称。实体的名称将按照存储系统后端使用的格式指定,例如,对于 LDAP 存储系统后端,将使用标识名来指定实体。
--priority=<priority integer> :用于指定策略组系统信息库中策略组优先级的整数 (>=1)。此选项不能与 --entity 选项一起使用,因为实体策略组具有无法更改的默认优先级。如果指定的优先级与系统信息库中具有此范围的某个现有策略组的优先级相同,命令将退出并报告错误。如果不指定优先级,系统将为其指定一个。
<source>:存储 ZIP 文件的路径和文件名。
% pgtool import --scope=host --name=NewHostPolicyGroup1 --username=jmonroe --priority=7 /tmp/HostPolicyGroup1.zip
从 HostPolicyGroup1.zip 文件中导入名为 "NewHostPolicyGroup1"、范围为“主机”、优先级为 "7" 的策略组。
如果不指定任何选项,将列出策略组系统信息库中的所有策略组。如果指定了两个存储系统后端,将列出该用户存储系统后端的策略组系统信息库中的所有策略组。根据指定的选项,list 还可以列出指定给某个实体的所有策略组,或使用某个特定策略组的所有实体。列出策略组时,将同时列出其详细信息(如果存在),例如名称、范围、优先级和实体。实体将按标识名列出。
list [--username=<name>] [--scope=<user/host>] [--entity=<entity name>][--name =<policy group name>]
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。
--scope=<user/host>:如果只指定了此选项,将列出策略组系统信息库中具有指定范围的所有策略组。如果不指定,则默认范围为用户。如果将此选项与 -entity 选项一起使用,将列出指定给该实体的、具有此范围的所有策略组。如果将此选项与 -name 选项一起使用,将列出使用指定范围的指定策略组的所有实体。
--entity=<entity name>:列出指定给某个实体的策略组。
--name=<policy group name>:列出使用指定策略组的实体。
% pgtool list --username=jmonroe
列出管理员“jmonroe”的全局策略组。
% pgtool list --username=jmonroe --name=UserPolicyGroup1
列出使用策略组 “UserPolicyGroup1” 的实体。
将后端数据存储的用户名和口令存储在管理员主目录的一个文件中。此用户名和口令以后可用于调用 pgtool 命令。
证书存储在管理员主目录中名为 .apocpass 的文件中。如果此文件已存在但不具有正确的权限,命令将退出并报告错误。如果已输入用户名,将提示管理员输入口令;如果未输入用户名,将提示管理员输入用户名和口令。系统将使用数据存储的匿名访问来验证输入的用户名和口令。如果不支持匿名访问,将提示管理员输入授权的用户名和口令。如果授权的用户名未通过验证,命令将退出并报告错误。如果通过了验证,用户名/口令对将被存储在管理员的 .apocpass 文件中。将使用由主机/端口/基本引导信息和用户名组成的关键字来存储口令。可以将引导文件指定为选项变量,也可以使用上述其他选项指定引导信息。如果不使用上述任一方法,将从通过 pgtool 命令安装的默认引导文件中获取引导信息。如果引导信息不可用或者无法创建证书文件,命令将退出并报告错误。如果成功创建了证书文件,则不需要为使用此存储系统后端的后续 pgtool 命令指定用户名和口令,此时将使用存储在证书文件中的用户名和口令信息。
login [--username=<name>] [--file=<bootsrap file>] [--hostname=<hostname>] [--port=<portnumber>] [--base=<base name>] [--type=<type of back end>]
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。
--file=<bootstrap file>:引导文件的全限定路径。
--hostname=<hostname>:所需存储系统后端的主机名。将使用此信息,而不使用引导文件提供的相应信息。
--port=<port number>:此存储系统后端使用的端口号。
--base=<base name>:此存储系统后端的基本名称,例如,LDAP 存储系统后端的基本 DN。
--type=<type of back end>:默认值为 LDAP。
% pgtool login --username=jmonroe [Enter the correct password when prompted]
创建名为 ~/.apocpass 的文件,其中包含 "jmonroe" 和 "password" 的条目,此文件的权限为 600。
更改策略组系统信息库中策略组的优先级。
modify [--username=<name>] [--scope=<user/host>] <name> <priority>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。
--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
<name>:指定策略组的名称。
<priority>:用于指定策略组优先级的整数 (>=1)。如果指定的优先级与策略组系统信息库中具有此范围的某个现有策略组的优先级相同,命令将失败。
% pgtool modify --username=jmonroe UserPolicyGroup1 15
将策略组“UserPolicyGroup1”的优先级更改为 15。
从实体中删除策略组。
remove [--username=<name>] [--scope=<user/host>] <name> <entity>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。
--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
<name>:指定了策略组系统信息库中指定给该实体的策略组的名称。
<entity>:此实体的名称。
% pgtool remove --username=jmonroe UserPolicyGroup1 cn=Role1,o=staff,o=apoc
用户“jmonroe”将策略组“UserPolicyGroup1”从实体“cn=Role1,o=staff,o=apoc”中删除。
重命名策略组系统信息库中的策略组。
rename [--username=<name>] [--scope=<user/host>] <name> <newname>
--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。
--scope=<user/host>:指定现有策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。
<name>:指定了策略组系统信息库中策略组的当前名称。
<newname>:策略组的新名称。如果策略组系统信息库中已存在具有此名称和此范围的策略组,命令将退出并报告错误。
% pgtool rename --username=jmonroe NewUserGroup2 renamedNewUserGroup2
将策略组 "NewUserGroup2" 重命名为 "renamedNewUserGroup2"。