%PDF- %PDF-
Direktori : /proc/self/root/usr/lib/python2.7/site-packages/salt/states/ |
Current File : //proc/self/root/usr/lib/python2.7/site-packages/salt/states/pdbedit.py |
# -*- coding: utf-8 -*- ''' Manage accounts in Samba's passdb using pdbedit :maintainer: Jorge Schrauwen <sjorge@blackdot.be> :maturity: new :depends: pdbedit :platform: posix .. versionadded:: 2017.7.0 .. code-block:: yaml wash: pdbedit.absent kaylee: pdbedit.managed: - password: A70C708517B5DD0EDB67714FE25336EB - password_hashed: True - drive: 'X:' - homedir: '\\\\serenity\\mechanic\\profile' ''' from __future__ import absolute_import, print_function, unicode_literals # Import Python libs import logging # Import Salt libs import salt.utils.data log = logging.getLogger(__name__) # Define the state's virtual name __virtualname__ = 'pdbedit' def __virtual__(): ''' Provides pdbedit when available ''' if 'pdbedit.create' in __salt__: return True else: return ( False, '{0} state module can only be loaded when the pdbedit module is available'.format( __virtualname__ ) ) def absent(name): ''' Ensure user account is absent name : string username ''' ret = {'name': name, 'changes': {}, 'result': True, 'comment': ''} # remove if needed if name in __salt__['pdbedit.list'](False): res = __salt__['pdbedit.delete'](name) if res[name] in ['deleted']: # check if we need to update changes ret['changes'].update(res) elif res[name] not in ['absent']: # oops something went wrong ret['result'] = False else: ret['comment'] = 'account {login} is absent'.format(login=name) return ret def managed(name, **kwargs): ''' Manage user account login : string login name password : string password password_hashed : boolean set if password is a nt hash instead of plain text domain : string users domain profile : string profile path script : string logon script drive : string home drive homedir : string home directory fullname : string full name account_desc : string account description machine_sid : string specify the machines new primary group SID or rid user_sid : string specify the users new primary group SID or rid account_control : string specify user account control properties .. note:: Only the following can be set: - N: No password required - D: Account disabled - H: Home directory required - L: Automatic Locking - X: Password does not expire reset_login_hours : boolean reset the users allowed logon hours reset_bad_password_count : boolean reset the stored bad login counter ''' ret = {'name': name, 'changes': {}, 'result': True, 'comment': ''} # save state saved = __salt__['pdbedit.list'](hashes=True) saved = saved[name] if name in saved else {} # call pdbedit.modify kwargs['login'] = name res = __salt__['pdbedit.modify'](**kwargs) # calculate changes if res[name] in ['created']: ret['changes'] = res elif res[name] in ['updated']: ret['changes'][name] = salt.utils.data.compare_dicts( saved, __salt__['pdbedit.list'](hashes=True)[name], ) elif res[name] not in ['unchanged']: ret['result'] = False ret['comment'] = res[name] return ret def present(name, **kwargs): ''' Alias for pdbedit.managed ''' return managed(name, **kwargs) # vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4