[Da-tools-commits] r349 .: Once again add usergroups, this time without changing the default for the GID
Marc 'HE' Brockschmidt
he at debian.org
Tue Dec 25 09:27:55 UTC 2007
------------------------------------------------------------
revno: 349
committer: Marc 'HE' Brockschmidt <he at debian.org>
branch nick: userdir-ldap-common
timestamp: Tue 2007-12-25 10:27:55 +0100
message:
Once again add usergroups, this time without changing the default for the GID
modified:
ud-useradd
-------------- next part --------------
=== modified file 'ud-useradd'
--- a/ud-useradd 2007-12-25 09:25:26 +0000
+++ b/ud-useradd 2007-12-25 09:27:55 +0000
@@ -33,21 +33,31 @@
# search through all UIDs.
def GetFreeID(l, RoleAccount):
Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,
- "uidNumber=*",["uidNumber"]);
+ "uidNumber=*",["uidNumber", "gidNumber"]);
HighestRoleUID = 0;
HighestUID = 0;
+ gids = [];
for I in Attrs:
ID = int(GetAttr(I,"uidNumber","0"));
+ gids.append(int(GetAttr(I, "gidNumber","0")))
if ID < 1000 and ID > HighestRoleUID:
HighestRoleUID = ID;
if ID > HighestUID:
HighestUID = ID;
+ resUID = 0;
#try to get a UID below 1000 for role accounts:
if RoleAccount and HighestRoleUID < 999:
- return HighestRoleUID + 1;
+ resUID = HighestRoleUID + 1;
else:
- return HighestUID + 1;
+ resUID = HighestUID + 1;
+
+ #try to get a fitting GID:
+ resGID = resUID;
+ while resGID in gids:
+ resGID = resGID + 1
+
+ return (resUID, resGID)
# Main starts here
AdminUser = pwd.getpwuid(os.getuid())[0];
@@ -106,7 +116,7 @@
account = Addr[1];
privsub = email;
-gidNumber = str(DefaultGID);
+gidNumber = 0;
uidNumber = 0;
# Decide if we should use IDEA encryption
@@ -174,14 +184,25 @@
if Res != "":
privsub = Res;
+(uidNumber, generatedGID) = GetFreeID(l, RoleAccount)
+UserGroup = 0
+
+# UID
+if not Update:
+ Res = raw_input("User ID Number [%s]? " % (uidNumber));
+ if Res != "":
+ uidNumber = Res;
+
# GID
-Res = raw_input("Group ID Number [" + gidNumber + "]? ");
+if not gidNumber:
+ gidNumber = DefaultGID
+
+Res = raw_input("Group ID Number (default group is %s, new usergroup %s) [%s]" % (DefaultGID, generatedGID, gidNumber));
if Res != "":
- gidNumber = Group2GID(l, Res);
+ gidNumber = Res;
-# UID
-if uidNumber == 0:
- uidNumber = GetFreeID(l, RoleAccount);
+if gidNumber == generatedGID:
+ UserGroup = 1
# Generate a random password
if (not RoleAccount) and (Update == 0 or ForceMail == 1):
@@ -276,6 +297,12 @@
Details.append(("mn",mn));
if privsub != " ":
Details.append(("privateSub",privsub))
+
+ #Add user group if needed, then the actual user:
+ if UserGroup == 1:
+ Dn = "gid=" + account + "," + BaseDn;
+ l.add_s(Dn,[("gid",account), ("gidNumber",str(gidNumber)), ("objectClass",("top", "debianGroup"))]);
+
l.add_s(Dn,Details);
else:
# Modification
More information about the Da-tools-commits
mailing list