defacl - Get, set, or change default ACL on buckets

Synopsis

gsutil defacl set (<file-path>|<predefined-acl>) gs://<bucket_name>...
gsutil defacl get gs://<bucket_name>
gsutil defacl ch [-f] -u|-g|-d|-p <grant>... gs://<bucket_name>...

Description

The defacl command has three sub-commands:

Set

The defacl set command sets default object ACLs for the specified buckets. If you specify a default object ACL for a certain bucket, Cloud Storage applies the default object ACL to all new objects uploaded to that bucket, unless an ACL for that object is separately specified during upload.

Similar to the acl set command, the defacl set command specifies either a predefined ACL or the path to a file that contains ACL text. See gsutil help acl for examples of editing and setting ACLs via the acl command. See Predefined ACLs for a list of predefined ACLs.

Setting a default object ACL on a bucket provides a convenient way to ensure newly uploaded objects have a specific ACL. If you don't set the bucket's default object ACL, it will default to project-private. If you then upload objects that need a different ACL, you will need to perform a separate ACL update operation for each object. Depending on how many objects require updates, this could be very time-consuming.

Get

Gets the default ACL text for a bucket, which you can save and edit for use with the "defacl set" command.

Ch

The "defacl ch" (or "defacl change") command updates the default object access control list for a bucket. The syntax is shared with the "acl ch" command, so see the "CH" section of gsutil help acl for the full help description.

Ch Examples

Grant anyone on the internet READ access by default to any object created in the bucket example-bucket:

gsutil defacl ch -u AllUsers:R gs://example-bucket

Add the user john.doe@example.com to the default object ACL on bucket example-bucket with READ access:

gsutil defacl ch -u john.doe@example.com:READ gs://example-bucket

Add the group admins@example.com to the default object ACL on bucket example-bucket with OWNER access:

gsutil defacl ch -g admins@example.com:O gs://example-bucket

Remove the group admins@example.com from the default object ACL on bucket example-bucket:

gsutil defacl ch -d admins@example.com gs://example-bucket

Add the owners of project example-project-123 to the default object ACL on bucket example-bucket with READ access:

gsutil defacl ch -p owners-example-project-123:R gs://example-bucket

Ch Options

The "ch" sub-command has the following options

-d

Remove all roles associated with the matching entity.

-f

Normally gsutil stops at the first error. The -f option causes it to continue when it encounters errors. With this option the gsutil exit status will be 0 even if some ACLs couldn't be changed.

-g

Add or modify a group entity's role.

-p

Add or modify a project viewers/editors/owners role.

-u

Add or modify a user entity's role.