[virt-tools-list] [virt-bootstrap] [PATCH v6 12/26] Make set_root_password_in_rootfs reusable
Cedric Bosdonnat
cbosdonnat at suse.com
Sat Aug 19 12:43:53 UTC 2017
On Thu, 2017-08-17 at 10:39 +0100, Radostin Stoyanov wrote:
> Make the code for setting password hash in the content of shadow file
> reusable and hence can be used with qcow2 output format.
> ---
> src/virtBootstrap/utils.py | 22 +++++++++++++++-------
> 1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/src/virtBootstrap/utils.py b/src/virtBootstrap/utils.py
> index 7604766..9ee83e4 100644
> --- a/src/virtBootstrap/utils.py
> +++ b/src/virtBootstrap/utils.py
> @@ -363,6 +363,19 @@ def str2float(element):
> return None
>
>
> +def set_password_in_shadow_content(shadow_content, password, user='root'):
> + """
> + Find a user the content of shadow file and set a hash of the password.
> + """
> + for index, line in enumerate(shadow_content):
> + if line.startswith(user):
> + line_split = line.split(':')
> + line_split[1] = passlib.hosts.linux_context.hash(password)
> + shadow_content[index] = ':'.join(line_split)
> + break
> + return shadow_content
> +
> +
> def set_root_password_in_rootfs(rootfs, password):
> """
> Set password on the root user within root filesystem
> @@ -377,15 +390,10 @@ def set_root_password_in_rootfs(rootfs, password):
> with open(shadow_file) as orig_file:
> shadow_content = orig_file.read().split('\n')
>
> - for index, line in enumerate(shadow_content):
> - if line.startswith('root'):
> - line_split = line.split(':')
> - line_split[1] = passlib.hosts.linux_context.hash(password)
> - shadow_content[index] = ':'.join(line_split)
> - break
> + new_content = set_password_in_shadow_content(shadow_content, password)
>
> with open(shadow_file, "w") as new_file:
> - new_file.write('\n'.join(shadow_content))
> + new_file.write('\n'.join(new_content))
>
> except Exception:
> raise
ACK
--
Cedric
More information about the virt-tools-list
mailing list