【问题标题】:Granting read access to the Authenticated Users group for a file授予对文件的 Authenticated Users 组的读取权限
【发布时间】:2012-01-23 22:15:35
【问题描述】:

如何授予 Authenticated Users 组对文件的读取权限?我正在使用 s3cmd 并想在上传时这样做,但我只是直接专注于更改 acl。我应该为http://acs.amazonaws.com/groups/global/AuthenticatedUsers 输入什么?我已经尝试了所有可能的 AuthenticatedUsers 组合。

./s3cmd setacl --acl-grant=read:http://acs.amazonaws.com/groups/global/AuthenticatedUsers s3://BUCKET/文件

./s3cmd setacl --acl-grant=read:AuthenticatedUsers s3://BUCKET/文件

【问题讨论】:

    标签: amazon-s3 s3cmd


    【解决方案1】:

    这对于 s3cmd 似乎是不可能的。相反,我不得不切换到 aws cli 工具。

    以下是安装它们的说明: http://docs.aws.amazon.com/cli/latest/userguide/installing.html

    上传时可以通过以下命令设置acl为认证用户读取:

    aws s3 cp <file-to-upload> s3://<bucket>/ --acl authenticated-read
    

    加上一大堆其他组合,您可以在此处查看: http://docs.aws.amazon.com/cli/latest/reference/s3/index.html#cli-aws-s3

    【讨论】:

      【解决方案2】:

      以下命令适用于 s3cmd 版本 1.6.0: s3cmd setacl s3://&lt;bucket&gt;/&lt;file-name&gt; --acl-grant='read:http://acs.amazonaws.com/groups/global/AuthenticatedUsers' 用于单个文件。

      s3cmd setacl s3://<bucket>/<dir-name> --acl-grant='read:http://acs.amazonaws.com/groups/global/AuthenticatedUsers' --recursive 用于目录中的所有文件。

      【讨论】:

        【解决方案3】:

        这是来自http://s3tools.org/s3cmd

        上传文件到bucket~$ s3cmd put addressbook.xml s3://logix.cz-test/addrbook.xml 文件“addressbook.xml”存储为 s3://logix.cz-test/addrbook.xml (123456 bytes) A​​CL注意事项 (访问控制列表)——上传到 Amazon S3 存储桶的文件可以 要么是私有的,只有你才能读取,拥有者 访问和秘密密钥,或公开的,任何人都可以读取。每个文件 作为公共上传不仅可以使用 s3cmd 访问,而且还有一个 HTTP 地址,URL,可以像任何其他 URL 一样使用,并且 例如通过网络浏览器访问。

        ~$ s3cmd put --acl-public --guess-mime-type storage.jpg s3://logix.cz-test/storage.jpg 文件“storage.jpg”存储为 s3://logix.cz-test/storage.jpg(33045 字节) 对象是:http://logix.cz-test.s3.amazonaws.com/storage.jpg

        现在任何人都可以在浏览器中显示 storage.jpg 文件。很酷吧?

        尝试将 public 更改为经过身份验证,这应该可以工作。

        http://docs.amazonwebservices.com/AmazonS3/latest/dev/ACLOverview.html#CannedACL 它在亚马逊方面解释了如何使用他们的 ACL,假设如果您在 s3cmd 中使用 public - 这将转换为亚马逊中的 public-read,因此经过身份验证的应该转换为 authenticated-read.

        【讨论】:

        • 那行不通。它不是标志中的选项。看起来 s3cmd 根本不支持它。我希望有人会引导我使用存储桶策略语法或其他东西。
        【解决方案4】:

        如果您愿意使用 Python,boto 库提供了获取和设置 ACL 的所有功能;来自boto S3 documentation

        b.set_acl('public-read')
        

        其中 b 是一个桶。当然,在您的情况下,您应该将“public-read”更改为“authenticated-read”。您可以对密钥(文件)执行类似的操作。

        【讨论】:

          【解决方案5】:

          如果您想在存储桶级别执行此操作 -

          aws s3api put-bucket-acl --bucket bucketname --grant-full-control uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers
          

          文档 - http://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html

          【讨论】:

            【解决方案6】:

            这是一个示例命令,它将 S3 对象上的 ACL 设置为 authenticated-read

            aws s3api put-object-acl --acl authenticated-read --bucket mybucket --key myfile.txt
            

            .

            【讨论】:

              猜你喜欢
              • 2018-04-29
              • 1970-01-01
              • 2015-12-26
              • 1970-01-01
              • 1970-01-01
              • 2019-11-15
              • 2014-06-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多