[pbs-devel] [PATCH v5 proxmox-backup 15/31] api: config: factor out sync job owner check

Fabian Grünbichler f.gruenbichler at proxmox.com
Fri Oct 25 12:16:29 CEST 2024


On October 18, 2024 10:42 am, Christian Ebner wrote:
> Move the sync job owner check to its own helper function, for it to
> be reused for the owner check for sync jobs in push direction.
> 
> No functional change intended.
> 
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> changes since version 4:
> - no changes
> 
> changes since version 3:
> - not present in previous version
> 
>  src/api2/config/sync.rs | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/src/api2/config/sync.rs b/src/api2/config/sync.rs
> index ad6ba0c85..aed46aeb0 100644
> --- a/src/api2/config/sync.rs
> +++ b/src/api2/config/sync.rs
> @@ -35,6 +35,17 @@ pub fn check_sync_job_read_access(
>      }
>  }
>  
> +fn is_correct_owner(auth_id: &Authid, job: &SyncJobConfig) -> bool {
> +    match job.owner {
> +        Some(ref owner) => {
> +            owner == auth_id
> +                || (owner.is_token() && !auth_id.is_token() && owner.user() == auth_id.user())

nit: this part here is pbs_datastore::datastore::check_backup_owner(owner, authid).is_ok()

> +        }
> +        // default sync owner
> +        None => auth_id == Authid::root_auth_id(),
> +    }
> +}
> +
>  /// checks whether user can run the corresponding pull job
>  ///
>  /// namespace creation/deletion ACL and backup group ownership checks happen in the pull code directly.
> @@ -55,17 +66,8 @@ pub fn check_sync_job_modify_access(
>          }
>      }
>  
> -    let correct_owner = match job.owner {
> -        Some(ref owner) => {
> -            owner == auth_id
> -                || (owner.is_token() && !auth_id.is_token() && owner.user() == auth_id.user())
> -        }
> -        // default sync owner
> -        None => auth_id == Authid::root_auth_id(),
> -    };
> -
>      // same permission as changing ownership after syncing
> -    if !correct_owner && ns_anchor_privs & PRIV_DATASTORE_MODIFY == 0 {
> +    if !is_correct_owner(auth_id, job) && ns_anchor_privs & PRIV_DATASTORE_MODIFY == 0 {
>          return false;
>      }
>  
> -- 
> 2.39.5
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
> 
> 
> 




More information about the pbs-devel mailing list