2012-10-24 82 views
2

我的ACL权限如下:谷歌云存储公开分享我的桶

<?xml version="1.0" ?> 
<AccessControlList> 
    <Owner> 
     <ID>00b4903a97dfaa16aff41eeb91e90b5fb524f1daf0d88fceca29b6f647412e8d</ID> 
    </Owner> 
    <Entries> 
     <Entry> 
      <Scope type="GroupById"> 
       <ID>00b4903a97dfaa16aff41eeb91e90b5fb524f1daf0d88fceca29b6f647412e8d</ID> 
      </Scope> 
      <Permission>FULL_CONTROL</Permission> 
     </Entry> 
     <Entry> 
      <Scope type="AllUsers"/> 
      <Permission>READ</Permission> 
     </Entry> 

<Entry> 
    <Scope type="UserByEmail"> 
     <EmailAddress> 
     [email protected] 
     </EmailAddress> 
    </Scope> 
    <Permission> 
     WRITE 
    </Permission> 
</Entry> 

    </Entries> 
</AccessControlList> 

但是,当我在这个斗上传新文件默认情况下不共享。

我想我应该是因为设置为只读

回答

9

我想你混淆了水桶权限和对象权限AllUsers的权限。存储桶是公开可读的,因此每个人都可以列出存储桶的内容,但是您上传的对象具有自己的一组权限。如果你想要一个上传的对象是公共可读的,你需要明确地启用它。你可以使用下面的命令来做到这一点:

gsutil setacl public-read gs://bucket/object 

或者,您可以设置默认对象ACL为含桶是公开可读,使用这个命令:

gsutil setdefacl public-read gs://bucket 

的优势后者是每个上传到该桶的对象都会自动从包含的桶中继承公共可读性。

+1

只是'的gsutil SETACL公众阅读的GS://桶/对象'不适合我。它会重定向到google身份验证页面,并与AllAuthenticatedUsers权限一起工作 – tuxSlayer

+0

您可以共享来自gsutil getacl对象的输出以及您用于访问对象的URL吗? –

+1

已经解决,我使用了错误的网址,http://storage.googleapis.com/bucket/object它工作正常,谢谢 – tuxSlayer

3

如果你得到:您使用的是过时的别名, “setdefacl”,对于 “defacl” ......

使用gsutil defacl set public-read gs://bucketname