Java Desktop System Configuration Manager 发行版 1.1 管理指南

第 3 章 使用命令行界面

本章介绍 Java Desktop System Configuration Manager 命令行界面 (CLI),此界面可代替 Configuration Manager 图形用户界面,用来创建、处理、导出和导入配置策略组。

Configuration Manager CLI 概述

CLI 可用来创建、处理、导出/导入和删除策略组。这些策略组可能来自策略组系统信息库,也可能是实体策略组。与 Configuration Manager GUI 一样,CLI 允许将来自策略组系统信息库的策略组以及实体策略组指定/取消指定给实体。CLI 允许以 XML 格式将系统信息库策略组和实体策略组从 ZIP 文件中导出或导入到 ZIP 文件中。这样就可以在导入策略组之前创建、编辑或删除这些文件中的策略设置。


注意 –

CLI 没有提供与以下 GUI 功能等效的功能:


使用 CLI

调用 CLI 命令

CLI 包含 pgtool 命令,此命令在单行命令模式下运行,每次执行一个命令。pgtool 包含多个子命令、选项和操作数,命令摘要部分对它们进行了介绍。可以使用完整的关键字或关键字缩写来指定选项。以下命令说明中使用的是完整的关键字,但您也可以从表 3–2 中找到这些关键字所对应的快捷键。

CLI 所需的引导信息

引导信息用于定位并查询存储实体和策略组的数据存储。所需的引导信息包含服务器、端口号、基本标识名 (DN) 和类型。这些信息可以在命令行中指定,也可以从引导文件中获取。

获取引导信息

可以在命令行中指定引导文件的位置。如果不指定,将使用随 CLI 一起安装的引导文件。此文件安装时只包含关键字名称,管理员必须对其进行编辑以提供正确的引导值。

CLI 还允许您在命令行中指定引导信息。用于指定详细引导信息的选项如下:

使用用户名和口令进行验证

每次执行一个命令时,都需要输入用户名和口令。

运行命令

每次运行命令时都将创建并初始化与 policymgr API 的连接,并在执行命令后立即退出。如果退出命令时显示 errir,则说明未对配置策略应用任何更改。

表示实体

实体使用 LDAP DN 进行表示,例如 uid=jmonroe,ou=People,o=apoc

CLI 命令

本节介绍 Configuration Manager 的 CLI 功能。

访问 CLI 帮助

要获取所有可用 CLI 命令的列表,请键入 pgtool --help

访问 CLI 版本信息

要显示版本信息,请键入 pgtool --version

添加

将策略组系统信息库中的策略组指定给实体。

语法

add [--username=<name>] [--scope=<user/host>] <name> <entity>

--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如 "jmonroe"。

--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。

<name>:指定要为实体指定的策略组的名称。

<entity>:实体的名称将按照存储系统后端使用的格式指定,例如,对于 LDAP 存储系统后端,将使用标识名来指定实体。


实例 3–1 为实体添加策略组

% 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 选项一起使用,因为实体策略组具有无法更改的默认优先级。如果指定的优先级与同一层同一范围的某个现有策略组的优先级相同,命令将退出并报告错误。如果不指定优先级,系统将为其指定一个。


实例 3–2 创建新策略组

% 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 选项一起使用,因为实体策略组具有受限制的默认名称。


实例 3–3 删除策略组

% 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。如果目标文件不可写,命令将退出并报告错误。


实例 3–4 导出策略组

% 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 文件的路径和文件名。


实例 3–5 导入策略组

% 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>:列出使用指定策略组的实体。


实例 3–6 列出系统信息库中的策略组

% 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。


实例 3–7 登录

% 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)。如果指定的优先级与策略组系统信息库中具有此范围的某个现有策略组的优先级相同,命令将失败。


实例 3–8 更改策略组的优先级

% pgtool modify --username=jmonroe UserPolicyGroup1 15

将策略组“UserPolicyGroup1”的优先级更改为 15。


删除

从实体中删除策略组。

语法

remove [--username=<name>] [--scope=<user/host>] <name> <entity>

--username=<name>:以配置系统信息库使用的格式表示的系统管理员的用户名,例如“jmonroe”。

--scope=<user/host>:指定策略组的范围,可以是用户或主机。如果不指定,则默认范围为用户。

<name>:指定了策略组系统信息库中指定给该实体的策略组的名称。

<entity>:此实体的名称。


实例 3–9 从实体中删除策略组

% 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>:策略组的新名称。如果策略组系统信息库中已存在具有此名称和此范围的策略组,命令将退出并报告错误。


实例 3–10 重命名策略组

% pgtool rename --username=jmonroe NewUserGroup2 renamedNewUserGroup2

将策略组 "NewUserGroup2" 重命名为 "renamedNewUserGroup2"。


命令摘要

表 3–1 命令

命令 

描述 

add

将策略组系统信息库中的策略组指定给实体。 

create

创建新的空策略组。 

delete

删除策略组。 

export

将策略组以 ZIP 文件格式导出到指定的目标文件中。 

import

从指定的源文件中导入以 ZIP 文件格式存储的策略组。 

list

列出策略组系统信息库中的策略组,或者列出指定给某个实体的策略组,或者列出具有指定策略组的实体。 

login

将此后端数据存储的用户名和口令存储在用户主目录的一个文件中。此用户名和口令以后可用于调用 pgtool 命令。 

modify

更改策略组系统信息库中策略组的优先级。 

remove

从实体中删除策略组。 

rename

重命名策略组系统信息库中的策略组。 

表 3–2 选项

选项 

描述 

-b <base name>, --base=<base name>

指定存储系统后端的根条目。此基本条目的格式由使用的存储系统后端决定。例如,LDAP 存储系统后端的根条目为 o=apoc: --base o=apoc

-e <entity>, --entity=<entity>

指定表示用户、角色、组织、主机或域的实体。实体的条目格式由使用的存储系统后端决定。例如,用户“jmonroe”的 LDAP 存储系统后端的实体条目为:-e uid=jmonroe,ou=People,o=staff,o=apoc

-f <file>, --file=<file>

指定一个全限定文件,该文件将详细列出执行此命令时使用的引导信息。例如:-f /tmp/policymgr.cfg

-h <hostname>, --hostname=<hostname>

指定存储系统后端的主机名。例如:--host=server1.sun.com

-i <priority>, --priority=<priority>

指定表示策略组优先级的正整数。例如:-i 12

-m <name>, --name=<name>

指定策略组的名称。例如:--name=UserPolicyGroup1

-p <port>, --port=<port>

指定存储系统后端的端口号。例如:-p 399

-s <scope>, --scope=<scope>

指定策略组的范围。范围可以是用户或主机,默认范围为用户。例如:--scope=host

-t <type>, --type=<type>

指定存储系统后端的类型。默认类型为 LDAP。例如:-t LDAP

-u <username>, --username=<username>

指定存储系统后端的管理员的用户名,此时系统将提示该用户输入口令。如果不使用此选项,而且用户未使用 pgtool login 子命令,将提示用户输入用户名和口令。例如:--username=jmonroe

-?, --help

显示此帮助,然后退出。 

-V, --version

显示版本,然后退出。