代码之家  ›  专栏  ›  技术社区  ›  Mazatec

移动到生产环境时,Web应用失败。我需要哪些服务器权限?

  •  3
  • Mazatec  · 技术社区  · 16 年前

    我开发了一个小的网络应用程序。

    我用MAMP开发了这个应用程序。为了创建上传的图像文件,我使用PHP函数

    imagejpeg('my/path/name.jpg')
    

    为了删除文件,我使用PHP函数

    unlink('folder1/folder2/name.jpg')
    

    要写入文本文档,我正在使用函数

    fopen('folder1/folder2/name.txt', 'w')
    

    为什么会这样?我需要什么权限来设置文件夹的 folder1 和 folder2 去哪里?

    我知道777权限通常是不好的,因为它向公众开放了您的服务器。然而,我发现这些函数无法工作

    3 回复  |  直到 16 年前
        1
  •  1
  •   randombits    16 年前

    不要盲目地将文件夹的权限设置为777,这将为系统上的每个用户启用读、写、执行位。

    你应该总是同意 least amount of privileges 作为一般安全预防措施运行应用程序所必需的。

    从上面的问题我不太了解您的应用程序的要求,但是似乎罪魁祸首目录只需要您和作为web服务器运行的用户的读/写/执行权限。您可以简单地将它们授予web用户,然后使用sudo自己访问它们。


    写入-在目录中新建或删除现有文件或重命名文件(例如:unlink()函数的用法)
    执行-这样您就可以切换到并访问目录。

    chown -R www-data: folder1/
    chmod 700 folder1/ folder1/folder2/

    chown -R www-data:wwwusers folder1/
    chmod 770 folder1/ folder1/folder2/

    顺便说一句,我的回答很幼稚,因为我假设您在服务器上有root,并且没有启用POSIX acl或grsecurity之类的东西。对于ACL,您需要执行以下操作 setfacl -mu:www-data:rwx /path/to/dir

    man chmod , man chown . 你也可以在这里学到更多 UNIX permissions here .

        2
  •  1
  •   Romain Deveaud    16 年前

    有一个解决方案我觉得很优雅,但也许我是唯一的一个:)

    chown -R :www-data folder1
    chmod -R 775 folder1
    
        3
  •  0
  •   gurun8    16 年前

    不仅仅是更改权限,您是否查看了文件夹的所有权?Web服务器作为开发和部署脚本和文件夹的不同用户运行。一个简单的解决方案可能是将文件夹所有者更改为Web服务器用户。

    推荐文章