Django - 打开管道写入时出现权限错误
Django - Permission Error when opening pipe to write
我的 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')
非常难运行ge,因为在命令行中一切正常:
echo -n 'Open' | sudo -u www-data tee ./garage_gate_pipe
我决定检查哪个用户负责管理 Django 应用程序,所以我更改了管道权限:
sudo chmod 666 garage_gate_pipe
并决定从 shell 调用 whoami
命令并将其发送到我的命名管道并在我的 python 守护程序中打印它:
os.system("whoami > /home/gate/garage_gate/gate_gpio/garage_gate_pipe")
pipeout = open(settings.PIPE_NAME, 'w')
一切正常...
我的守护进程的输出是:
'www-data
'
它是 st运行ge,因为我的 uwsgi Django 应用程序似乎是 www-data
用户的 运行。
我的命名管道 garage_gate_pipe
有很好的访问权限,所以我可以从命令行写入它,但是从 django 应用程序它不起作用,除非我为 others
添加写权限...
知道我可以更改什么以使此解决方案使用 garage_gate_pipe
的 660
权限吗?
我在我的 /etc/rc.local
脚本中更改了 uwsgi 命令中的 --gid
参数,它负责在启动时启动服务器:
/usr/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid gate
现在可以了。
我的 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')
非常难运行ge,因为在命令行中一切正常:
echo -n 'Open' | sudo -u www-data tee ./garage_gate_pipe
我决定检查哪个用户负责管理 Django 应用程序,所以我更改了管道权限:
sudo chmod 666 garage_gate_pipe
并决定从 shell 调用 whoami
命令并将其发送到我的命名管道并在我的 python 守护程序中打印它:
os.system("whoami > /home/gate/garage_gate/gate_gpio/garage_gate_pipe")
pipeout = open(settings.PIPE_NAME, 'w')
一切正常...
我的守护进程的输出是:
'www-data
'
它是 st运行ge,因为我的 uwsgi Django 应用程序似乎是 www-data
用户的 运行。
我的命名管道 garage_gate_pipe
有很好的访问权限,所以我可以从命令行写入它,但是从 django 应用程序它不起作用,除非我为 others
添加写权限...
知道我可以更改什么以使此解决方案使用 garage_gate_pipe
的 660
权限吗?
我在我的 /etc/rc.local
脚本中更改了 uwsgi 命令中的 --gid
参数,它负责在启动时启动服务器:
/usr/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid gate
现在可以了。