閱讀1001 返回首頁    go iPhone_iPad_Mac_手機_平板_蘋果apple


PutObjectACL__關於Object操作_API 參考_對象存儲 OSS-阿裏雲

Put Object ACL接口用於修改Object的訪問權限。目前Object有三種訪問權限:private, public-read, public-read-write。Put Object ACL操作通過Put請求中的“x-oss-object-acl”頭來設置,這個操作隻有Bucket Owner有權限執行。如果操作成功,則返回200;否則返回相應的錯誤碼和提示信息。

請求語法:

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

Object ACL釋義

名稱 描述
private 該ACL表明某個Object是私有資源,即隻有該Object的Owner擁有該Object的讀寫權限,其他的用戶沒有權限操作該Object
public-read 該ACL表明某個Object是公共讀資源,即非Object Owner隻有該Object的讀權限,而Object Owner擁有該Object的讀寫權限
public-read-write 該ACL表明某個Object是公共讀寫資源,即所有用戶擁有對該Object的讀寫權限
default 該ACL表明某個Object是遵循Bucket讀寫權限的資源,即Bucket是什麼權限,Object就是什麼權限

細節分析:

  1. Object的讀操作包括:GetObject,HeadObject,CopyObject和UploadPartCopy中的對source object的讀;Object的寫操作包括:PutObject,PostObject,AppendObject,DeleteObject,DeleteMultipleObjects,CompleteMultipartUpload以及CopyObject對新的Object的寫。
  2. x-oss-object-acl中權限的值必須在上述3種權限中。如果有不屬於上述3種的權限,OSS返回400 Bad Request消息,錯誤碼:InvalidArgument。
  3. 用戶不僅可以通過PutObjectACL接口來設置Object ACL,還可以在Object的寫操作時,在請求頭中帶上x-oss-object-acl來設置Object ACL,效果與PutObjectA ACL等同。例如PutObject時在請求頭中帶上x-oss-object-acl可以在上傳一個Object的同時設置某個Object的ACL。
  4. 對某個Object沒有讀權限的用戶讀取某個Object時,OSS返回 403 Forbidden消息,錯誤碼:AccessDenied,提示:You do not have read permission on this object.
  5. 對某個Object沒有寫權限的用戶寫某個Object時,OSS返回 403 Forbidden消息,錯誤碼:AccessDenied,提示:You do not have write permission on this object.
  6. 隻有Bucket Owner采用權限調用PutObjectACL來修改該Bucket下某個Object的ACL。非Bucket Owner調用PutObjectACL時,OSS返回 403 Forbidden消息,錯誤碼:AccessDenied,提示:You do not have write acl permission on this object.
  7. Object ACL優先級高於Bucket ACL。例如Bucket ACL是private的,而Object ACL是public-read-write的,則訪問這個Object時,先判斷Object的ACL,所以所有用戶都擁有這個Object的訪問權限,即使這個Bucket是private bucket。如果某個Object從來沒設置過ACL,則訪問權限遵循Bucket ACL。

示例

請求示例:

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 qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=

返回示例:

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

最後更新:2016-11-23 17:16:08

  上一篇:go GetObjectMeta__關於Object操作_API 參考_對象存儲 OSS-阿裏雲
  下一篇:go GetObjectACL__關於Object操作_API 參考_對象存儲 OSS-阿裏雲