阅读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-阿里云