3

我对存储桶的 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 权限设置为读取

4

2 回答 2

10

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

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

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

gsutil setdefacl public-read gs://bucket

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

于 2012-10-28T06:49:00.790 回答
4

如果您得到:您正在为“defacl”使用已弃用的别名“setdefacl”...

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

于 2014-11-14T00:39:24.463 回答