更新 Linux 上托管的 Web 应用程序插件的正确方法

更新 Linux 上托管的 Web 应用程序插件的正确方法

我正在为 PrestaShop 开发一个插件,它可以工作,但问题在于它的自动更新。有时由于权限问题,它在客户服务器上失败。

该插件以 zip 格式下载(使用 php/curl),然后通过 php 脚本解压缩为 plugin_temp,然后重命名为plugin。正如我在这个过程中被告知的那样,要么权限发生变化,要么所有权发生变化。

处理此类更新的正确方法是什么?是否应该将 zip 解压缩到 /tmp ?我猜测,由于大量网络应用程序都有自动更新插件,因此必须有某种标准程序。

谢谢

答案1

两个答案:

  • zip 文件不存储 Unix 所有者或权限信息。请改用 tar 文件。

Stack Overflow 上有几个关于此主题的问答,包括:

https://stackoverflow.com/questions/13633488/can-i-store-unix-permissions-in-a-zip-file-built-with-apache-ant

https://stackoverflow.com/questions/10735297/maintain-file-and-folder-permissions-inside-archives

  • 处理更新的正确方法是编写用户可以上传并从 ssh 会话运行的安装程序脚本 - 网站不应具有覆盖自己的脚本文件(或 .htaccess 文件,或添加新的可执行文件)的权限脚本等)。我意识到这对于许多网络托管服务来说可能很困难或不可能,但重要的是要认识到这是一个巨大的安全漏洞。

相关内容