我正在尝试使用针对特定用户的存储桶/对象的读/写权限和仅针对AllUsers的对象的读取权限。
我已经:
<Entry>
<Scope type="AllUsers"/>
<Permission>
READ
</Permission>
</Entry>
通过:gsutil setdefacl <f> gs://bucket
现在我正尝试使用网址http[s]://storage.cloud.google.com/bucket/test.png
从浏览器访问此内容,但它会将我带到Google帐户登录页面。当我使用另一个google acc(不是我曾经创建的项目/存储桶/对象)登录时,它没有明确的权限设置,它会显示图片。
gsutil getacl
表明AllUsers的READ权限已经到位,但它的工作方式与AllAuthenticatedUsers类似。
关于如何处理按预期工作的权限的任何想法?
答案 0 :(得分:1)
当您说您将该条目添加到默认ACL时,您的意思是您将其添加为AccessControlList.Entries中的元素,对吗? 如果没有看到完整的ACL文本,就很难知道发生了什么。
但是,由于您正在使对象公开可读(针对范围AllUsers的READ权限),因此您不需要存储桶的默认对象ACL中的其他范围;你可以这样做:
gsutil setdefacl public-read gs:// bucket
然后将对象上传到存储桶。
我意识到您要为特定用户授予读/写权限,但写权限由存储区ACL控制,而不是对象ACL(因此也不是存储桶上的默认对象ACL)。
如果您在未经过首次身份验证的情况下仍然无法通过浏览器访问对象,请尝试以上操作并告诉我们。
迈克施瓦茨, Google云端存储团队