- use first free uid in range for system user accounts
- new function for getting the first free uid in a range in getenttools git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/gnuviech.info/gnuviechadmin/trunk@237 a67ec6bc-e5d5-0310-a910-815c51eb3124
This commit is contained in:
		
							parent
							
								
									d5ace903bf
								
							
						
					
					
						commit
						aaa23c9c5f
					
				
					 2 changed files with 14 additions and 5 deletions
				
			
		|  | @ -74,11 +74,8 @@ class SysuserEntity(BackendEntity): | |||
|         return config.get('sysuser', 'shellno') | ||||
| 
 | ||||
|     def _get_next_sysuid(self): | ||||
|         uid = int(config.get('sysuser', 'minuid')) | ||||
|         muid = getenttools.get_max_uid(int(config.get('sysuser', 'maxuid'))) | ||||
|         if muid >= uid: | ||||
|             uid = muid + 1 | ||||
|         return uid | ||||
|         return getenttools.get_next_uid(int(config.get('sysuser', 'minuid')), | ||||
| 	                                int(config.get('sysuser', 'maxuid'))) | ||||
| 
 | ||||
|     def _populate_home(self): | ||||
|         templatedir = get_template_dir(config.get('sysuser', 'hometemplate')) | ||||
|  |  | |||
|  | @ -77,6 +77,16 @@ def get_group_by_id(gid): | |||
|         return groups[0] | ||||
|     return None | ||||
| 
 | ||||
| def get_next_uid(lowerboundary = 10000, upperboundary = 65536): | ||||
|     """Gets the first available user id in the range between lowerboundary and | ||||
|     upper boundary.""" | ||||
|     for uid in range(lowerboundary, upperboundary): | ||||
|       try: | ||||
|         user = pwd.getpwuid(uid) | ||||
|       except KeyError: | ||||
|         return uid | ||||
|     raise Exception("no free uid found in range %d to %d", lowerboundary, upperboundary) | ||||
| 
 | ||||
| def get_max_uid(boundary = 65536): | ||||
|     """Gets the highest uid value.""" | ||||
|     return max([user.uid for user in parse_users() if user.uid <= boundary]) | ||||
|  | @ -91,3 +101,5 @@ if __name__ == "__main__": | |||
|     print "Max GID is %d" % (get_max_gid(40000)) | ||||
|     print "User with max UID is %s" % (get_user_by_id(get_max_uid(40000))) | ||||
|     print "Group with max GID is %s" % (get_group_by_id(get_max_gid(40000))) | ||||
|     print "First free UID is %s" % (get_next_uid(10000, 40000)) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue