【发布时间】:2015-11-13 13:14:23
【问题描述】:
我对 Amazon s3 存储桶有类似的问题。 https://serverfault.com/questions/693815/how-to-stop-s3-from-listing-some-of-the-content
当我删除“列表”权限时它工作正常,存储桶内容不可见。但是当我通过 API 将一个项目上传到该存储桶时,“列表”权限再次被勾选,任何人都可以查看该存储桶的所有项目。
这是我将项目上传到存储桶的 PHP 代码
$this->s3->putObjectFile($path, $this->bucketName, $fileName, S3::ACL_PUBLIC_READ);
即使我上传了新项目,我也想保留取消勾选“列表”权限。我该怎么办?
【问题讨论】:
-
您是说在您的测试中,使用公共读取 ACL 上传单个对象的行为会在存储桶属性下重新启用授予整个存储桶“所有人”的“列表”权限> 控制台中的权限,在您禁用后?
-
是的.. 任何解决方案?
-
嗯...不。那不应该发生。我无法通过存储公共对象来复制它。但是,从 REST API 文档来看,如果您有错误并调用
putObjectFile()并将$path设置为空字符串(或者可能未定义),似乎可以切换整个存储桶的“列表”选项或者只是/取决于 SDK 行为)因为存储桶没有根对象——存储桶 is 是根对象,并且在根对象上设置 acl is i> 把它放在桶上。 -
我不确定我错过了什么。我从undesigned.org.za/2007/10/22/amazon-s3-php-class 获得了 s3 类,我正在使用 $this->s3->putObjectFile($path, $this->bucketName, $fileName, S3::ACL_PUBLIC_READ);上传。这里 $path 正确传递,没有空或未定义。请帮我解决这个问题
-
Enable S3 logging on the bucket。然后,进行一些测试,等待新日志出现,然后查看它们。如果您看到记录了任何
PUT /或PUT /?acl请求(没有对象键,只有/),那将是问题所在,您需要调查它们的来源,因为这是更改请求存储桶 ACL 应类似于日志中的内容。除非 S3 本身存在严重缺陷(这似乎不太可能),否则 something 似乎正在向您的存储桶发送此类请求,从而重置此值。