全部產品
Search
文件中心

Object Storage Service:PutObjectACL

更新時間:Jun 19, 2024

調用PutObjectACL介面修改檔案(Object)的存取權限(ACL)。此操作只有Bucket Owner有許可權執行,且需對Object有讀寫權限。

版本控制

調用PutObjectACL介面時,預設只能設定Object目前的版本的ACL。您可以通過指定versionId參數來設定指定Object版本的ACL。

  • 如果請求中指定versionId參數,且請求關聯Object的版本為刪除標記(Delete Marker),則OSS將返回405 MethodNotAllowed。

  • 如果請求中未指定versionId參數,且請求關聯Object的最新版本為刪除標記(Delete Marker),則OSS將返回404 NoSuchKey。

ACL說明

PutObjectACL介面通過Put請求中的x-oss-object-acl頭來設定Object ACL。目前Object包括如下四種存取權限。

名稱

描述

private

Object是私人資源。只有該Object的Owner擁有該Object的讀寫權限,其他使用者沒有許可權操作該Object。

public-read

Object是公用讀取資源。Object Owner擁有該Object的讀寫權限。非Object Owner只有該Object的讀許可權。

public-read-write

Object是公用讀寫資源。所有使用者擁有對該Object的讀寫權限。

default

Object遵循其所在Bucket的讀寫權限,即Bucket是什麼許可權,Object就是什麼許可權。

說明
  • Object ACL優先順序高於Bucket ACL。例如Bucket ACL是private的,而Object ACL是public-read-write的,則所有使用者都擁有該Object的存取權限,即使該Bucket是私人Bucket。如果某個Object未設定過ACL,則存取權限遵循Bucket ACL。

  • Object的讀操作包括GetObject、HeadObject、CopyObject和UploadPartCopy中的對原Object的讀;Object的寫操作包括PutObject、PostObject、AppendObject、DeleteObject、DeleteMultipleObjects、CompleteMultipartUpload以及CopyObject對新Object的寫入。

  • 您還可以在進行Object的寫操作時,在要求標頭中帶上x-oss-object-acl來設定Object ACL,效果與PutObjectACL等同。例如PutObject時在要求標頭中帶上x-oss-object-acl可以在上傳一個Object的同時設定此Object的ACL。

請求文法

PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

要求標頭

名稱

類型

是否必選

樣本值

描述

x-oss-object-acl

字串

public-read

指定OSS建立Object時的存取權限。

取值:

  • default(預設):Object遵循所在儲存空間的存取權限。

  • private:Object是私人資源。只有Object的擁有者和授權使用者有該Object的讀寫權限,其他使用者沒有許可權操作該Object。

  • public-read:Object是公用讀取資源。只有Object的擁有者和授權使用者有該Object的讀寫權限,其他使用者只有該Object的讀許可權。請謹慎使用該許可權。

  • public-read-write:Object是公用讀寫資源。所有使用者都有該Object的讀寫權限。請謹慎使用該許可權。

關於存取權限的更多資訊,請參見設定Object ACL

此介面還需要包含Host、Date等公用要求標頭。更多資訊,請參見公用要求標頭(Common Request Headers)

回應標頭

此介面僅涉及公用回應標頭。更多資訊,請參見公用回應標頭(Common Response Headers)

樣本

  • 未開啟版本控制

    請求樣本

    PUT /test-object?acl HTTP/1.1
    x-oss-object-acl: public-read
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Wed, 29 Apr 2015 05:21:12 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    Date: Wed, 29 Apr 2015 05:21:12 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • 已啟用版本控制

    請求樣本

    PUT /example?acl&versionId=CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0**** HTTP/1.1
    x-oss-object-acl: public-read
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 06:30:11 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 200 OK
    x-oss-version-id: CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0****
    x-oss-request-id: 5CAC3BF3B7AEADE017000624
    Date: Tue, 09 Apr 2019 06:30:11 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS

SDK

此介面所對應的各語言SDK如下:

錯誤碼

錯誤碼

HTTP狀態代碼

描述

AccessDenied

403

介面使用者不是Bucket Owner或者Bucket Owner對Object沒有讀寫權限。

InvalidArgument

400

指定的x-oss-object-acl值無效。

FileAlreadyExists

409

Bucket開啟階層命名空間後,當您要修改該Bucket下某個Object的存取權限時,如果設定的Object為目錄,則返回該錯誤。