This topic describes how to manage the access control list (ACL) of an object.

The following table describes the ACLs that you can configure for an object.

ACL Description Value
Inherited from the bucket The ACL of the object is the same as the ACL of the bucket in which the object is stored. oss2.OBJECT_ACL_DEFAULT
Private Only the object owner and authorized users are granted the read and write permissions on the object. oss2.OBJECT_ACL_PRIVATE
Public read Only the object owner and authorized users are granted the read and write permissions on the object. Other users are granted only the read permissions on the object. Exercise caution when you set the ACL of the object to this value. oss2.OBJECT_ACL_PUBLIC_READ
Public read/write All users are granted the read and write permissions on the object. Exercise caution when you set the ACL of the object to this value. oss2.OBJECT_ACL_PUBLIC_READ_WRITE

The ACL of the object takes precedence over the ACL of the bucket. For example, if the ACL of a bucket is private and the ACL of an object that is stored in the bucket is public, all users are granted the read and write permissions on the object. If the ACL of an object is not configured, the ACL of the object is the same as the ACL of the bucket in which the object is stored.

Configure the ACL of an object

The following code provides an example on how to configure the ACL of a specified object:

# -*- coding: utf-8 -*-
import oss2
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations in OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. 
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
# Set yourBucketName to the name of the bucket. 
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')

# Specify the full path of the object. The full path of the object cannot contain the bucket name. 
bucket.put_object_acl('yourObjectName', oss2.OBJECT_ACL_PUBLIC_READ)

Obtain the ACL of an object

The following code provides an example on how to query the ACL of a specified object:

# -*- coding: utf-8 -*-
import oss2
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations in OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. 
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
# Set yourBucketName to the name of the bucket. 
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')

# Specify the full path of the object. The full path of the object cannot contain the bucket name. 
print(bucket.get_object_acl('yourObjectName').acl)

References

  • For more information about the API operation that you can call to configure the ACL of an object, see PutObjectACL.
  • For more information about the API operation that you can all to obtain the ACL of an object, see GetObjectACL.