Hi everyone,
we are using the plone/ansible-playbook to deploy Plone on Debian.
Since we changed to WSGI
, we noticed permission issues to files of the Chameleon cache directory (located at data/<instance-name>/cache
) when starting instances directly via e.g. bin/client_reserved fg
vs. starting it via supervisor
.
Chameleon cache files created from the first command are owned by root
, while the files from the latter are owned by the Plone daemon user user (effective-user
):
-rw------- 1 root senaite 25K Feb 1 02:48 b384147b0740f9744a8fa25c14e9c175.py
-rw-r--r-- 1 root senaite 11K Feb 1 02:48 b384147b0740f9744a8fa25c14e9c175.pyc
-rw------- 1 senaite_daemon senaite 93K Feb 1 02:48 cdc9792daf150c47a740599229798c87.py
-rw-r--r-- 1 senaite_daemon senaite 37K Feb 1 02:48 cdc9792daf150c47a740599229798c87.pyc
Therefore, it might happen that we get permission in Plone errors like this:
Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 162, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 371, in publish_module
Module ZPublisher.WSGIPublisher, line 274, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 63, in call_object
Module senaite.core.browser.dashboard.dashboard, line 203, in __call__
Module Products.Five.browser.pagetemplatefile, line 126, in __call__
Module Products.Five.browser.pagetemplatefile, line 61, in __call__
Module zope.pagetemplate.pagetemplate, line 129, in pt_render
- Warning: Compilation failed
- Warning: exceptions.IOError: [Errno 13] Permission denied: '/home/senaite/data/senaitelims/cache/d78336088ed981f57685f55025db474c.py'
PTRuntimeError: ['Compilation failed', "exceptions.IOError: [Errno 13] Permission denied: '/home/senaite/data/senaitelims/cache/d78336088ed981f57685f55025db474c.py'"]
This seem to also happen when supervisor started instances are directly accessed, e.g. http://localhost:8081
.
Our permissions on this directory are as follows:
drwxrws--- 2 senaite_daemon senaite 40K Feb 1 02:48 cache
Where senaite_daemon
is the effective-user
and senaite
the buildout-user
:
[buildout]
...
effective-user = senaite_daemon
buildout-user = senaite
...
Any hints why this is happening?
Thanks and best regards