2016-07-02 4 views
0

У меня есть проблемы с моим приложением 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?

ответ

1

Я изменил --gid параметр в uwsgi команды в моем /etc/rc.local скрипт, который отвечает за запуск сервера на старте:

/usr/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid gate 

Теперь он работает.

 Смежные вопросы

  • Нет связанных вопросов^_^