[pve-devel] [PATCH][pve-manager] Changes set_userpasswd method

Игорь Шестаков shine at selectel.ru
Wed Nov 6 09:25:15 CET 2013


What about this patch?


On Mon, Oct 28, 2013 at 1:31 PM, Игорь Шестаков <shine at selectel.ru> wrote:

> Done.
>
> diff --git a/PVE/OpenVZ.pm b/PVE/OpenVZ.pm
> index a16d4fc..7788f66 100644
> --- a/PVE/OpenVZ.pm
> +++ b/PVE/OpenVZ.pm
> @@ -1244,13 +1244,13 @@ sub replacepw {
>  }
>
>  sub set_rootpasswd {
> -    my ($privatedir, $opt_rootpasswd) = @_;
> +    my ($opt_rootpasswd, $rootdir) = @_;
>
> -    my $pwfile = "$privatedir/etc/passwd";
> +    my $pwfile = "$rootdir/etc/passwd";
>
>      return if ! -f $pwfile;
>
> -    my $shadow = "$privatedir/etc/shadow";
> +    my $shadow = "$rootdir/etc/shadow";
>
>      if ($opt_rootpasswd !~ m/^\$/) {
>   my $time = substr (Digest::SHA::sha1_base64 (time), 0, 8);
>
>
>
> diff --git a/PVE/API2/OpenVZ.pm b/PVE/API2/OpenVZ.pm
> index 06fe60b..60ef124 100644
> --- a/PVE/API2/OpenVZ.pm
> +++ b/PVE/API2/OpenVZ.pm
> @@ -406,15 +406,23 @@ __PACKAGE__->register_method({
>   }
>
>      } else {
> - PVE::Tools::file_set_contents($basecfg_fn, $rawconf);
> - my $cmd = ['vzctl', '--skiplock', 'create', $vmid,
> -   '--ostemplate', $archive, '--private', $private];
> - run_command($cmd);
> -
> - # hack: vzctl '--userpasswd' starts the CT, but we want
> - # to avoid that for create
> - PVE::OpenVZ::set_rootpasswd($private, $password)
> -    if defined($password);
> +        PVE::Tools::file_set_contents($basecfg_fn, $rawconf);
> +        my $cmd = ['vzctl', '--skiplock', 'create', $vmid,
> +                   '--ostemplate', $ostmp, '--private', $private];
> +        run_command($cmd);
> +        my $rootdir = PVE::OpenVZ::get_rootdir($conf, $vmid);
> +
> +        $cmd = ['/usr/sbin/vzctl', '--skiplock', 'mount', $vmid];
> +        run_command($cmd);
> +        die "Cannot mount $vmid" if !PVE::OpenVZ::check_mounted($conf,
> $vmid);
> +
> +        # hack: vzctl '--userpasswd' starts the CT, but we want
> +        # to avoid that for create
> +        PVE::OpenVZ::set_rootpasswd($password, $rootdir)
> +            if defined($password);
> +
> +        $cmd = ['/usr/sbin/vzctl', '--skiplock', 'umount', $vmid];
> +        run_command($cmd);
>      }
>
>      PVE::AccessControl::add_vm_to_pool($vmid, $pool) if $pool;
>
>
>
> On Mon, Oct 28, 2013 at 12:20 PM, Dietmar Maurer <dietmar at proxmox.com>wrote:
>
>> > Of course, we can use "vzctl mount", but then function set_rootpasswd
>> must be
>> > rewrited to use "vzctl mount" for simfs too.
>>
>> I guess that is the correct way to implement it.
>>
>>
>>
>
>
> --
> С уважением, Шестаков Игорь
> Сеть дата-центров "Селектел"
>



-- 
С уважением, Шестаков Игорь
Сеть дата-центров "Селектел"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.proxmox.com/pipermail/pve-devel/attachments/20131106/babb1d44/attachment.htm>


More information about the pve-devel mailing list