HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/pdbedit.cpython-310.pyc
o

�N�g+�@s�dZddlZddlZddlZddlZddlZddlZddlZe�	e
�ZdZddd�Z
dd�Zd	d
�Zdd
d�Zddd�Zdd�Zddd�Z														ddd�ZdS)z�
Manage accounts in Samba's passdb using pdbedit

:maintainer:    Jorge Schrauwen <sjorge@blackdot.be>
:maturity:      new
:platform:      posix

.. versionadded:: 2017.7.0
�N�pdbedit�list�get)�
list_users�get_usercCs�tjj�d�s	dStjj�d�}t�d�}|�	|�}|sdSt
|�d��dkr0t
|�d��d	ks2d
Szt�
dd�d
��WtStyHYdSw)z'
    Provides pdbedit if available
    r)Fz pdbedit command is not availablez
pdbedit -Vz ^Version\s(\d+)\.(\d+)\.(\d+).*$)Fz-pdbedit -V returned an unknown version format����)Fz-pdbedit is to old, 4.5.0 or newer is required�md4��utf-16le)FzHash type md4 unsupported)�salt�utils�path�which�modulesZcmdmod�run�re�compile�match�int�group�hashlib�new�encode�
ValueError�__virtualname__)�verZ	ver_regexZ	ver_match�r�H/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/pdbedit.py�__virtual__ s

$��r!cCs t�t�d|�d�������S)z}
    Generate a NT HASH

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.generate_nt_hash my_passwd
    rr
)�binascii�hexlifyrrr�digest�upper��passwordrrr �generate_nt_hash9s

��r(TFcCsn|ring}|rztddj|rdndd��}|ddkr0t�d|vr)|d�|S|d	�|St�d
|d	�D]?}i}d}|��D],}|��sIqB|�d�\}}	}
|���	�}|
��}
|	sh|||��7<qB|}|
||<qB|rw|||d
<q8|Stdd�}|ddkr�dd|vr�|diS|d	iS|d	��D]}d|vr�q�|�d�}t
|�dkr�|�|d�q�|S)z�
    List user accounts

    verbose : boolean
        return all information
    hashes : boolean
        include NT HASH and LM HASH in verbose output

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.list
    �cmd.run_allz!pdbedit --list --verbose {hashes}z--smbpasswd-styler��hashes�retcoder�stderr�stdoutz
-+|-+
N�:z
unix usernamezpdbedit --list�Error�)�__salt__�format�log�errorr�split�
splitlines�strip�	partition�lower�len�append)�verboser+�users�resZbatchZ	user_dataZ
last_label�lineZlabel�sep�data�userrrr rHsP
��
�
��
�rcCs td|d�}||vr||SiS)z�
    Get user account details

    login : string
        login name
    hashes : boolean
        include NTHASH and LMHASH in verbose output

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.get kaylee
    T)r=r+)r)�loginr+r>rrr r�srcCs^|td�vr+tddt�|����}|ddkr'|d|vr"|diS|diS|diS|d	iS)
z�
    Delete user account

    login : string
        login name

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.delete wash
    Fr)zpdbedit --delete r,rr-r.Zdeleted�absent)rr2�shlex�quote)rDr?rrr �delete�s
�rHcCsd}|r|��}d}nt|��d�}|td�vrGtddjt�|�|r%dndd�d	j|d
�d�}|dd
krE|d|vr@|diS|diSd}t|d�}|d|kr~tddjt�|�t�|�d��}|dd
krx|d|vrs|diS|diS|dkr~d}||iS)a�
    Create user account

    login : string
        login name
    password : string
        password
    password_hashed : boolean
        set if password is a nt hash instead of plain text
    machine_account : boolean
        set to create a machine trust account instead

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.create zoe 9764951149F84E770889011E1DC4A927 nthash
        salt '*' pdbedit.create river  1sw4ll0w3d4bug
    �	unchangedr�asciiFr)z,pdbedit --create --user {login} -t {machine}z	--machine)rD�machinez{password}
{password}
r&)�cmd�stdinr,rr-r.�createdTznt hashz6pdbedit --modify --user {login} --set-nt-hash={nthash})rDZnthash�updated)	r%r(�decoderr2r3rFrGr)rDr'�password_hashedZmachine_account�retZ
password_hashr?rCrrr �create�s8
�
�
��rScCs(d}dddddddd	d
dd�
}|||	|||||
||d�
}|r/t|||�|}|d
vr.||iSn
|td�vr9|diSt|dd�}i}|��D]j\}}|dvre|durd||vrd||�t|��sdt|�||<qE|dvr�|dur�|�d�rx|dd�}g}|��D]}|dvr�t�	d|�q~|�
|�q~djd�|�d�||<qE|dur�||vr�|||kr�|||<qEt
|�dks�|
s�|�rg}|D]}|�
dj||t�||�d��q�|
r�|�
d �|r�|�
d!�td"d#jt�|�d$�|�d%��}|d&dk�r	|d'|v�r|d'iS|d(iS|d)k�rd*}||iS)+a�
    Modify 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

    .. note::
        if user is absent and password is provided, the user will be created

    CLI Example:

    .. code-block:: bash

        salt '*' pdbedit.modify inara fullname='Inara Serra'
        salt '*' pdbedit.modify simon password=r1v3r
        salt '*' pdbedit.modify jane drive='V:' homedir='\\serenity\jane\profile'
        salt '*' pdbedit.modify mal account_control=NX
    rIz	--domain=z--fullname=z--account-desc=z
--homedir=z--drive=z
--profile=z	--script=z--account-control=z-U z-M )
�domainz	full namezaccount desczhome directoryz
homedir drivezprofile pathzlogon script�
account flags�user sid�machine sid)rOrNrIFrETr*)rVrWN)rU�[r���)�N�D�H�L�Xz=pdbedit.modify - unknown %s flag for account_control, ignoredz	[{flags}]r)�flagsrz
{flag}{value})�flag�valuez--logon-hours-resetz--bad-password-count-resetr)z)pdbedit --modify --user {login} {changes}� )rD�changesr,r-r.rNrO)rSrr�items�endswith�str�
startswithr%r4�warningr<r3�joinr;rFrGr2)rDr'rQrTZprofileZscript�drive�homedir�fullnameZaccount_descZaccount_controlZmachine_sidZuser_sidZreset_login_hoursZreset_bad_password_countrRr_Zprovided�currentrc�key�valr�fZcmdsZchanger?rrr �modify�s�G�����
�����

�� 
rq)TF)F)FF)NFNNNNNNNNNNFF)�__doc__r"r�loggingrrFZsalt.modules.cmdmodrZsalt.utils.path�	getLogger�__name__r4rZ__func_alias__r!r(rrrHrSrqrrrr �<module>sD

�

>
A�