PHP仅更改传出命令的文件夹权限

时间:2013-01-09 17:02:23

标签: php .htaccess file-permissions folder-permissions

我正在制作文件共享网站,我允许网页的视觉和功能部分工作。当我想允许上传像php页面这样的服务器端脚本时,这会遇到问题。这个php(等)页面可以轻松地返回链接和删除我显然不想要的文件。我已多次更改权限以进行测试,但这也会阻止我的php文件上传并将文件重命名为这些文件夹。我想要允许这些文件类型,但我不知道我能做什么。

我以为我可以通过.htaccess这样做,但我不知道怎么做。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我不确定,但听起来你想允许任意文件上传(包括.PHP脚本),但要防止它们在服务器端执行。

我建议创建一个可通过网络访问的文件存储目录(例如,将其放在www-root之外或使用.htaccess文件来限制直接访问)。然后将PHP脚本上传到该目录。创建一个下载脚本,并对这些文件的下载访问权限通过该脚本,以便例如无法远程调用PHP文件。

答案 1 :(得分:1)

我认为这不是关于权限,而是php执行。 您可以使用.htaccess文件关闭目录上的php引擎,如下所示:

<IfModule mod_php5.c>
    php_flag engine off
</IfModule>

答案 2 :(得分:1)

如果我从阅读评论中理解正确:

您希望用户能够上传任何文件。包括代码。包括.php,.asp等 您希望用户能够执行此代码,但要将代码限制为“沙盒”环境。

在我看来,您应该将文件写入特定位置,该位置有自己的文档root / vhost(http://exec.domain.tld)。

在该虚拟主机上,您可以设置安全性,即:

AllowOverride None # disable rewriting and such
php value disable_functions dl,exec,passthru,system,shell_exec,popen # disable functions

最重要的是(!important)设置基于对vhosts文档根目录的限制

<Directory /srv/www/exec.domain.tld/docroot>
  php_admin_value open_basedir /srv/www/exec.domain.tld/docroot 
</Directory>

我实际上并没有设置这个环境,但我觉得这是你最好的起点。我确实认为它会起作用,如果你修复了我可能犯过的错字/参数名称错误:)