|
|
|
@ -221,11 +221,14 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
# DN сервисов относительно базового
|
|
|
|
|
self.ServicesDN = "ou=Services"
|
|
|
|
|
|
|
|
|
|
self.relGrDN = 'ou=Groups'
|
|
|
|
|
self.relUsDN = 'ou=Users'
|
|
|
|
|
self.relServDN = 'ou=Unix'
|
|
|
|
|
self.relDN = self.addDN(self.relServDN,self.ServicesDN)
|
|
|
|
|
# DN пользователей, относительно базового DN
|
|
|
|
|
self.relUsersDN = self.addDN(self.relUsDN, self.relDN)
|
|
|
|
|
# DN групп, относительно базового DN
|
|
|
|
|
self.relGroupsDN = self.addDN(self.relGrDN, self.relDN)
|
|
|
|
|
# Объект хранения переменных
|
|
|
|
|
self.clVars = False
|
|
|
|
|
|
|
|
|
@ -266,6 +269,13 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
resSearch = self.searchLdapDN(userName, self.relUsersDN, "uid")
|
|
|
|
|
return resSearch
|
|
|
|
|
|
|
|
|
|
def searchUnixGid(self, groupId):
|
|
|
|
|
"""Находит группу сервиса Unix по ёе id"""
|
|
|
|
|
resSearch = self.searchLdapDN(str(groupId), self.relGroupsDN,
|
|
|
|
|
"gidNumber")
|
|
|
|
|
return resSearch
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getLdapObjBind(self, host, printError=True):
|
|
|
|
|
"""Получаем объект ldapFunction
|
|
|
|
|
|
|
|
|
@ -314,6 +324,12 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
filePasswd = "/etc/passwd"
|
|
|
|
|
return self.searchLineInFile(userName, filePasswd)
|
|
|
|
|
|
|
|
|
|
def searchGroupGid(self, groupId):
|
|
|
|
|
"""Ищет gid в /etc/group"""
|
|
|
|
|
gid = str(groupId)
|
|
|
|
|
fileGroup = "/etc/group"
|
|
|
|
|
return self.searchLineInFile(gid, fileGroup, 2)
|
|
|
|
|
|
|
|
|
|
def getUserLdapInfo(self, userName, printError=True):
|
|
|
|
|
"""Выдаем uid и gid пользователя"""
|
|
|
|
|
searchUser = self.searchUnixUser(userName)
|
|
|
|
@ -330,6 +346,9 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
uid = searchUser[0][0][1]['uidNumber'][0]
|
|
|
|
|
if searchUser[0][0][1].has_key('gidNumber'):
|
|
|
|
|
gid = searchUser[0][0][1]['gidNumber'][0]
|
|
|
|
|
searchGroup = self.searchUnixGid(gid)
|
|
|
|
|
if searchGroup and searchGroup[0][0][1].has_key('cn'):
|
|
|
|
|
group = searchGroup[0][0][1]['cn'][0]
|
|
|
|
|
if searchUser[0][0][1].has_key('cn'):
|
|
|
|
|
fullName = searchUser[0][0][1]['cn'][0]
|
|
|
|
|
if searchUser[0][0][1].has_key('mail'):
|
|
|
|
@ -337,7 +356,7 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
if searchUser[0][0][1].has_key('homeDirectory'):
|
|
|
|
|
home = searchUser[0][0][1]['homeDirectory'][0]
|
|
|
|
|
if uid and gid:
|
|
|
|
|
return (uid,gid,fullName,mail,home)
|
|
|
|
|
return (uid, gid, fullName, mail, home, group)
|
|
|
|
|
else:
|
|
|
|
|
return ()
|
|
|
|
|
|
|
|
|
@ -441,9 +460,14 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
if resPasswd:
|
|
|
|
|
uid = resPasswd.split(":")[2]
|
|
|
|
|
gid = resPasswd.split(":")[3]
|
|
|
|
|
full_name = resPasswd.split(":")[4]
|
|
|
|
|
fullName = resPasswd.split(":")[4]
|
|
|
|
|
mail = ""
|
|
|
|
|
return (uid, gid, full_name,mail)
|
|
|
|
|
group = ""
|
|
|
|
|
home = os.path.join("/home",userName)
|
|
|
|
|
resGroup = self.searchGroupGid(gid)
|
|
|
|
|
if resGroup:
|
|
|
|
|
group = resGroup.split(":")[0]
|
|
|
|
|
return (uid, gid, fullName, mail, home, group)
|
|
|
|
|
else:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
@ -481,8 +505,9 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
gid = int(uidGid[1])
|
|
|
|
|
fullName = uidGid[2]
|
|
|
|
|
mail = uidGid[3]
|
|
|
|
|
homeDir = uidGid[4]
|
|
|
|
|
group = uidGid[5]
|
|
|
|
|
# Создаем пользовательскую директорию
|
|
|
|
|
homeDir = os.path.join("/home",userName)
|
|
|
|
|
self.clVars.Set('cl_root_path',homeDir,True)
|
|
|
|
|
homeExists = os.path.exists(homeDir)
|
|
|
|
|
|
|
|
|
@ -501,10 +526,11 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
|
|
|
|
|
if not os.path.exists(homeDir):
|
|
|
|
|
self.createUserDir(uid, gid, homeDir)
|
|
|
|
|
# Записываем переменную логин
|
|
|
|
|
# Записываем переменные
|
|
|
|
|
self.clVars.Set('ur_login',userName)
|
|
|
|
|
self.clVars.Set('ur_fullname',fullName)
|
|
|
|
|
self.clVars.Set('ur_mail',mail)
|
|
|
|
|
self.clVars.Set('ur_group',group)
|
|
|
|
|
# Применяем профили для пользователя
|
|
|
|
|
dirsAndFiles = self.applyProfilesFromUser()
|
|
|
|
|
if not dirsAndFiles:
|
|
|
|
|