X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-useradd;h=fcda26f055120a3ec93e97dd172cc6ea8c26bdf7;hp=099ff89ac0488ab2b8857bbf22879e1d7446097e;hb=HEAD;hpb=d47103998dc451c5d18b48720a5b8d0f0bf2f581 diff --git a/ud-useradd b/ud-useradd index 099ff89..fcda26f 100755 --- a/ud-useradd +++ b/ud-useradd @@ -28,6 +28,7 @@ from userdir_ldap import *; from userdir_gpg import *; HavePrivateList = getattr(ConfModule, "haveprivatelist", True) +DefaultGroup = getattr(ConfModule, "defaultgroup", 'users') # This tries to search for a free UID. There are two possible ways to do # this, one is to fetch all the entires and pick the highest, the other @@ -50,7 +51,7 @@ def ShouldIgnoreID(uid): # search through all UIDs. def GetFreeID(l): Attrs = l.search_s(BaseBaseDn,ldap.SCOPE_SUBTREE, - "uidNumber=*",["uidNumber", "gidNumber", "uid"]); + "(|(uidNumber=*)(gidNumber=*))",["uidNumber", "gidNumber", "uid"]); HighestUID = 0; gids = []; uids = []; @@ -86,7 +87,7 @@ for (switch, val) in options: print " -u= Admin user (defaults to current username)" print " -m Force mail (for updates)" print " -a Use old keyrings instead (??)" - print " -n Do not automatically assign UID/GIDs (useful for usergroups or non-default group membership" + print " -n Do not automatically assign UID/GIDs" print " -g Add a guest account" sys.exit(0) elif (switch == '-u'): @@ -209,14 +210,12 @@ if HavePrivateList and not GuestAccount: else: privsub = " " -if not gidNumber: - if not GuestAccount: - gidNumber = DefaultGID - else: - gidNumber = DebianGroups['guest'] (uidNumber, generatedGID) = GetFreeID(l) -UserGroup = 0 +if not gidNumber: + gidNumber = generatedGID + +UserGroup = 1 if NoAutomaticIDs: # UID if not Update: @@ -225,15 +224,20 @@ if NoAutomaticIDs: uidNumber = Res; # GID - Res = raw_input("Group ID Number (default group is %s, new usergroup %s) [%s]" % (DefaultGID, generatedGID, gidNumber)); + Res = raw_input("Group ID Number (new usergroup is %s) [%s]" % (generatedGID, gidNumber)); if Res != "": if Res.isdigit(): gidNumber = int(Res); else: gidNumber = Group2GID(l, Res); - if gidNumber == generatedGID: - UserGroup = 1 + if gidNumber != generatedGID: + UserGroup = 0 + +if GuestAccount: + supplementaryGid = 'guest' +else: + supplementaryGid = DefaultGroup shadowExpire = None hostacl = [] @@ -281,6 +285,7 @@ print "------------"; print "Final information collected:" print " %s <%s@%s>:" % (FullName,account,EmailAppend); print " Assigned UID:",uidNumber," GID:", gidNumber; +print " supplementary group:",supplementaryGid print " Email forwarded to:",emailaddr if HavePrivateList: print " Private Subscription:",privsub; @@ -325,6 +330,7 @@ if Update == 0: ("objectClass", UserObjectClasses), ("uidNumber",str(uidNumber)), ("gidNumber",str(gidNumber)), + ("supplementaryGid",supplementaryGid), ("gecos",FullName+",,,,"), ("loginShell","/bin/bash"), ("keyFingerPrint",Keys[0][1]), @@ -384,7 +390,7 @@ if Update == 1 and ForceMail == 0: # Send the Welcome message print "Sending Welcome Email" -templatepath = TemplatesDir + "/welcome-message-%d" % int(gidNumber) +templatepath = TemplatesDir + "/welcome-message-%s" % supplementaryGid if not os.path.exists(templatepath): templatepath = TemplatesDir + "/welcome-message" Reply = TemplateSubst(Subst,open(templatepath, "r").read())