【问题标题】:Python CGI script permission denied when writing file写入文件时Python CGI脚本权限被拒绝
【发布时间】:2015-11-10 02:58:51
【问题描述】:

我在 /Library/WebServer/CGI-Executables 中有一个名为 test.cgi 的 Python 脚本。我在 /Library/WebServer/Documents 中有一个 index.html 文件。我的 html 文件包含一个发布到 CGI 脚本的表单,并且工作正常。当我的脚本尝试写入文件时,出现以下错误:

无论我指定什么作为输出目录,我都会收到相同的错误消息。我尝试更改 cgi-bin 文件夹和脚本的权限,但这也不起作用。有什么建议吗?

【问题讨论】:

    标签: python io permissions cgi


    【解决方案1】:

    在 Linux 上,Web 服务器通常以非特权用户和组的身份运行。通常 user=www-data 和 group=www-data,但这取​​决于您的设置。 CGI 继承了这个用户和组。

    要创建一个 www-data 文件,您需要确保该目录对该用户是可写的。

    一种常见的方法是确保目录在组 www-data 中并且可写。以下命令为示例:

    $ chgrp www-data /Users/user/Documents/pictures
    $ chmod g+rwx /Users/user/Documents/pictures
    

    这仅在您自己属于 www-data 组(或 root)时才有效。

    您可能希望使该目录中的现有文件可写:

    $ chgrp www-data /Users/user/Documents/pictures/*
    $ chmod g+rw /Users/user/Documents/pictures/*
    

    您还需要检查 /Users/user/Documents/pictures 上面的所有目录是否可供 www-data 访问。因此,如果它们不对任何人开放,也可以对它们进行 chgrp/chmod。

    【讨论】:

      【解决方案2】:

      看起来您在访问 /Users/user/Documents/pictures/lol.jpg 的过程中没有写入权限 - 您应该相应地修改其中的权限(同时牢记安全隐患)

      【讨论】:

      • 我下线并给出了 0777 的所有内容,现在它可以工作了,但我觉得这不是一个很好的解决方案。
      • 同意,您应该检查问题所在的层。如果这是一个面向公众的网络服务器,那么它可能会在某天对你造成很大的影响(与此同时,如果你觉得这回答了你的问题,你就知道了;))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2015-11-24
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多