That happens to me all the time, so today I spent a couple of minutes trying to figure out how to fix it.
In ZODB/blob.py we have the following:
class FilesystemHelper: # Storages that implement IBlobStorage can choose to use this # helper class to generate and parse blob filenames. This is not # a set-in-stone interface for all filesystem operations dealing # with blobs and storages needn't indirect through this if they # want to perform blob storage differently. … def create(self): if not os.path.exists(self.base_dir): os.makedirs(self.base_dir, 0700) log("Blob directory '%s' does not exist. " "Created new directory." % self.base_dir) if not os.path.exists(self.temp_dir): os.makedirs(self.temp_dir, 0700) log("Blob temporary directory '%s' does not exist. " "Created new directory." % self.temp_dir) if not os.path.exists(os.path.join(self.base_dir, LAYOUT_MARKER)): layout_marker = open( os.path.join(self.base_dir, LAYOUT_MARKER), 'wb') layout_marker.write(self.layout_name) else: layout = open(os.path.join(self.base_dir, LAYOUT_MARKER), 'rb' ).read().strip() if layout != self.layout_name: raise ValueError( "Directory layout `%s` selected for blob directory %s, but " "marker found for layout `%s`" % (self.layout_name, self.base_dir, layout)) def isSecure(self, path): """Ensure that (POSIX) path mode bits are 0700.""" return (os.stat(path).st_mode & 077) == 0 def checkSecure(self): if not self.isSecure(self.base_dir): log('Blob dir %s has insecure mode setting' % self.base_dir, level=logging.WARNING)
Then, the only thing you need to do is run chmod 700 var/blobstorage (owner can read, write and execute) in your installation directory.
Why this directory is created with a different setting (755) is a mystery to solve another day.
No comments:
Post a Comment