]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Merge pull request #64152 from cbodley/wip-63323
authorYuri Weinstein <yweinste@redhat.com>
Fri, 19 Sep 2025 14:52:03 +0000 (07:52 -0700)
committerGitHub <noreply@github.com>
Fri, 19 Sep 2025 14:52:03 +0000 (07:52 -0700)
rgw: support S3 Object Ownership controls to disable object ACLs

Reviewed-by: Adam Emerson <aemerson@redhat.com>
12 files changed:
1  2 
PendingReleaseNotes
doc/radosgw/s3/bucketops.rst
src/rgw/CMakeLists.txt
src/rgw/driver/rados/rgw_data_sync.cc
src/rgw/rgw_bucket.cc
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_s3.h
src/rgw/rgw_sal.h

index d03bbb75af171b260d99e08fff922f39159d5336,b0eb86cacfd79ce61719cde8e3f3938cd9c3ff8c..c2adac127290e6a39a4c526c6448500374e8bc99
@@@ -63,8 -53,9 +63,9 @@@
     - osd_op_num_shards_hdd = 1 (was 5)
     - osd_op_num_threads_per_shard_hdd = 5 (was 1)
    For more details see https://tracker.ceph.com/issues/66289.
+ * RGW: Added support for S3 Object Ownership to disable object ACLs.
  * MGR: The Ceph Manager's always-on modulues/plugins can now be force-disabled.
 -  This can be necessary in cases where we wish to prevent the manager from being
 +  This can be necessary when we wish to prevent the Manager from being
    flooded by module commands when Ceph services are down or degraded.
  
  * CephFS: It is now possible to pause the threads that asynchronously purge
Simple merge
Simple merge
Simple merge
index ea48dd9923f035a86e2c7cd611b01c5ff2e6a8d3,0fdd3503ba782f212fe8a90d0939386ce41a5582..2abc3bc4be4b15b64d6f012e8da661d9e48885e4
@@@ -137,10 -137,16 +137,17 @@@ int rgw_chown_bucket_and_objects(rgw::s
                                 const DoutPrefixProvider *dpp, optional_yield y)
  {
    /* Chown on the bucket */
 -  int ret = bucket->chown(dpp, new_user->get_id(), y);
 +  int ret = bucket->chown(dpp, new_user->get_id(), new_user->get_display_name(),
 +                          y);
    if (ret < 0) {
-     set_err_msg(err_msg, "Failed to change object ownership: " + cpp_strerror(-ret));
+     set_err_msg(err_msg, "Failed to change bucket ownership: " + cpp_strerror(-ret));
+     return ret;
+   }
+   // skip object acls when BucketOwnerEnforced
+   if (auto ownership = rgw::s3::get_object_ownership(bucket->get_attrs());
+       ownership == rgw::s3::ObjectOwnership::BucketOwnerEnforced) {
+     return 0;
    }
  
    /* Now chown on all the objects in the bucket */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge