[elbe-devel] [PATCH v3 6/7] preprocess: migrate root and user passwords

Holger Dengler holger at hdengler.de
Thu Jun 30 22:04:55 CEST 2022


On 30.06.22 10:22, Bastian Germann wrote:
> Am 30.06.22 um 08:00 schrieb Holger Dengler:
>> Support legacy XMLs by adding a preprocessing for plain-text passwords
>> for root and users. The plain-text password elements or attributes will
>> be replaced with their hashed variants.
>>
>> XMLs with only hashed passwords will not be changed by the
>> preprocessing.
>>
>> Signed-off-by: Holger Dengler <holger at hdengler.de>
> 
> Reviewed-by: Bastian Germann <bage at linutronix.de>

Thanks a lot! PR has been sent.

I hope, I can send you the documentation patch this weekend...

> 
>> ---
>>   elbepack/xmlpreprocess.py | 20 ++++++++++++++++++++
>>   1 file changed, 20 insertions(+)
>>
>> diff --git a/elbepack/xmlpreprocess.py b/elbepack/xmlpreprocess.py
>> index f3c2f2a7f..0daa7b497 100644
>> --- a/elbepack/xmlpreprocess.py
>> +++ b/elbepack/xmlpreprocess.py
>> @@ -14,6 +14,7 @@ from optparse import OptionGroup
>>   from itertools import islice
>>   from urllib.error import HTTPError,URLError
>>   from urllib.request import urlopen
>> +from passlib.hash import sha512_crypt
>>     from lxml import etree
>>   from lxml.etree import XMLParser, parse, Element
>> @@ -251,6 +252,23 @@ def preprocess_mirrors(xml):
>>               option.text = opt
>>               options.append(option)
>>   +
>> +def preprocess_passwd(xml):
>> +    """Preprocess plain-text passwords. Plain-text passwords for root and
>> +       adduser will be replaced with their hashed values.
>> +    """
>> +
>> +    # migrate root password
>> +    for passwd in xml.iterfind(".//target/passwd"):
>> +        passwd.tag = "passwd_hashed"
>> +        passwd.text = '%s' % sha512_crypt.hash(passwd.text)
>> +
>> +    # migrate user passwords
>> +    for adduser in xml.iterfind(".//target/finetuning/adduser[@passwd]"):
>> +        passwd = adduser.attrib['passwd']
>> +        adduser.attrib['passwd_hashed'] = sha512_crypt.hash(passwd)
>> +        del adduser.attrib['passwd']
>> +
>>   def xmlpreprocess(fname, output, variants=None, proxy=None):
>>         # pylint: disable=too-many-locals
>> @@ -334,6 +352,8 @@ def xmlpreprocess(fname, output, variants=None, proxy=None):
>>             preprocess_mirrors(xml)
>>   +        preprocess_passwd(xml)
>> +
>>           if schema.validate(xml):
>>               # if validation succedes write xml file
>>               xml.write(

-- 
Gruß,
Holger Dengler
--
holger at hdengler.de


More information about the elbe-devel mailing list