文件访问权限包括继承Bucket、私有、公共读和公共读写四种。本文介绍如何获取文件(Object)的访问权限。

文件访问权限

访问权限 描述 访问权限值
继承Bucket 文件遵循存储空间的访问权限。 default
私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private
公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read
公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write

文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。

设置文件访问权限

以下代码用于将examplebucket中exampleobject.txt的文件访问权限设置为私有(private)。

OSSPutObjectACLRequest *request = [OSSPutObjectACLRequest new];
// 填写Bucket名称。
request.bucketName = @"examplebucket";
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
request.objectKey = @"exampleobject.txt";
/**
 * 设置权限。
 * public-read:公共读
 * private:私有
 * public-read-write:公共读写
 * default:继承bucket
 */
request.acl = @"private";

OSSTask * putObjectACLTask = [client putObjectACL:request];
[putObjectACLTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"put object ACL success!");
    } else {
        NSLog(@"put object ACL failed, error: %@", task.error);
    }
    return nil;
}];

关于设置文件访问权限更多信息,请参见PutObjectACL

获取文件访问权限

以下代码用于获取examplebucket存储空间中exampleobject.txt文件的访问权限。

OSSGetObjectACLRequest *request = [OSSGetObjectACLRequest new];
// 填写Bucket名称。
request.bucketName = @"examplebucket";
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
request.objectName = @"exampleobject.txt";

OSSTask * getObjectACLTask = [client getObjectACL:request];
[getObjectACLTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        OSSGetObjectACLResult *result = task.result;
        NSLog(@"objectACL: %@", result.grant);
    } else {
        NSLog(@"get object ACL failed, error: %@", task.error);
    }
    return nil;
}];

关于获取文件访问权限更多信息,请参见GetObjectACL