
# 设置对象ACL
#### 功能说明
设置指定桶中对象的访问权限。
#### 方法定义
```
ObsClient.setObjectAcl
```
#### 请求参数
| **字段名**    ||| **类型**                                                                      | **约束**                           | **说明**                                                                                                  |
|:--|---|---|:---|:---|:---|
| Bucket     ||| String                                                                      | 必选                               | 桶名。                                                                                                     |
| Key        ||| String                                                                      | 必选                               | 对象名。                                                                                                    |
| RequestDate ||| String 或 Date | 可选                               | 指定请求时间。 说明： 当为String类型时，必须符合ISO8601或RFC822规范。 |
| VersionId  ||| String                                                                      | 可选                               | 对象的版本号。                                                                                                 |
| ACL        ||| String                                                                      | 可选                               | [预定义访问策略](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0204.html)。               |
| Owner      ||| Object                                                                      | 可选                               | 对象的所有者。                                                                                                 |
| - | ID      || String                                                                      | 必选                               | 对象所有者的DomainId。                                                                                         |
| Delivered  ||| Boolean                                                                     | 可选                               | 桶的ACL是否向桶内对象传递。                                                                                         |
| Grants     ||| Array                                                                       | 可选                               | 被授权用户权限信息列表。                                                                                            |
| - | Grantee || Object                                                                      | 必选                               | 被授权用户。                                                                                                  |
| - | - | Type | String                                                                      | 必选                               | 被授权的[用户类型](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0202.html)。              |
| - | - | ID   | String                                                                      | 如果Type为"CanonicalUser"则必选，否则必须为空 | 被授权用户的DomainId。                                                                                         |
| - | - | URI  | String                                                                      | 如果Type为"Group"则必选，否则必须为空         | 被授权的[用户组](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0203.html)。               |
| - | Permission || String                                                                      | 必选                               | 被授予的[权限](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0201.html)。                |
   
![](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/public_sys-resources/note_3.0-zh-cn.png)
- Owner和Grants必须配套使用，且与ACL互斥。当设置了这两个字段时，不能设置ACL；反之，当设置了ACL时，不能设置Owner和Grants。
- Owner、Grants与ACL不能全为空。
 
#### 返回结果（InterfaceResult）
| **字段名**   | **类型** | **说明**         |
|:---|:---|:---|
| RequestId | String | OBS服务端返回的请求ID。 |
   
#### 代码样例
```
obsClient.setObjectAcl({
       Bucket:'bucketname',
       Key : 'objectkey',
       Owner:{ID:'ownerid'},
       Grants:[
               {Grantee:{Type:'CanonicalUser',ID:'userid'},Permission:obsClient.enums.PermissionRead},
               {Grantee:{Type:'CanonicalUser',ID:'userid'},Permission:obsClient.enums.PermissionWrite},
               {Grantee:{Type:'Group',URI:obsClient.enums.GroupAllUsers},Permission:obsClient.enums.PermissionWrite},
               {Grantee:{Type:'Group',URI:obsClient.enums.GroupAllUsers},Permission:obsClient.enums.PermissionRead}
       ]
},function (err, result){
       if(err){
              console.error('Error-->' + err);
       }else{
              if(result.CommonMsg.Status < 300){
                     console.log('RequestId-->' + result.InterfaceResult.RequestId);
              }else{
                     console.log('Code-->' + result.CommonMsg.Code);
                     console.log('Message-->' + result.CommonMsg.Message);
              }
       }
});
```
