setfsuid()和python 2.5.4

2024-09-28 05:23:03 发布

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

我尝试在python2.5.4和rhel5.4中使用setfsuid()。 因为它不包含在os模块中,所以我将它包装在自己的C模块中,并使用distutils将其安装为python扩展模块。在

然而,当我尝试使用它时,我并没有得到预期的结果。 setfsuid()返回表示成功的值(从超级用户更改),但我无法访问只有新设置的用户才有权访问的文件(使用open()),这表明fsuid没有真正更改。在

我试图通过使用相同的用户输入连续运行setfsuid()两次来验证setfsuid()是否有效 结果好像什么都没有改变,每次调用返回的值都是旧用户id与新用户id不同。我还从模块和python脚本调用了getpid(),两者都返回了相同的id,所以这不是问题所在。在

为了以防万一这很重要,我应该注意到我是在Apache守护进程(WSGI)中执行所有这些操作的。在

有人能解释一下吗? 谢谢你


Tags: 模块文件用户脚本idwsgi进程os
1条回答
网友
1楼 · 发布于 2024-09-28 05:23:03

更改FSUID的能力仅限于具有CAP\u SETFCAP功能的根进程或非根进程。现在,使用根权限运行web服务器通常被认为是不好的做法,因此,很可能需要在文件服务器上设置该功能(有关详细信息,请参见man capabilities)。请注意,这样做可能会严重影响整个系统的安全性。我建议考虑生成一个小的后端进程,该进程以root用户身份运行,并通过本地UNIX套接字与WSGI应用程序进行对话,然后再与Apache等高知名度目标的安全性打交道。在

相关问题 更多 >

    热门问题