[Zope] Zope security and packing the database
Cameron Beattie
kjcsb at orcon.net.nz
Tue Oct 11 20:42:42 EDT 2005
>> I have created a script based on zope_pack from the Zope book which
>> allows a username and password to be specified when it is called. I wish
>> to create a user specifically for this purpose that only has the ability
>> to pack the ZODB.
>
> What permission is ZODB packing protected by?
I don't know. That's part of the problem. I can't see any permissions that
allow or disallow this.
>
>> granted the backup role all available permissions. But the user can't
>> login to http://mydomain.com/Control_Panel/Database/main/manage_workspace
>
> I don't know what zope_pack looks like, can you show us?
vi zope_pack
#!/usr/bin/python
import sys, urllib
host = sys.argv[1]
days = sys.argv[2]
user = sys.argv[3]
pwd = sys.argv[4]
class MyUrlOpener(urllib.FancyURLopener):
def prompt_user_passwd(self, host, realm):
return (user,pwd)
def __init__(self, *args):
self.version = "Zope Packer"
urllib.FancyURLopener.__init__(self, *args)
def main():
urllib._urlopener = MyUrlOpener()
url = "%s/Control_Panel/Database/manage_pack?days:float=%s" % \
(host, days)
try:
f = urllib.urlopen(url).read()
except IOError:
print "Cannot open URL %s, aborting" % url
print "Successfully packed ZODB on host %s" % host
if __name__ == '__main__':
main()
> What error message do you get?
If I use a user that has the Owner role it works correctly.
If I use the backup user then urllib can't get the url due to no
authentication so errors as follows:
File "/usr/lib/python2.4/urllib.py", line 180, in open
return getattr(self, name)(url)
File "/usr/lib/python2.4/urllib.py", line 305, in open_http
return self.http_error(url, fp, errcode, errmsg, headers)
File "/usr/lib/python2.4/urllib.py", line 318, in http_error
result = method(url, fp, errcode, errmsg, headers)
File "/usr/lib/python2.4/urllib.py", line 615, in http_error_401
return getattr(self,name)(url, realm)
File "/usr/lib/python2.4/urllib.py", line 628, in retry_http_basic_auth
return self.open(newurl)
> Any tracebacks?
>
Nothing appears in the log.
>
> PS: I wouldn't do zodb packing by whacking a url. There's a script that
> scripts with ZOpe now that opens up a ZEO connection and does the pack
> that way, that's what I'd do...
>
I don't use ZEO - can I just do the scripted packing bit without all the
associated ZEO setup?
Regards
Cameron
More information about the Zope
mailing list