Правка прав для файлов шаблонов
master 3.7.3.14
root 1 year ago
parent d1284f1e8a
commit 562356200e

@ -4012,7 +4012,8 @@ class Template(_file, _terms, _warning, xmlShare, _shareTemplate):
self._baseDir = pathJoin(self.objVar.Get("cl_chroot_path"),
self.objVar.Get("cl_root_path"))
self._baseDir = os.path.normpath(self._baseDir)
self.uid, self.gid, self.homeDir = self.getDataUser()
self.base_uid, self.base_gid, self.homeDir = self.getDataUser()
self.prevDir = None
# Домашняя директория, плюс базовая директория
self.homeDir = pathJoin(self._baseDir, self.homeDir)
if self.cltObj:
@ -4847,6 +4848,12 @@ gettext -d cl_template "$*"
scanDir)
return False
for fileOrDir in sorted(listDirectory(scanDir)):
if self.prevDir and self.prevDir != scanDir:
self.prevDir = scanDir
self.uid, self.gid = self.base_uid, self.base_gid
elif self.prevDir is None:
self.prevDir = scanDir
self.uid, self.gid = self.base_uid, self.base_gid
absPath = os.path.join(scanDir, fileOrDir)
if skipTemplates and absPath in skipTemplates:
continue
@ -5162,7 +5169,7 @@ gettext -d cl_template "$*"
if realPath in self.dirsFilter:
return "", False, []
# Создаем директорию если необходимо
crDirs = self.createDir(applyDir, False, self.uid, self.gid)
crDirs = self.createDir(applyDir, False, self.base_uid, self.base_gid)
if not crDirs:
return "", False, []
if HParams.OptDir.Autoupdate in optDir:
@ -5310,7 +5317,7 @@ gettext -d cl_template "$*"
mode = self.__octToInt(objHead.params[HParams.ChangeMode])
if mode:
if not os.path.exists(applyDir):
crDirs = self.createDir(applyDir, mode, self.uid, self.gid)
crDirs = self.createDir(applyDir, mode, self.base_uid, self.base_gid)
if not crDirs:
return "", False, []
if not crDirs is True:
@ -5390,15 +5397,15 @@ gettext -d cl_template "$*"
self.functObj.currentBelong,
self.functObj.currentBelongSlot)
tUid, tGid = getModeFile(applyDir, mode="owner")
if (self.uid, self.gid) != (tUid, tGid):
if not self.chownConfDir(applyDir, self.uid, self.gid,
if (self.base_uid, self.base_gid) != (tUid, tGid):
if not self.chownConfDir(applyDir, self.base_uid, self.base_gid,
templateDirFile):
return "", False, []
else:
self.changedFiles.addObj(applyDir, ChangedFiles.DIR_CREATED,
self.functObj.currentBelong,
self.functObj.currentBelongSlot)
crDirs = self.createDir(applyDir, False, self.uid, self.gid)
crDirs = self.createDir(applyDir, False, self.base_uid, self.base_gid)
if not crDirs:
return "", False, []
if crDirs is not True:
@ -5925,6 +5932,8 @@ gettext -d cl_template "$*"
+ nameFileTemplate)
preReturn(pathProg)
return [], False
# Запоминаем владельца
self.uid, self.gid = uid, gid
# Изменяем владельца файла
if not self.chownConfFile(pathOldFile, uid, gid,
nameFileTemplate):
@ -5956,7 +5965,7 @@ gettext -d cl_template "$*"
if (self.uid, self.gid) != (tUid, tGid):
# Изменяем владельца файла
if not self.chownConfFile(
pathOldFile, tUid, tGid, nameFileTemplate,
pathOldFile, self.uid, self.gid, nameFileTemplate,
checkExists=False):
preReturn(pathProg)
return [], False

@ -58,7 +58,7 @@ class Passwd():
:param user2:
:return:
"""
if user1.name == user2.name or user1.uid == user2.uid:
if user1.name == user2.name or user1.base_uid == user2.base_uid:
return True
return False
@ -98,19 +98,19 @@ class Passwd():
uid_map = {}
for user in self.users:
for user2 in passwd.users:
if user.name == user2.name and user.uid != user2.uid:
if user.name == user2.name and user.uid != user2.base_uid:
try:
uid_map[int(user.uid)] = int(user2.uid)
uid_map[int(user.uid)] = int(user2.base_uid)
except ValueError:
raise AccountsError(
_("Wrong UIDs {uid1} {uid2}").format(
uid1=user.uid, uid2=user2.uid))
uid1=user.uid, uid2=user2.base_uid))
return uid_map
def format_user(self, user):
return "{0}:{1}:{2}:{3}:{4}:{5}:{6}".format(
user.name, user.password, user.uid,
user.gid, user.gecos, user.homedir, user.shell)
user.name, user.password, user.base_uid,
user.base_gid, user.gecos, user.homedir, user.shell)
def write(self, f):
for user in self.users:
@ -144,7 +144,7 @@ class Group():
:param group2:
:return:
"""
if group1.name == group2.name or group1.gid == group2.gid:
if group1.name == group2.name or group1.base_gid == group2.base_gid:
return True
return False
@ -196,18 +196,18 @@ class Group():
gid_map = {}
for group in self.groups:
for group2 in groupobj.groups:
if group.name == group2.name and group.gid != group2.gid:
if group.name == group2.name and group.gid != group2.base_gid:
try:
gid_map[int(group.gid)] = int(group2.gid)
gid_map[int(group.gid)] = int(group2.base_gid)
except ValueError:
raise AccountsError(
_("Wrong GIDs {gid1} {gid2}").format(
gid1=group.gid, gid2=group2.gid))
gid1=group.gid, gid2=group2.base_gid))
return gid_map
def format_group(self, group):
return "{0}:{1}:{2}:{3}".format(
group.name, group.password, group.gid, group.user_list)
group.name, group.password, group.base_gid, group.user_list)
def write(self, f):
for group in self.groups:

Loading…
Cancel
Save