From 5c0720d6c99754540c23cc02092902ef89f3a890 Mon Sep 17 00:00:00 2001 From: Stefan Reiter Date: Thu, 13 Jun 2019 11:33:28 +0200 Subject: [PATCH] fix #1427: Set file mode on uploaded templates/ISOs simply chmod the temp file before copying to the "correct" permission mode, where all users with access to the directory can read the file, to mirror the behavior one gets for a apl_download call. Signed-off-by: Stefan Reiter --- PVE/API2/Storage/Status.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/PVE/API2/Storage/Status.pm b/PVE/API2/Storage/Status.pm index 9a5a952..a56a02b 100644 --- a/PVE/API2/Storage/Status.pm +++ b/PVE/API2/Storage/Status.pm @@ -369,7 +369,7 @@ __PACKAGE__->register_method ({ type => 'string', }, tmpfilename => { - description => "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trustet port on localhost.", + description => "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trusted port on localhost.", type => 'string', optional => 1, }, @@ -427,7 +427,10 @@ __PACKAGE__->register_method ({ my $dest = "$path/$filename"; my $dirname = dirname($dest); - # we simply overwrite when destination when file already exists + # best effort to match apl_download behaviour + chmod 0644, $tmpfilename; + + # we simply overwrite when destination file already exists my $cmd; if ($node ne 'localhost' && $node ne PVE::INotify::nodename()) { @@ -447,7 +450,7 @@ __PACKAGE__->register_method ({ PVE::Tools::run_command([@remcmd, '/bin/mkdir', '-p', '--', PVE::Tools::shell_quote($dirname)], errmsg => "mkdir failed"); - $cmd = ['/usr/bin/scp', @ssh_options, '--', $tmpfilename, "[$remip]:" . PVE::Tools::shell_quote($dest)]; + $cmd = ['/usr/bin/scp', @ssh_options, '-p', '--', $tmpfilename, "[$remip]:" . PVE::Tools::shell_quote($dest)]; } else { PVE::Storage::activate_storage($cfg, $param->{storage}); File::Path::make_path($dirname);