def __init__(self, sambacreds, username, domain, is_machine): self.cache_path = '/var/cache/gpupdate/creds/krb5cc_{}'.format( os.getpid()) self.__kinit_successful = machine_kinit(self.cache_path) self.storage = registry_factory('registry') self.storage.set_info('domain', domain) machine_name = get_machine_name() machine_sid = get_sid(domain, machine_name, is_machine) self.storage.set_info('machine_name', machine_name) self.storage.set_info('machine_sid', machine_sid) # User SID to work with HKCU hive self.username = username self._is_machine_username = is_machine if is_machine: self.sid = machine_sid else: self.sid = get_sid(self.storage.get_info('domain'), self.username) self.cache = cache_factory('regpol_cache') self.gpo_names = cache_factory('gpo_names') # Samba objects - LoadParm() and CredentialsOptions() self.sambacreds = sambacreds self.cache_dir = self.sambacreds.get_cache_dir() logdata = dict({'cachedir': self.cache_dir}) log('D7', logdata)
def get_sid(domain, username): ''' Lookup SID not only using wbinfo or sssd but also using own cache ''' cached_sids = cache_factory('sid_cache') domain_username = '******'.format(domain, username) sid = 'local-{}'.format(username) sid = cached_sids.get_default(domain_username, sid) try: sid = wbinfo_getsid(domain, username) except: sid = 'local-{}'.format(username) logging.warning( slogm('Error getting SID using wbinfo, will use cached SID: {}'. format(sid))) logging.debug(slogm('Working with SID: {}'.format(sid))) try: cached_sids.store(domain_username, sid) except Exception as exc: pass return sid
def __init__(self, sambacreds, username, domain): self.storage = registry_factory('registry') self.storage.set_info('domain', domain) self.storage.set_info('machine_name', get_machine_name()) self.storage.set_info( 'machine_sid', get_sid(domain, self.storage.get_info('machine_name'))) # User SID to work with HKCU hive self.username = username self._is_machine_username = is_machine_name(self.username) self.sid = get_sid(self.storage.get_info('domain'), self.username) self.cache = cache_factory('regpol_cache') self.gpo_names = cache_factory('gpo_names') # Samba objects - LoadParm() and CredentialsOptions() self.sambacreds = sambacreds self.cache_dir = self.sambacreds.get_cache_dir() logging.debug(slogm('Cache directory is: {}'.format(self.cache_dir)))