0

我正在尝试清理已交给我的 Plone 站点,但我不允许从头开始(我们还没有到那里)。

我被要求更改几个用户的密码,我发现自己被锁定了,即使是 ZMI 用户:当我点击 ZMI 中的 /plone-site/acl_users/source_users 时,我得到一个Unauthorized错误!

所以,我认为这要么是:

  • 像 LDAP 之类的插件(虽然没有被使用)正在弄乱我的用户源。
  • 有人弄乱了权限。

关于如何解决这个问题的任何想法?(目前我已指示用户使用“忘记密码”表单重新获得访问权限,但将来我可能需要访问该对象以用于其他目的。)

2013-01-14 更新

正如@aclark 所问,我提供了完整的回溯verbose-security=on

Traceback (innermost last):
  Module ZPublisher.Publish, line 127, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 47, in call_object
  Module Shared.DC.Scripts.Bindings, line 324, in __call__
  Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
  Module Products.PageTemplates.PageTemplateFile, line 130, in _exec
  Module Products.PageTemplates.PageTemplate, line 80, in pt_render
  Module zope.pagetemplate.pagetemplate, line 113, in pt_render
  Module zope.tal.talinterpreter, line 271, in __call__
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 852, in do_condition
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 819, in do_loop_tal
  Module zope.tales.tales, line 682, in setRepeat
  Module zope.tales.tales, line 696, in evaluate
   - URL: manage_users
   - Line 31, Column 1
   - Expression: <PathExpr standard:'here/listUserInfo'>
   - Names:
      {'container': <UserManager at /ca/acl_users/source_users>,
       'context': <UserManager at /ca/acl_users/source_users>,
       'default': <object object at 0x7f4c7f84aad0>,
       'here': <UserManager at /ca/acl_users/source_users>,
       'loop': {},
       'nothing': None,
       'options': {'args': ()},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xbf67418>,
       'request': <HTTPRequest, URL=http://intranet.lahavane.com/ca/acl_users/source_users/manage_users>,
       'root': <Application at >,
       'template': <PageTemplateFile at /ca/acl_users/source_users/manage_users>,
       'user': <PropertiedUser 'admin'>}
  Module zope.tales.expressions, line 217, in __call__
  Module Products.PageTemplates.Expressions, line 149, in _eval 
  Module zope.tales.expressions, line 124, in _eval
  Module Products.PageTemplates.Expressions, line 76, in boboAwareZopeTraverse
  Module OFS.Traversable, line 310, in restrictedTraverse
  Module OFS.Traversable, line 245, in unrestrictedTraverse
   - __traceback_info__: ([], 'listUserInfo')
  Module AccessControl.ImplPython, line 729, in guarded_getattr
  Module AccessControl.ImplPython, line 671, in aq_validate
  Module AccessControl.ImplPython, line 565, in validate
  Module AccessControl.ImplPython, line 463, in validate
  Module AccessControl.ImplPython, line 810, in raiseVerbose
Unauthorized: Your user account does not have the required permission.  Access to 'listUserInfo' of (UserManager at /ca/acl_users/source_users) denied. Your user account, admin, exists at /acl_users. Access requires Manage_users_Permission, granted to the following roles: []. Your roles in this context are ['Authenticated', 'Manager', 'Owner'].

最后一句很有启发性:没有一个角色可以做我想做的事。现在的问题是如何解决这个问题。另一个问题(我们可能不会回答)是这是如何发生的。

4

2 回答 2

1

我假设您正在尝试使用 Zope-Application 级别的用户管理 plone 用户(用户是/acl_users/users/manage_userszope 级别的 listet - 而不是 plone 级别的 acl_users 中)。如果用户不知何故在克隆级别上没有经理角色,则无法管理克隆用户。

可能的原因可能是:

  • 您的 Zope 级别用户不再具有 Zope 级别的“经理”角色(该用户应具有Manager以下角色/acl_users/roles/manage_roles)。

  • 您有一个用户,其 ID 与 plone 级别的 zope 级别用户相同,但没有Manager角色。用户将被列在下面/plone-site/acl_users/source_users- 由于错误而您无法检查Unauthorized- 或者由另一个 PAS 插件(例如 LDAP)列出。为用户提供Managerplone 级别的角色也可以解决问题,而无需从 plone 级别 acl_users 中删除用户。

我建议创建一个紧急用户:

  • 转到服务器上的终端(例如 ssh)
  • 运行bin/instance adduser emergency secret(bin/instance 可能因安装类型而异)
  • 您现在有一个名为“emergency”和密码“secret”的新用户,在 zope-level l ( /acl_users/users/manage_users) 上注册,Manager角色为 ( acl_users/roles/manage_roles)。
  • 使用此用户,您可以修复其他管理员用户,并在修复后删除紧急用户。

当同一个用户在 Zope 的 acl_users 和 Plone 的 acl_users 上注册了不同的角色时,你可能会得到一些奇怪的效果。根据当前的身份验证方法(例如 Zope 级别的基本身份验证或 Plone 级别的 cookie 身份验证),您可能对同一用户具有不同的权限。

于 2013-01-01T15:32:50.680 回答
1

不要猜。首先,Unauthorized从忽略的异常列表中删除Site Setup -> Errors

在此处输入图像描述

然后Save。接下来,确保在文件的实例部分verbose-security启用,例如:buildout.cfg

  [instance]
  recipe = plone.recipe.zope2instance
  verbose-security = on

(设置后运行 buildout。)

现在访问/plone-site/acl_users/source_users,然后返回Site Setup -> Errors查看实际错误。

于 2012-12-17T23:39:33.107 回答