2014-12-31 7 views
9

Ich habe versucht, auf Dateien in einem Bucket zuzugreifen, und ich bekomme immer Zugriff auf die Dateien verweigert. Ich kann sie in der GCS-Konsole sehen, kann aber auf sie zugreifen und kann nicht über gsutil darauf zugreifen, indem ich den folgenden Befehl ausführe.AccessDeniedException: 403 Auf GCS mit Eigentümerkonto verboten

gsutil cp gs://my-bucket/folder-a/folder-b/mypdf.pdf files/

Aber all das zurückgibt, ist AccessDeniedException: 403 Forbidden

Ich kann alle die Dateien aufgelistet, und solche, aber nicht wirklich auf sie zugreifen. Ich habe versucht, meinen Benutzer zum acl hinzuzufügen, aber das hatte immer noch keinen Effekt. Alle Dateien wurden von einer VM über eine Sicherungshalterung hochgeladen, die perfekt funktionierte und alle Zugriffe verloren hat.

Ich habe habe diese Beiträge aber keiner scheint eine Lösung, das ist zu haben, hat mir geholfen,

Can't access resource as OWNER despite the fact I'm the owner

gsutil copy returning "AccessDeniedException: 403 Insufficient Permission" from GCE

gsutil cors set command returns 403 AccessDeniedException

+1

, was Sie mit "gsutil ls gs: //my-bucket/folder-a/folder-b/mypdf.pdf" erhalten Sie und „gsutil ls gs: // Mein-Bucket/Ordner-a/Ordner-b/"? – Riccardo

Antwort

3

Das ist durchaus möglich. Der Besitz eines Buckets gewährt FULL_CONTROL-Berechtigungen für diesen Bucket, der die Möglichkeit enthält, Objekte in diesem Bucket aufzulisten. Bucket - Berechtigungen bedeuten jedoch nicht automatisch eine Art von Objektberechtigungen. Wenn also ein anderer Account Objekte hochlädt und ACLs auf "privat" setzt, hat der Besitzer des Buckets keinen Zugriff darauf (obwohl der Der Bucket-Besitzer kann das Objekt löschen, selbst wenn er es nicht lesen kann, da das Löschen von Objekten eine Bucket-Berechtigung ist).

Ich bin nicht vertraut mit den Standard-FUSE-Einstellungen, aber wenn ich raten musste, verwenden Sie das Systemkonto Ihres Projekts, um die Objekte hochzuladen, und sie sind privat festgelegt. Das ist gut. Am einfachsten testen Sie dies, indem Sie gsutil von einem GCE-Host ausführen, wobei die Standardanmeldeinformationen das Systemkonto sind. Wenn das funktioniert, könnten Sie gsutil verwenden, um die ACLs in etwas permissiver zu schalten, wie "projekt-privat".

Der Befehl, der zu tun wäre:

gsutil acl set -R project-private gs://muBucketName/ 
+0

Dieser Befehl gibt auch eine 'AccessDeniedException: 403 AccessDenied'. Hast du noch andere Vorschläge? Ich habe das gleiche Problem und alle meine Objekte sind auf privat gesetzt. @BrandonYarbrough – bryan

+0

Welches Konto verwenden Sie, um gsutil aufzurufen? Wahrscheinlich besitzt es den Bucket nicht oder besitzt kein Objekt im Bucket. –

+0

Alle meine Objekte verwenden 'private'. Ich habe meine Computer-Engine als Eigentümer in meinem Bucket aufgeführt. Und ich verwende den Standard-Befehl gsutil, der mit meiner Computer-Engine geliefert wurde. Ich kann alles im Eimer auflisten, ich kann einfach nichts kopieren. – bryan