[virt-tools-list] [virt-bootstrap] [PATCH v4 19/26] Make set_root_password_in_rootfs reusable
Cedric Bosdonnat
cbosdonnat at suse.com
Thu Aug 3 16:11:03 UTC 2017
On Thu, 2017-08-03 at 14:13 +0100, Radostin Stoyanov wrote:
> Split set_root_password_in_rootfs() in two functions to make the code
> for setting password hash in the content of shadow file reusable.
> ---
> 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 f83b567..b6c20f3 100644
> --- a/src/virtBootstrap/utils.py
> +++ b/src/virtBootstrap/utils.py
> @@ -432,6 +432,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
> @@ -445,15 +458,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