Get the UID_MIN value from /etc/login.defs and use it to determine proper user id number, instead of hardcoded 500. Use 500 if the /etc/login.defs parsing fails. --- modules/create_user.py | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/modules/create_user.py b/modules/create_user.py index a5e1f78..7e87dd6 100644 --- a/modules/create_user.py +++ b/modules/create_user.py @@ -23,6 +23,7 @@ import os, string, sys, time import os.path import pwd import unicodedata +import re from firstboot.config import * from firstboot.constants import * @@ -134,7 +135,32 @@ class moduleClass(Module): user = self.admin.lookupUserByName(username) - if user != None and user.get(libuser.UIDNUMBER)[0] < 500: + # get UID_MIN from /etc/login.defs + __ld_line = re.compile(r'^[ \t]*' # Initial whitespace + r'([^ \t]+)' # Variable name + r'[ \t][ \t"]*' # Separator - yes, may have multiple "s + r'(([^"]*)".*' # Value, case 1 - terminated by " + r'|([^"]*\S)?\s*' # Value, case 2 - only drop trailing \s + r')$') + + res = {} + with open('/etc/login.defs') as f: + for line in f: + match = __ld_line.match(line) + if match is not None: + name = match.group(1) + if name.startswith('#'): + continue + value = match.group(3) + if value is None: + value = match.group(4) + if value is None: + value = '' + res[name] = value # Override previous definition + + uid_min = res.get('UID_MIN', 500) + + if user != None and user.get(libuser.UIDNUMBER)[0] < uid_min: self._showErrorMessage(_("The username '%s' is a reserved system " "account. Please specify another username." % username)) -- 1.7.3.2 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list