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'].

最後の行は啓発的なものです。私がやろうとしていることを実行できる役割はありません。さて、問題はこれを修正する方法です。もう 1 つの質問 (答えられないかもしれません) は、これがどのようにして起こったのかということです。

4

2 に答える 2

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 に答える
1

Zope-Application レベルのユーザーで plone-users を管理しようとしていると仮定します (ユーザーは/acl_users/users/manage_users、plone レベルの acl_users ではなく、zope レベルでリストされます)。ユーザーが何らかの形で plone レベルで管理者の役割を持っていない場合、plone ユーザーを管理することはできません。

考えられる理由は次のとおりです。

  • あなたの Zope レベルのユーザーは、Zope レベルで "管理者" の役割をもう持っていません (ユーザーは のManager下で役割を持つべき/acl_users/roles/manage_rolesです)。

  • plone レベルの zope レベル ユーザーと同じ ID を持つユーザーがいますが、Managerロールはありません。ユーザーは/plone-site/acl_users/source_users、エラーのために確認できない下にリストされるかUnauthorized、LDAP などの別の PAS プラグインによってリストされます。ユーザーManagerに plone レベルの役割も与えると、plone レベルの acl_users からユーザーを削除しなくても問題が解決します。

緊急ユーザーの作成を提案します。

  • サーバーのターミナルに移動します (例: ssh)
  • 実行bin/instance adduser emergency secret(ビン/インスタンスは、インストールの種類によって異なる場合があります)
  • これで、名前が「emergency」、パスワードが「secret」の新しいユーザーが作成され、ロール ( )で zope-level ( ) に登録されまし/acl_users/users/manage_usersた。Manageracl_users/roles/manage_roles
  • このユーザーを使用して、他の管理者ユーザーを修正し、修正後に緊急ユーザーを削除できます。

Zope の acl_users と Plone の acl_users に同じユーザーを異なるロールで登録すると、奇妙な結果が生じることがあります。現在の認証方法 (Zope レベルの基本認証や Plone レベルの Cookie 認証など) によっては、同じユーザーに対して異なる権限を持っている可能性があります。

于 2013-01-01T15:32:50.680 に答える