[elbe-devel] [PATCH v1 1/1] docs: Describe the password handling in XMLs

Bastian Germann bage at linutronix.de
Wed Jul 6 10:57:20 CEST 2022


Am 05.07.22 um 11:06 schrieb Holger Dengler:
> Describe the usage of plain-text and hashed passwords for root and other
> users in Elbe XMLs, the generation of hashed passwords and how to
> include them into the XMLs.
> 
> Signed-off-by: Holger Dengler <holger at hdengler.de>
> ---
>   docs/elbeoverview-en.txt | 65 +++++++++++++++++++++++++++++++++++++++-
>   docs/quickstart.txt      | 21 +++++++++++++
>   2 files changed, 85 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/elbeoverview-en.txt b/docs/elbeoverview-en.txt
> index 6560d8b96..58fa9a97f 100644
> --- a/docs/elbeoverview-en.txt
> +++ b/docs/elbeoverview-en.txt
> @@ -232,6 +232,68 @@ If an initvm has not been created yet, use:
>   elbe initvm create --directory ~/elbe-initvm example.xml
>   -----------------------------------------------------
>   
> +Passwords in XML
> +~~~~~~~~~~~~~~~~
> +
> +Using plain-text passwords in XML has advantages and disadvantages. The main
> +advantage is the documentation of the login credentials for the generated
> +systems. But storing plain-text passwords on a system is a significant
> +weakening of system security. For that reason, all XML files, which are
> +generated by Elbe during the build process (`/etc/elbe_base.xml` and
> +`source.xml`) contain only hashed passwords.
> +
> +If a plain-text password  for root or a user is specified in the input XML,

two spaces.

> +it is converted into a hashed password during the XML preprocessing. The
> +preprocessed XML only contains the hashed password, the plain-text password
> +will be removed. The XML preprocessing only supports the hashing method
> +`sha512crypt` at the moment, which is the default in all supported Debian
> +releases.

bullseye is supported and has yescrypt as a default.
Please replace all with "most".

> +
> +Hashed passwords can be used right from the start and directly placed into
> +the input XML. A plain-text password can be hashed with the tool `mkpasswd`
> +or with various hashing libraries like crypt (C/C++) or passlib (Python).
> +If the hashed passwords are generated manually, all hashing methods can be
> +used, which are supported by the PAM configuration on the target system. If
> +unsure, `sha512crypt` should be used.
> +
> +The following example uses the tool `mkpasswd` to hash the password. The
> +tool will ask for a plain-text password (in this example "foo").
> +
> +------------------------------------------------------------------------------
> +mkpasswd --method=sha512crypt --rounds=656000
> +Password:
> +$6$rounds=656000$b.Wh.guGMquBcUeA$T7zTO/icEQarZ8mOvhjok4eR2X3ERazvMW2b07n52w.C.BERGYgOyKT0wZehikY97ISAP41ihPk9C0EVxp3n70
> +------------------------------------------------------------------------------
> +
> +The generated line contains the hashing parameters and the hashed password
> +and has to be copied completely to the XML, either as `passwd_hashed` node
> +for the root password or as `passwd_hased` attribute for other users in

typo: passwd_hashed

> +`adduser` nodes.
> +
> +[source,xml]
> +------------------------------------------------------------------------------
> +<target>
> +	<!-- hashed password for root -->
> +	<passwd_hashed>$6$rounds=656000$b.Wh.guGMquBcUeA$T7zTO/icEQarZ8mOvhjok4eR2X3ERazvMW2b07n52w.C.BERGYgOyKT0wZehikY97ISAP41ihPk9C0EVxp3n70</passwd_hashed>
> +</target>
> +------------------------------------------------------------------------------
> +
> +[source,xml]
> +------------------------------------------------------------------------------
> +<finetuning>
> +	<!-- hashed password for user elbe -->
> +	<adduser passwd_hashed="$6$rounds=656000$b.Wh.guGMquBcUeA$T7zTO/icEQarZ8mOvhjok4eR2X3ERazvMW2b07n52w.C.BERGYgOyKT0wZehikY97ISAP41ihPk9C0EVxp3n70" shell="/bin/bash">elbe</adduser>
> +</finetuning>
> +------------------------------------------------------------------------------
> +
> +.Note
> +**********************************************************
> +If the XML contains an action `login`, the password for
> +the root login must be given in plain-text. This
> +plain-text password will not be removed by the
> +preprocessing and will stay also in the generated XML
> +files `/etc/elbe_base.xml` and `source.xml`.
> +**********************************************************
>   
>   Changing the subset that is extracted as the root filesystem
>   ------------------------------------------------------------
> @@ -685,7 +747,8 @@ source~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   
>   <2> and domainname
>   
> -<3> This is the root password of the machine.
> +<3> This is the plain-text root password of the machine. It will be
> +    converted into a hashed password by the XML preprocessing.
>   
>   <4> This describes, that the resulting rootfilesystem, shall be generated as
>       'nfsroot.tar.gz'
> diff --git a/docs/quickstart.txt b/docs/quickstart.txt
> index 0a15b2b34..4ef0bacff 100644
> --- a/docs/quickstart.txt
> +++ b/docs/quickstart.txt
> @@ -256,6 +256,27 @@ It is also possible to specify groups the new user should be part of:
>   <adduser passwd="foo" shell="/bin/bash" groups="audio,video,dialout">elbe</adduser>
>   ------------------------------------------------------------------------------
>   
> +Instead of specifying a plain-text password, it is also possible to use
> +hashed passwords in the XML. Hashed passwords can be either converted by the
> +Elbe preprocessing (`elbe preprocess <xml>`), with the tool `mkpasswd` or
> +with various hashing libraries like crypt (C/C++) or passlib (Python).
> +
> +In this example, the command `mkpasswd` is used to hash the plain-text
> +password `elbe`. If the salt is not specified, `mkpasswd` will use a random
> +salt.
> +
> +------------------------------------------------------------------------------
> +mkpasswd --method=sha512crypt --rounds=656000 --salt=7vWuOPVX0YKaISh5 "elbe"
> +------------------------------------------------------------------------------
> +
> +The generated line contains the hashing parameters and the hashed password
> +and has to be copied completely to the `passwd_hashed` attribute in the XML.
> +
> +[source,xml]
> +------------------------------------------------------------------------------
> +<adduser passwd_hashed="$6$rounds=656000$7vWuOPVX0YKaISh5$cJhevq/z7kJ215n18dnksv/zOeUf6uPoLgICwLeTSu/2xoLHkyYQABaM7a99sQmpilCV.SlK9jfHZz3m7/s2a." shell="/bin/bash">elbe</adduser>
> +------------------------------------------------------------------------------
> +
>   Changing ownership of directories or files
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   There is currently no special finetuning node for `chmod` and `chown`.

With the three suggested changes:
Reviewed-by: Bastian Germann <bage at linutronix.de>


More information about the elbe-devel mailing list