本文介绍如何管理文件访问权限。

    文件访问权限的完整示例代码请参见GitHub

    文件的访问权限(ACL)有以下四种:

    访问权限描述访问权限值
    继承Bucket文件遵循存储空间的访问权限。oss.ACLDefault
    私有文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。oss.ACLPrivate
    公共读文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。oss.ACLPublicRead
    公共读写所有用户都有该文件的读写权限。请谨慎使用该权限。oss.PublicReadWrite

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

    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
    6. )
    7. func main() {
    8. // 创建OSSClient实例。
    9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    10. if err != nil {
    11. fmt.Println("Error:", err)
    12. os.Exit(-1)
    13. }
    14. // 获取存储空间。
    15. bucket, err := client.Bucket("<yourBucketName>")
    16. if err != nil {
    17. fmt.Println("Error:", err)
    18. os.Exit(-1)
    19. }
    20. // 设置文件的访问权限。
    21. err = bucket.SetObjectACL("<yourObjectName>", oss.ACLPublicReadWrite)
    22. if err != nil {
    23. fmt.Println("Error:", err)
    24. os.Exit(-1)
    25. }
    26. // 获取文件的访问权限。
    27. aclRes, err := bucket.GetObjectACL("<yourObjectName>")
    28. if err != nil {
    29. fmt.Println("Error:", err)
    30. os.Exit(-1)
    31. }
    32. fmt.Println("Object ACL:", aclRes.ACL)
    33. }