調用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時的存取權限。 取值:
關於存取權限的更多資訊,請參見設定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為目錄,則返回該錯誤。 |