the two checks make sure that: * no user defined role 'PVEPoolUser' exists * the user gets a hint for roles only containing Pool.Allocate and not Pool.Audit --- PVE/CLI/pve6to7.pm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/PVE/CLI/pve6to7.pm b/PVE/CLI/pve6to7.pm index 0b6267d5..b470efa9 100644 --- a/PVE/CLI/pve6to7.pm +++ b/PVE/CLI/pve6to7.pm @@ -9,6 +9,7 @@ use PVE::API2::LXC; use PVE::API2::Qemu; use PVE::API2::Certificates; +use PVE::AccessControl; use PVE::Ceph::Tools; use PVE::Cluster; use PVE::Corosync; @@ -602,6 +603,30 @@ sub check_misc { log_pass("Certificate '$fn' passed Debian Busters security level for TLS connections ($size >= 2048)"); } } + + log_info("Check custom roles"); + my $usercfg = PVE::Cluster::cfs_read_file("user.cfg"); + foreach my $role (sort keys %{$usercfg->{roles}}) { + if (PVE::AccessControl::role_is_special($role)) { + next; + } + + if ($role eq "PVEPoolUser") { + # the user created a custom role named PVEPoolUser + log_fail("Custom role '$role' has a restricted name - a built-in role 'PVEPoolUser' will be available with the upgrade"); + } else { + log_pass("Custom role '$role' has no restricted name"); + } + + my $perms = $usercfg->{roles}->{$role}; + if ($perms->{'Pool.Allocate'} && $perms->{'Pool.Audit'}) { + log_pass("Custom role '$role' contains updated pool permissions"); + } elsif ($perms->{'Pool.Allocate'}) { + log_warn("Custom role '$role' contains permission 'Pool.Allocate' - to ensure same behavior add 'Pool.Audit' to this role after the upgrade"); + } else { + log_pass("Custom role '$role' contains no permissions that need to be updated"); + } + } } __PACKAGE__->register_method ({ -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel