【问题标题】:Default permissions for new objects in the schema架构中新对象的默认权限
【发布时间】:2013-05-17 07:46:28
【问题描述】:

我正在开发一个名为 S 的模式(库)上的 DB2 for i 数据库(又名 DB2/400)。

在模式 S 中,我使用用户 A 创建数据库表、过程等。我还需要用户 B 对这些新对象拥有所有权限。因此,我将架构 S 上的所有权限授予用户 A 和 B。但是新对象不会继承它们!

所以我尝试了很多配置:在 System i Navigator 上,我使用了授权列表,模式 S 的权限对话框上的“新对象”按钮......但没有任何效果。

如何设置一种默认权限,以便由我的架构中创建的新对象自动继承?

我知道的唯一可行的替代方法是在每次创建对象时记住用户 B 的 grant 权限。没那么聪明……

【问题讨论】:

  • 没有“默认权限”。您必须为每个新对象明确授予权限。

标签: permissions db2 database-schema ibm-midrange


【解决方案1】:

安全是一个很大的话题。它通常由管理员处理;了解更改库权限的更大影响的人。

有几个相关的设置需要考虑。由于您试图保护单个对象,您可能通过将 QSECURITY 设置为 *EXCLUDE 或将库的 CRTAUT 更改为 *EXCLUDE 来限制公共权限。

如果我们希望这个库中所有新创建的对象都具有相同的权限,请考虑使用权限列表。我知道你说你玩了 wuth 授权列表,但你没有具体说明你做了什么。

创建授权列表。将用户 A 和 B 授权到授权列表。 CHGLIB myschema CRTAUT(myautl)。现在 myschema 中的每个对象都将拥有相同的权限。

【讨论】:

  • 谢谢巴克!这是我尝试过的(CHGLIB LIB(MYLIB) CRTAUT(MYAUTLIST)),但是,当我在 MYLIB 中创建新表时,它不会从 MYAUTLIST 获取权限。好奇怪……
  • EDTOBJAUT MYLIB/MYFILE *FILE 你对 *PUBLIC 有什么看法 - 我看到 *AUTL。
  • 好的,做一个 DSPLIB MYLIB。您对“创建权威”(左上角)有何看法?我看到了 MYAUTL。
  • 嗯,操作系统正在按预期做所有事情。 EDTOBJAUT MYAUTL *AUTL 用户 A 和 B 是否都存在,并且授予了您想要的权限?什么是*公共?用户 A 是组配置文件的一部分吗?补充资料?
  • 再次感谢! EDTOBJAUT MYAUTL *AUTL 说:*公共:*排除,A:*全部,B:*全部。 A 和 B 属于同一组配置文件。 A 有“用户类”*SECOFR,B 有 *PGMR
【解决方案2】:

我有 IBM i 7.1。

如果我使用 5250 模拟器创建表,在 STRSQL 中,它可以工作,继承架构授权列表。

如果我使用 iSeries Navigator V5R4M0 创建表(无论是右键单击表 > 新建 > 表,也不是使用 cwbundbs.exe),它不起作用。授权列表没有被继承...

所以这似乎是 iSeries Navigator 中的一个错误。也许有更新版本的人可以确认我们是否已修复此问题。

chat with @BuckCalabro 中的详细信息。

【讨论】:

  • 检查 iSeries Navigator 中的连接,它可能使用 *SQL,而 *Server 会给出所需的结果。不留任何机会。更好的做法是在创建表时专门授予和撤销权限。
  • @danny117 谢谢,请您指定此设置的位置吗?
  • 你开始运行一个 sql 脚本。然后在脚本窗口中。选择连接/jdbc 设置。然后在格式选项卡上,您可以将命名约定更改为 *sys.. 我希望这对您有用。
猜你喜欢
  • 2019-04-11
  • 2019-09-26
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多