在 Standard 或 Advanced 许可等级下可用。
如果您想让其他数据库用户查看或更改数据库中任何数据的内容,那么您必须授予他们执行相应操作的权限。
您可以使用 ArcMap 中的权限对话框、ArcMap 或 ArcGIS Pro 中的更改权限地理处理工具或 Python 脚本中的 ChangePrivileges_management 函数指定用户或组对某一特定数据集拥有哪些权限。
您可以仅授予 select 权限,也就是说使用户可以读取和选择数据集的内容,但不能进行修改。还可以授予用户更新、插入以及删除权限,这样用户便可修改数据集的内容。
下列规则适用于授予和撤消 ArcGIS 中的数据库或地理数据库中数据的权限:
- 仅表所有者可更改该表的权限。
- 仅表所有者可删除该表或更改其定义;因此即使其他用户已被授予了插入、更新以及删除数据集的权限,也无法更改方案。
- 如果要向某个用户授予插入、更新或删除权限,则还必须授予选择权限;该用户必须能够读取数据集才能对其进行编辑。
- dbo 和 db_owner 角色不会出现在 SQL Server 数据库权限对话框的“用户/角色”列表中。这些用户自动拥有授予数据库中的所有数据的权限。权限因角色而异,并且无法撤消这些权限。
- 已授予数据库超级用户状态的 PostgreSQL 登录角色或组将不会出现在权限对话框的“用户/角色”列表中。这些用户自动具有对所有数据的完整权限,并且您无法撤消这些权限。
- 使用权限 对话框一次只能更改一个数据集上的用户权限。要一次更改多个数据集上的权限,可以改用更改权限地理处理工具或 Python 函数。
- 撤消权限需要数据集的排它锁,因此如果其他任何人已连接到数据集,则您无法撤消用户对该数据集的权限。
这些规则仅适用于授予和撤消地理数据库中数据集的权限:
- 要素数据集中的所有要素类必须已应用相同的权限。
- 为参与关系类的要素类或表授予权限后,必须为源类和目标类授予这些权限。如果源要素类和目标要素类在同一要素数据集中,那么由于授予的权限都在要素数据集级别,使得二者具有同一组权限。然而,如果源类或目标类不在同一要素数据集中,则必须确保为源类和目标类授予适当的权限。如果关系类被属性化或具有多对多基数,则在向源类分配权限时,权限将被自动传递至中间表。
- 如果数据集未版本化,则可使用权限对话框分别授予和撤消更新、插入和删除的权限。例如,您可以授予某个用户选择和更新权限,这使该用户能够连接到数据集并更改现有要素但不允许该用户添加新要素或删除现有要素。
- 如果已将数据集注册为版本,则允许用户修改数据集(更新、插入和删除)的权限必须成组授予和撤消。
- 如果已将数据集注册为版本,则地理数据库管理员必须具有该数据集的完整权限。因此,您无法撤消地理数据库管理员对版本化数据集的权限。
使用下列方法之一授予或撤销您所拥有的数据集的权限:
- 权限对话框 - 使用权限对话框时,可查看用户或组已具有的特定数据集的权限。还可以一次向多个用户或组授予数据集权限。
- 更改权限工具 - 使用更改权限工具时,可向用户或组授予多个数据集的权限。
- Python 脚本 - 可通过已安装 ArcGIS Server 的 Linux 计算机运行 Python 脚本。权限可在多个数据集上进行更改。
使用“权限”对话框。
通过目录树中数据库连接的快捷菜单打开权限对话框。此对话框允许您从列表中选取能够授予权限的用户和组。如果数据集未注册为版本,则还允许您分别授予数据集的 INSERT、UPDATE 以及 DELETE 权限。
- 启动 ArcMap 或 ArcCatalog,然后双击目录树中的数据库连接文件夹。
- 连接到数据库或地理数据库,这两个数据库包含您所拥有并想要授予或撤销其权限的数据。
- 右键单击数据集,指向管理,然后单击权限。
将打开权限对话框。
- 如果想要更改权限的用户或角色已在列表中,则可以根据您的需要选中或取消选中复选框来授予或撤消权限,然后单击确定应用您的更改。
- 如果用户或角色尚不在列表中,请执行以下操作:
- 单击添加打开用户/角色对话框。
- 如果在数据库中具有查看系统表(用于列出数据库中的所有用户和角色)的权限,则可以通过选中其名称旁的框来选择需要从列表添加的数据库用户或角色。否则,输入想要授予权限的数据库用户、数据库角色、操作系统登录帐户或 Windows 组的名称。要输入多个用户或组,请输入以逗号分隔的名称(无空格)。
- 单击确定关闭用户/角色对话框。
- 选中希望每个新用户或角色拥有的权限所对应的框,然后单击确定。
使用更改权限工具
您可以使用更改权限工具授予或撤消您所拥有的数据集权限。该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。
使用此工具您可以同时更改多个数据集的用户或组的权限。请注意,更改权限工具并不会显示用户已具有的数据集权限。同样,INSERT、UPDATE 以及 DELETE 权限必须作为一个组进行授予,不可单独授予。
- 以您想要授予或撤消权限的数据集所有者身份连接到地理数据库或数据库。
- 打开更改权限工具。
- 浏览至数据库连接并选择想要更改权限的数据集。
- 输入想要更改其权限的用户或组的名称。
- 使用查看和编辑下拉列表选择想要向某特定用户或组授予的权限:
要授予编辑权限,也必须授予其查看权限。
- 单击确定以运行工具。
使用 Python 脚本
如果想要使用 Python 脚本授权或撤销所拥有的的数据集权限,则可使用 ChangePrivileges_management 函数。
- 首先,使用 CreateDatabaseConnection_management 函数创建数据库连接。必须作为该数据集的所有者进行连接并且随文件一起保存用户名。
在本例中,将在 /usr/connections 目录下创建连接文件 gdb.sde。此连接是以 eng1 用户身份对数据库群集 dserver 上的 markets 数据库建立的。
import arcpy arcpy.CreateDatabaseConnection_management (r'/usr/connections', "gdb.sde", "POSTGRESQL", "dserver", "DATABASE_AUTH", "eng1", "T!i569", "SAVE_USERNAME", "markets")
- 运行 ChangePrivileges_management 函数。
在本例中,向组读取者授予三个数据集的查看权限。
arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/markets.eng1.properties,markets.eng1.routes,markets.eng1.demo", "readers", "GRANT", "AS_IS")