Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在浏览器中从Python子进程调用Shell脚本时,权限被拒绝_Python_Ajax_Bash_Shell_Cgi - Fatal编程技术网

在浏览器中从Python子进程调用Shell脚本时,权限被拒绝

在浏览器中从Python子进程调用Shell脚本时,权限被拒绝,python,ajax,bash,shell,cgi,Python,Ajax,Bash,Shell,Cgi,我通过ajax调用调用python脚本 $.ajax({ url: "http://localhost/username/test.py", type: "post", data: JSON.stringify({'param':{"hello":"world"}}), dataType: "json", success: function(response) { console.log(respon

我通过ajax调用调用python脚本

$.ajax({
        url: "http://localhost/username/test.py",
        type: "post",
        data: JSON.stringify({'param':{"hello":"world"}}),
        dataType: "json",
        success: function(response) {
        console.log(response);
        },
        error: function(error) {
        console.log(error);
        }
    });
python脚本启动(设置了conf文件并运行了apache服务器),但是python脚本应该循环通过一系列调用各种shell文件的子流程调用。大概是这样的:

for line in reader:
    var=line["A"]
    var2=var[:-4]
    var3=line["B"]
    print(var2)
    subprocess.call(["sh","dummy.sh",var,var2,var3])
同样的python脚本在终端中也可以正常工作。但是,当我运行web浏览器时,我在浏览器中获得了500个错误的权限。进入apache日志,我看到它遇到了权限错误

[Thu Jul 23 18:13:55.958161 2015][cgi:error][pid 19878][client::1:54132]AH01215:dummy.sh:第37行:inputFile.xml:权限被拒绝,引用人:


如何传递权限?或者我在这里做了什么完全错误的事情?

当您在终端上运行python脚本时,我假设它作为一个进程使用您的用户ID运行? 如果可以这样打开输入文件,那么很可能是权限问题

apache进程的权限不足,无法打开该文件

我建议:

  • 检查文件的所有者和权限-确保Apache进程用户ID可以读取该文件。这要求文件至少具有读取权限,即-rw-r--r--(chmod 644)

  • 另外,不要忘记目录路径权限和/或所有权。 例如,如果文件位于/home/foo/bar/inputFile.xml中,则需要检查Apache用户是否可以访问整个路径/home/foo/bar。这要求目录上至少有drwx--x--x(chmod 711)


当您在终端上运行python脚本时,我想它是作为一个带有用户ID的进程运行的? 如果可以这样打开输入文件,那么很可能是权限问题

apache进程的权限不足,无法打开该文件

我建议:

  • 检查文件的所有者和权限-确保Apache进程用户ID可以读取该文件。这要求文件至少具有读取权限,即-rw-r--r--(chmod 644)

  • 另外,不要忘记目录路径权限和/或所有权。 例如,如果文件位于/home/foo/bar/inputFile.xml中,则需要检查Apache用户是否可以访问整个路径/home/foo/bar。这要求目录上至少有drwx--x--x(chmod 711)


    • 感谢大漩涡、起义和里希。inputFile.xml实际上是在dummy.sh中创建的,然后dummy.sh中的其他步骤对inputFile.xml进行操作。我还预计,由于我已经对文件夹755中的其他文件进行了访问,这些新格式的xml文件将受到限制。如何确保由dummy.sh创建的所有文件都有足够的权限执行这些文件?非常感谢。

      感谢大漩涡、起义和里希。inputFile.xml实际上是在dummy.sh中创建的,然后dummy.sh中的其他步骤对inputFile.xml进行操作。我还预计,由于我已经对文件夹755中的其他文件进行了访问,这些新格式的xml文件将受到限制。如何确保由dummy.sh创建的所有文件都有足够的权限执行这些文件?非常感谢。

      由于一些限制,dummy.sh似乎无法读取inputFile.xml。请在inputFile.xml上尝试chmod 666。这使所有用户和组都能在文件上读写。@response,666是邪恶的,这不是玩笑。随机用户不需要写权限,所以644应该可以。@rici很公平,但我确实警告过他风险:)。我也喜欢755。它向所有者授予所有权限,但其他人只能读取。不要向不可执行的文件授予x权限。给随机用户指定x也不总是明智的。当然,对于目录755可能是合适的。谢谢REVERSE和rici。inputFile.xml实际上是在dummy.sh中创建的,然后dummy.sh中的其他步骤对inputFile.xml进行操作。我还预计,由于我已经对文件夹755中的其他文件进行了访问,这些新格式的xml文件将受到限制。如何确保由dummy.sh创建的所有文件都有足够的权限执行这些文件?非常感谢。由于一些限制,dummy.sh似乎无法读取inputFile.xml。请在inputFile.xml上尝试chmod 666。这使所有用户和组都能在文件上读写。@response,666是邪恶的,这不是玩笑。随机用户不需要写权限,所以644应该可以。@rici很公平,但我确实警告过他风险:)。我也喜欢755。它向所有者授予所有权限,但其他人只能读取。不要向不可执行的文件授予x权限。给随机用户指定x也不总是明智的。当然,对于目录755可能是合适的。谢谢REVERSE和rici。inputFile.xml实际上是在dummy.sh中创建的,然后dummy.sh中的其他步骤对inputFile.xml进行操作。我还预计,由于我已经对文件夹755中的其他文件进行了访问,这些新格式的xml文件将受到限制。如何确保由dummy.sh创建的所有文件都有足够的权限执行这些文件?非常感谢,谢谢你。我已经为该文件夹中的所有文件授予了+x和755权限。python和shell脚本都在同一个文件夹中。我甚至使用ls-l进行了验证,他们拥有正确的权限。我怀疑它使用了不同的用户。根据我的httpd.conf,这些文件应该使用_wwwuser and group。apache/httpd user是否可以访问整个文件夹路径?您需要确保完整路径是可访问的(711或rwx--x--x),而不仅仅是python和脚本所在的文件夹。我已经为该文件夹中的所有文件授予了+x和755权限。python和shell脚本都在同一个文件夹中。我甚至使用ls-l进行了验证,他们拥有正确的权限。我怀疑它使用了不同的用户。根据我的httpd.conf文件