2012-02-27 89 views
1

我正在使用Zend_Form_Element_File()写一个文件上传。我在public目录中创建了一个名为users的目录。当我加载文件时,我收到一个错误,说没有找到页面。我检查目录,看到权限是drwxr-xr-x。所以我将权限更改为drwxrw-rw-并再次加载页面。页面正确加载。但是当我上传一个文件时,它会再次产生一个错误。所以我最终将权限更改为drwxrwxrwx,并且所有内容都正常运行。 我的问题是,我在做别人正在做的平常做法吗?我发现让一个目录可执行是很奇怪的。 有人可以解释我是否正确吗?我只是学习Zend框架。我的目录是否可执行?

回答

4

目录必须如果一个程序应该能够“输入”它是可执行的。进入一个目录基本上意味着访问该目录下的任何文件/目录。

通过“读取”访问文件夹,您可以列出其内容 - “写入”访问的功能非常明显。

但是,出于安全原因,您应该检查drwxrwx---770)是否不够;通常你的用户和网络服务器共享一个共同的组。如果是这样的话,就没有必要给予任何“世界”的访问权限。

将您的脚本作为您的同一用户运行会更好 - 通过使用不会太难的fastcgi,但是如果您在共享主机上,则通常没有必要的访问权限来执行此操作。

+1

实际上,不可执行目录允许“浏览”目录并列出其内容。一个目录只需要可读就可以遍历它并访问你知道完整路径/文件名的子目录/文件。 – 2012-02-27 15:48:28

+0

我认为webserver是一个无法登录并将权限降低到700或更低的帐户。如果你与网络服务器:网络服务器,它会没事(根据我的经验) – Woot4Moo 2012-02-27 15:49:29

+0

@MarcB:这是错误的。这里是证明:https://paste.aeum.net/show/47/ - 虽然这里面没有访问文件,但访问'.'和'..'与访问文件没有区别。 – ThiefMaster 2012-02-27 15:51:18

0

通常,当您在目录上设置权限时,它会在大多数情况下将其级联到通过扩展ACLS内的文件。我立即看到的问题是,你已经授予世界访问权,这是一个坏主意。唯一需要对目录权限(最多700)的用户将成为您的Web服务器。所以我会把安全性恢复到700。

+0

在大多数系统上,web服务器用户不同于shell/ftp用户。在这种情况下,该文件夹需要'770'甚至'777'才能通过php脚本进行写入,除非它是由web服务器本身创建的(这会使其只读到您的ftp/shell) – ThiefMaster 2012-02-27 15:49:13

+0

仅在阅读时才存在问题访问ftp/shell? – Woot4Moo 2012-02-27 15:50:57

+0

如果您想删除某些内容:是的。除此之外,要在第一个位置创建文件夹,您需要授予父文件夹的组/世界写入权限,然后在从您的PHP脚本创建文件夹后撤消它。不难,但仍然是一团糟。 – ThiefMaster 2012-02-27 15:54:32