#11293 closed defect (fixed)
AuthzPolicy will fail silently if ConfigObj is not available
| Reported by: | Dirk Stöcker | Owned by: | Ryan J Ollos |
|---|---|---|---|
| Priority: | highest | Milestone: | 1.0.2 |
| Component: | general | Version: | 1.0-stable |
| Severity: | normal | Keywords: | authzpolicy, permissions, exception |
| Cc: | Jun Omae | Branch: | |
| Release Notes: |
A
The |
||
| API Changes: | |||
| Internal Changes: | |||
Description (last modified by )
When python-configobj is not available, the AuthzPolicy fails without any notice (except a log entry). In the default config that means, that all pages are accessible and any restrictions are void. This is VERY dangerous.
Immediate Fix:
-
/usr/lib/python2.7/site-packages/tracopt/perm/authz_policy.py
old new 139 139 140 140 def check_permission(self, action, username, resource, perm): 141 141 if ConfigObj is None: 142 self.log.error(' configobj package not found')143 return None142 self.log.error('AuthzPolicy: configobj package not found') 143 return False # never silently fail! 144 144 145 145 if self.authz_file and not self.authz_mtime or \ 146 146 os.path.getmtime(self.get_authz_file()) > self.authz_mtime:
Also the setup.py should show clearly, that AuthzPolicy requires python-configobj to make the problem obvious.
Attachments (0)
Change History (12)
comment:1 by , 12 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 12 years ago
| Description: | modified (diff) |
|---|---|
| Keywords: | authzpolicy permissions added |
| Milestone: | → 1.0.2 |
| Owner: | set to |
| Status: | new → assigned |
| Summary: | AuthzPolicy fails SILENTLY! → AuthzPolicy will fail silently if ConfigObj is not available |
comment:4 by , 12 years ago
| Release Notes: | modified (diff) |
|---|
rjollos.git:1c203a85 results in a ConfigurationError being raised immediately when tracopt.perm.authz_policy is enabled, and before any other steps are taken to configure the installation for authz permissions. It seems better to only raise the ConfigurationError when AuthzPolicy is in the list of active permission_policies. So the behavior I propose is, allow tracopt.perm.authz_policy to be enabled but don't perform any error checks unless AuthzPolicy is in the list of active permission_policies. Once AuthzPolicy is active, we are very strict about failing with a ConfigurationError if the authz policy won't be enforced due to a configuration error or dependency not being loaded. Furthermore, after #10285, if AuthzPolicy is active but tracopt.perm.authz_policy is not enabled, a ConfigurationError will be raised, and this also extends to the case of raising a ConfigurationError if a permission policy in permission_policies is misspelled.
In rjollos.git:t11293.2 another case is covered by raising a ConfigurationError if the authz_file is empty.
comment:5 by , 12 years ago
| Release Notes: | modified (diff) |
|---|---|
| Resolution: | → fixed |
| Status: | assigned → closed |
Committed to 1.0-stable in [12037:12039]. Merged to trunk in [12040].
comment:6 by , 12 years ago
| Release Notes: | modified (diff) |
|---|
comment:7 by , 12 years ago
| Release Notes: | modified (diff) |
|---|
comment:8 by , 12 years ago
| Keywords: | exception added |
|---|
comment:9 by , 11 years ago
| Cc: | added |
|---|
I got ConfigurationError and ERROR: The authz file is empty. in trac.log when I temporarily comment out (or remove) all settings in authzpolicy file like the following. I feel the behavior is strange and confused me.
# [admin:ticket/versions] # foobar = TRAC_ADMIN # # [repository:babel@*] # foobar = !BROWSER_VIEW, !FILE_VIEW
I think we should allow authzpolicy file to be empty.
comment:11 by , 11 years ago
I've pushed changes which allows an empty authz policy in [12812].
I mentioned authzpolicy doesn't work for default repository in comment:10:ticket:10961. I think the behavior is a defect. Proposed fix can be found in jomae.git@t11293.4.
comment:12 by , 11 years ago
| Release Notes: | modified (diff) |
|---|



Related:
ConfigurationErroris raised.AuthzPolicyis added to[trac] permission_policiesbut the component is not enabled or fails to load, aConfigurationErrorwill be raised.If
[authz_policy] authz_fileis not specified in trac.ini butAuthzPolicyis active, there is currently no error. We should probably raise aConfigurationErrorin this case.