【问题标题】:Drupal 7: how to restrict file access to specific user rolesDrupal 7:如何限制对特定用户角色的文件访问
【发布时间】:2012-03-24 07:23:11
【问题描述】:

我需要在 Drupal 7 上开发一个站点。我在 CCK 中有一些带有 File 字段的内容类型。并且访问这些类型的节点应该只授予特定的 Drupal 用户角色。并且在任何时候,站点管理员都应该能够将这些节点设为“公共”或“私有”。

我可以让节点只对特定的用户角色可见,但这不够安全。如果匿名用户知道文件的路径( www.mysite.org/hidden_​​files/file1 ),他可以下载它。

解决这个问题最优雅的方法是什么?

提前致谢。

【问题讨论】:

标签: security file drupal drupal-7 cck


【解决方案1】:

在此处查看此文档:http://drupal.org/documentation/modules/file

具体来说,标题为“管理文件位置和访问”的部分讨论了设置私有数据存储(Drupal 7 都支持,只需要配置)。

换句话说,创建一个文件夹,例如:

站点/默认/文件/私有

在该文件夹中放置一个 .htaccess 文件,其中包含以下内容,以防止通过网络直接访问这些文件:

拒绝所有人

(文档声称以下步骤会自动执行上述步骤,遗憾的是我没有测试过,但如果您跳过上述两个步骤,您可能会节省一些时间) p>

登录 Drupal 的管理界面,进入 /admin/config/media/file-system,配置私有 URL 并选择 Drupal 提供的私有文件作为默认下载方式。

为了定义对节点和字段的细粒度访问,可以使用Content Access:http://drupal.org/project/content_access

您还需要编辑您的内容类型并设置文件/图像上传字段以将上传的文件保存到私人文件而不是公共文件中。

此时,节点和字段级别权限将决定是否允许用户访问将通过菜单挂钩提供的文件,这些挂钩在提供文件之前验证凭据。

希望这会有所帮助。

【讨论】:

  • 其实你也可以将私有目录设置在你的web根目录之外,比如(相对于服务器根目录)/home/[your-account]/private。确保目录可由 Drupal 写入,根据您的服务器配置,该目录可以具有各种不同的权限和组权限。
  • 非常感谢!我将此答案标记为“已接受”。抱歉,无法将其标记为“有用”,因为我有声誉
  • 不用担心,很高兴能提供帮助。
  • 事实上,即使你使用drupal文件系统并将你的文件字段设置为使用私有文件系统。只要包含该文件的节点已发布,任何拥有直接链接的人都可以下载您的文件。没有文件级别的访问控制只有节点级别,即使您的节点不能被所有人访问,文件也会!
  • @Nir:所以当文件真正公开时,将文件设置为私有没有用吗?当我需要使用其他工具将它们设置为私有时,为什么要创建私有文件?我认为 Drupal 在设置私有文件方面有点棘手。
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多