【问题标题】:Proper way to perform privileged tasks from wsgi app从 wsgi 应用程序执行特权任务的正确方法
【发布时间】:2014-07-02 22:29:47
【问题描述】:

我需要编写一个用于操作 iptables 的小型 wsgi 应用程序。我在 Debian 上使用带有 python-iptables 包的 nginx + uwsgi。

uwsgi 默认以 www-data 用户身份运行,所以如果我尝试从我的应用程序访问 iptables,我会得到iptc.ip4tc.IPTCError: can't initialize filter: Permission denied (you must be root)

除了以 root 身份运行整个 wsgi 应用程序之外,是否有解决此问题的方法?如果我想将我的应用程序与 Django 集成,我应该怎么做(我绝对不想以 root 身份运行所有 Django 的东西)?

【问题讨论】:

    标签: python django root wsgi iptables


    【解决方案1】:

    您可以尝试将需要超级用户权限的所有功能提取到由 root (chown root script.py) 拥有的单独脚本 (例如 script.py) 中,允许执行它 (chmod u+x script.py),然后将 setuid 设置为允许其他用户对该文件具有 root 权限的执行权限 (chmod u+s script.py)。

    那么您应该能够使用子进程和 www-data 权限从您的 wsgi 应用程序调用该脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 2011-11-01
      • 1970-01-01
      • 2018-09-09
      • 2014-10-02
      • 2012-11-21
      相关资源
      最近更新 更多