Google Cloud Storage公开分享

时间:2012-10-24 23:04:53

标签: google-cloud-storage

我的存储桶上的我的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>
         my_app@appspot.gserviceaccount.com
      </EmailAddress>
   </Scope>
   <Permission>
      WRITE
   </Permission>
</Entry>

    </Entries>
</AccessControlList>

但是当我在此存储桶中上传新文件时,默认情况下不会共享。

我想我应该因为AllUsers权限设置为

2 个答案:

答案 0 :(得分:10)

我认为你混淆了存储桶权限和对象权限。存储桶是公共可读的,因此每个人都可以列出存储桶的内容,但您上传的对象具有自己的权限集。如果您希望上传的对象可公开读取,则需要明确启用它。您可以使用以下命令执行此操作:

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

或者,您可以使用以下命令将包含存储桶的默认对象ACL设置为可公开读取:

gsutil setdefacl public-read gs://bucket

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

答案 1 :(得分:4)

如果你得到:你正在使用一个弃用的别名“setdefacl”,用于“defacl”......

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