Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Manage file access permissions (Go SDK V1)

Son Güncelleme:Oct 01, 2026

OSS için Go SDK V1 kullanarak OSS'deki nesneler için erişim kontrol listelerini (ACL'ler) ayarlayabilir ve sorgulayabilirsiniz.

Notlar

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'ye erişmek için bir iç uç nokta kullanın. OSS bölgeleri ve uç noktaları hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.

  • Bu konuda, erişim kimlik bilgileri ortam değişkenlerinden alınır. Erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.

  • Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneği oluşturmayı göstermektedir. Özel bir alan adı kullanmak veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulaması yapmak gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırma (Go SDK V1).

  • Bir nesne için ACL'yi yapılandırmak üzere oss:PutObjectAcl iznine sahip olmanız gerekir. Nesne ACL'lerini sorgulamak için oss:GetObjectAcl iznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atama.

Okuma ve yazma izin türleri

Nesneler aşağıdaki dört ACL türünü destekler:


Erişim izni


Açıklama


ACL değeri


Paketten devral


Nesne, paketin ACL'sini devralır.


oss.ACLDefault


Özel


Yalnızca nesne sahibi ve yetkili kullanıcıların nesne üzerinde okuma ve yazma izinleri vardır. Diğer kullanıcılar nesneye erişemez.


oss.ACLPrivate


Herkese açık-okuma


Nesne sahibi ve yetkili kullanıcıların nesne üzerinde okuma ve yazma izinleri vardır. Diğer kullanıcıların yalnızca okuma izni vardır. Bu izni dikkatli kullanın.


oss.ACLPublicRead


Herkese açık-okuma-yazma


Tüm kullanıcıların nesne üzerinde okuma ve yazma izinleri vardır. Bu izni dikkatli kullanın.


oss.PublicReadWrite

Nesne ACL'leri, paket ACL'lerine göre önceliklidir. Örneğin, bir paket ACL'si özel olarak ayarlanmış ancak bir nesne ACL'si herkese açık-okuma-yazma olarak ayarlanmışsa, tüm kullanıcıların nesne üzerinde okuma ve yazma izinleri olur. Bir nesne için ACL yapılandırılmamışsa, nesne paket ACL'sini devralır.

Örnek kod

Aşağıdaki örnek kod, nesne ACL'lerinin nasıl ayarlanacağını ve sorgulanacağını gösterir:

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Create an OSSClient instance.
	// Set yourEndpoint to the Endpoint of the bucket. For example, for the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, set the Endpoint as needed.
	// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the value to cn-hangzhou. For other regions, set the value as needed.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Set the signature version.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Set yourBucketName to the name of the bucket.
	bucketName := "yourBucketName"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
	}

	// Set the ACL of the object.
	// Set yourObjectName to the full path of the object. Do not include the bucket name.
	objectName := "yourObjectName"
	err = bucket.SetObjectACL(objectName, oss.ACLPublicReadWrite)
	if err != nil {
		log.Fatalf("Failed to set object ACL for '%s': %v", objectName, err)
	}

	// Get the ACL of the object.
	aclRes, err := bucket.GetObjectACL(objectName)
	if err != nil {
		log.Fatalf("Failed to get object ACL for '%s': %v", objectName, err)
	}

	log.Printf("Object ACL for '%s': %s", objectName, aclRes.ACL)
}

İlgili kaynaklar

  • Tam örnek kod için bkz. GitHub örneği.

  • Nesne ACL'lerini ayarlama API işlemi hakkında daha fazla bilgi için bkz. SetObjectACL.

  • Nesne ACL'lerini sorgulama API işlemi hakkında daha fazla bilgi için bkz. GetObjectACL.