Django - 打开管道进行写入时的权限错误

2024-05-13 09:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django应用程序与我的守护进程my named pipe通信时出现问题:

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应用程序,所以我更改了pipe的权限:

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

'

这很奇怪,因为我的uwsgi Django应用程序似乎是由www-data用户运行的。你知道吗

我的命名管道garage_gate_pipe具有良好的访问权限,因此我可以从命令行对其进行写入,但从django应用程序,除非我为others添加写入权限,否则它无法工作。。。你知道吗

知道我可以做些什么来让这个解决方案使用660garage_gate_pipe权限吗?你知道吗


Tags: django用户应用程序权限datasettings进程www
1条回答
网友
1楼 · 发布于 2024-05-13 09:10:30

我在/etc/rc.local脚本中更改了uwsgi命令中的 gid参数,该参数负责在启动时启动服务器:

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

现在起作用了。你知道吗

相关问题 更多 >