File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/user.cpython-310.pyc
o
�N�gZ/ � @ sb d Z ddlZddlZddlZddlZddlZddlZddlZddl Zddl
mZ ddlm
Z
zddlZdZW n eyA dZY nw zddlZdZW n eyU dZY nw zddlZdZW n eyi dZY nw e�e�Zdd� Ze
d �d!d
d ��Zdd� Zd
d� Zdd� Zd!dd�Zd!dd�Zdd� Zd"dd�Z d#dd�Z!d"dd�Z"d!dd�Z#d!dd �Z$dS )$zY
Functions for querying and modifying a user account and the groups to which it
belongs.
� N)�CommandExecutionError)�jinja_filterTFc C sH t rt�t�� �j} ntrtjj j
rtjj �� } ntd��tjj
�| �S )z
Get the current user
z9Required external library (pwd or win32api) not installed)�HAS_PWD�pwd�getpwuid�os�geteuid�pw_name�HAS_WIN_FUNCTIONS�salt�utilsZ
win_functionsZ HAS_WIN32Zget_current_userr �stringutils�
to_unicode)�ret� r �C/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/user.py�get_user+ s �r �get_uidc C �T t sdS | du rzt�� W S ty Y dS w zt�| �jW S ty) Y dS w )z�
Get the uid for a given user name. If no user given, the current euid will
be returned. If the user does not exist, None will be returned. On systems
which do not support pwd or os.geteuid, None will be returned.
N)r r r �AttributeErrorr �getpwnam�pw_uid�KeyError��userr r r r : s
��c C s� G dd� dt j�}|� }d|_d}d}t �� }t jj�t �|�d||ddddddt �|��dkr4td��z$t j �
� }t jj�| |t �|��dkrLtd ��|jdkW t jj�
|� S t jj�
|� w )
z�
Using the win32 api, determine if the user with token 'user_token' has
administrator rights.
See MSDN entry here:
http://msdn.microsoft.com/en-us/library/aa376389(VS.85).aspx
c @ s@ e Zd ZdejfdejfdejfdejfdejfdejfgZdS )z:_win_user_token_is_admin.<locals>.SID_IDENTIFIER_AUTHORITYZbyte0Zbyte1Zbyte2Zbyte3Zbyte4�byte5N)�__name__�
__module__�__qualname__�ctypes�c_byte�_fields_r r r r �SID_IDENTIFIER_AUTHORITYX s �r"