Following the rationale in afdfbe5594be5a0a61943de10cc5671ac53cbf79, mask these bits for 'clone_image' and 'volume_import'. Also mask in 'chmod' for new base images for consistency.
Signed-off-by: Fabian Ebner <f.eb...@proxmox.com> --- This would make the permissions more consistent, but is not really important. We need to be careful to not mask subvols though, see 1f5734bb8d8397013615c368b8845abb3e74bab5. The generic 'volume_import' uses tar for subvols and the other plugins with their own 'volume_import', i.e. both LVM and both ZFS, are not affected by umask AFAICT. And for 'clone_image' only LVMThin, RBD, and ZFS allow subvols and those are not affected by umask AFAICT. The obvious and maybe nicer alternative would be to instead do the masking inside those plugins where umask actually has an effect. If I'm not missing anything, it wouldn't be many places, only in the generic Plugin.pm (alloc_image, clone_image, create_base, volume_import) and in Glusterfs.pm (alloc_image and clone_image). The other FS-based plugins don't override thes methods. PVE/Storage.pm | 10 +++++++--- PVE/Storage/Plugin.pm | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/PVE/Storage.pm b/PVE/Storage.pm index 3e65e06..9b1b914 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -675,7 +675,9 @@ sub vdisk_clone { # lock shared storage return $plugin->cluster_lock_storage($storeid, $scfg->{shared}, undef, sub { - my $volname = $plugin->clone_image($scfg, $storeid, $volname, $vmid, $snap); + my $volname = $run_with_umask->(umask|0037, sub { + return $plugin->clone_image($scfg, $storeid, $volname, $vmid, $snap); + }); return "$storeid:$volname"; }); } @@ -1412,8 +1414,10 @@ sub volume_import { my $scfg = storage_config($cfg, $storeid); my $plugin = PVE::Storage::Plugin->lookup($scfg->{type}); return $plugin->cluster_lock_storage($storeid, $scfg->{shared}, undef, sub { - return $plugin->volume_import($scfg, $storeid, $fh, $volname, $format, - $base_snapshot, $with_snapshots); + return $run_with_umask->(umask|0037, sub { + return $plugin->volume_import($scfg, $storeid, $fh, $volname, $format, + $base_snapshot, $with_snapshots); + }); }); } diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm index d0f1df6..1babf34 100644 --- a/PVE/Storage/Plugin.pm +++ b/PVE/Storage/Plugin.pm @@ -521,7 +521,7 @@ sub create_base { # We try to protect base volume - chmod(0444, $newpath); # nobody should write anything + chmod(0440, $newpath); # nobody should write anything # also try to set immutable flag eval { run_command(['/usr/bin/chattr', '+i', $newpath]); }; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel