У меня есть проблемы с моим приложением Django, который общается с моим демоном мой именованный канал:Джанго - Разрешение Ошибка при открытии трубы написать
Django application -> garage_gate_pipe -> python daemon
демон используемый gate
пользователем, и я предположил, что www-data
отвечает для запуска моего приложения Django (приложение управляется uwsgi
), поэтому я добавил www-data
к gate
группе:
$ sudo -u www-data groups
gate www-data
и я получил соответствующие права доступа для garage_gate_pipe
:
prw-rw---- 1 gate gate 0 Jul 2 17:55 garage_gate_pipe
, к сожалению, она не работает из-за ошибки доступа:
[Errno 13] Permission denied: '/path/to/garage_gate_pipe'
Вот линия ошибки:
pipeout = open(settings.PIPE_NAME, 'w')
Это очень странно, потому что в командной строки все работает нормально:
echo -n 'Open' | sudo -u www-data tee ./garage_gate_pipe
Я решил проверить, какой пользователь отвечает за управление Django приложение, поэтому я изменил права доступа к трубе:
sudo chmod 666 garage_gate_pipe
и решил вызвать whoami
команду оболочки и отправить его на мой именованный канал и распечатать его в моем питон демон:
os.system("whoami > /home/gate/garage_gate/gate_gpio/garage_gate_pipe")
pipeout = open(settings.PIPE_NAME, 'w')
И все работало ...
выход из моего демона был:
'www-data
'
Странно, потому что мое приложение uwsgi Django, похоже, управляется пользователем www-data
.
Мой именованный канал garage_gate_pipe
имеет хорошие права доступа, так что я могу написать к нему из командной строки, но из приложения Джанго он не работает, если я не добавить разрешение на запись для others
...
Любая идея, что я могу изменить, чтобы это решение работало с разрешениями 660
для garage_gate_pipe
?