diff --git a/calculate/lib/utils/common.py b/calculate/lib/utils/common.py index 1799713..53e07ad 100644 --- a/calculate/lib/utils/common.py +++ b/calculate/lib/utils/common.py @@ -471,3 +471,13 @@ def mountEcryptfs(userName,userPwd,userDir): # отправить пароль через stdin mountProcess.write("passphrase_passwd="+userPwd) return mountProcess.success() + +def isBootstrapDataOnly(directory): + """ + Каталог содержит только сертификат, созданный командой cl-core + """ + from calculate.lib.utils.files import (process,readLinesFile,STDOUT, + isMount) + userCalculate = path.join(directory,".calculate") + return (set(listDirectory(directory)) == set([".calculate"]) and + set(listDirectory(userCalculate)) == set(["client_cert"])) diff --git a/calculate/lib/variables/user.py b/calculate/lib/variables/user.py index e8e378f..7b3596a 100644 --- a/calculate/lib/variables/user.py +++ b/calculate/lib/variables/user.py @@ -21,7 +21,7 @@ import grp from os import environ,path from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable from calculate.lib.cl_vars_share import varsShare -from calculate.lib.utils.common import getPasswdUsers +from calculate.lib.utils.common import getPasswdUsers,isBootstrapDataOnly from calculate.lib.utils.files import listDirectory import sys from calculate.lib.cl_lang import setLocalTranslate @@ -229,7 +229,8 @@ class VariableUrHomeCryptSet(ReadonlyVariable): # если пользовательского профиля нет, то шифровать ли профиль # узнаем на уровне системы homeDir = self.Get('ur_home_path') - if not path.exists(homeDir) or not listDirectory(homeDir): + if (not path.exists(homeDir) or not listDirectory(homeDir) or + isBootstrapDataOnly(homeDir)): return self.Get('cl_home_crypt_set') # профиль не шифрованный return "off"