????

Your IP : 3.14.141.163


Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/clpwd.cpython-311.opt-1.pyc

�

�j�eJ���ddlmZddlmZddlmZddlZddlZddlZddlmZddl	m
Z
Gd�d	��Zdd�Zed���Z
d
�Zdd�ZdS)�)�absolute_import)�division)�print_functionN)�contextmanager�)�FormattedExceptionc�z�eZdZdZGd�de��Zdd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zdd�ZdS)�ClPwdz/etc/login.defsc���eZdZ�fd�Z�xZS)�ClPwd.NoSuchUserExceptionc�d��ttj|��jdd|id�g|�Ri|��dS)NzNo such user (%(user)s)�user��message�context)�superr
�NoSuchUserException�__init__)�selfr�args�kwargs�	__class__s    ���/builddir/build/BUILDROOT/alt-python27-cllib-3.3.15-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/clpwd.pyrz"ClPwd.NoSuchUserException.__init__sc���;�E�%�+�T�2�2�;�4�"�D�>�=�=�
 ��
 �
 �
 ��
 �
 �
 �
 �
 �)�__name__�
__module__�__qualname__r�
__classcell__)rs@rrrs8�������	 �	 �	 �	 �	 �	 �	 �	 �	 rrNc��i|_i|_i|_i|_|�|�d��|_dS||_dS)N��)�
_user_key_map�_uid_key_map�_user_full_map�
_uid_full_map�get_sys_min_uid�_min_uid)r�min_uids  rrzClPwd.__init__ sK�������� �������?� �0�0��5�5�D�M�M�M�#�D�M�M�Mrc�8�|���|jS�N)�_load_passwd_databaser!�rs r�
get_user_dictzClPwd.get_user_dict*����"�"�$�$�$��!�!rc�8�|���|jSr))r*r"r+s r�get_uid_dictzClPwd.get_uid_dict.s���"�"�$�$�$�� � rc�8�|���|jSr))r*r#r+s r�get_user_full_dictzClPwd.get_user_full_dict2s���"�"�$�$�$��"�"rc�8�|���|jSr))r*r$r+s r�get_uid_full_dictzClPwd.get_uid_full_dict6r-rc��	|���|S#t$rt�|���wxYw)z*
        Return pw_entry for user
        )r1�KeyErrorr
r�rrs  r�get_pw_by_namezClPwd.get_pw_by_name:sM��	2��*�*�,�,�T�2�2���	2�	2�	2��+�+�D�1�1�1�	2����	��%Ac��	|���|S#t$rt�|���wxYw)z7
        Return list of passwd entries for uid
        �r3r5r
r)r�uids  r�
get_pw_by_uidzClPwd.get_pw_by_uidCsM��	1��)�)�+�+�C�0�0���	1�	1�	1��+�+�C�0�0�0�	1���r8c��	|���|jS#t$rt�|���wxYw)z&
        Returns uid for user
        )r1�pw_uidr5r
rr6s  r�get_uidz
ClPwd.get_uidLsP��	2��*�*�,�,�T�2�9�9���	2�	2�	2��+�+�D�1�1�1�	2����	�!�%Ac��	|���|jS#t$rt�|���wxYw)z`
        Returns homedir for a user
        @param user: string
        @return: string
        )r1�pw_dirr5r
rr6s  r�get_homedirzClPwd.get_homedirUsP��	2��*�*�,�,�T�2�9�9���	2�	2�	2��+�+�D�1�1�1�	2���r@c��|js�tj��D]�}||j|j<|j|jvrg|j|j<|j|j�|��|j|jkrQ||j|j<|j|j	vrg|j	|j<|j	|j�|����dSdS)zZ
        Loads the passwd database and fills user_to_uid and user_to_homedir maps
        N)
r$�pwd�getpwallr#�pw_namer>�appendr&r!r")r�entrys  rr*zClPwd._load_passwd_database`s����!�
	B�����	
B�	
B��5:��#�E�M�2��<�t�'9�9�9�79�D�&�u�|�4��"�5�<�0�7�7��>�>�>��<�4�=�0�0�8=�D�&�u�}�5��|�4�+<�<�<�:<��)�%�,�7��%�e�l�3�:�:�5�A�A�A��
	B�
	B�	
B�	
Brc��	|���|}n(#t$rt�|���wxYwd�|D��S)zs
        Return names of users with uid specified
        @param uid: int
        @return: list of strings
        c��g|]	}|j��
S�)rG)�.0rIs  r�
<listcomp>z#ClPwd.get_names.<locals>.<listcomp>{s��3�3�3�%��
�3�3�3rr:)rr;�entriess   r�	get_nameszClPwd.get_namespsd��	1��,�,�.�.�s�3�G�G���	1�	1�	1��+�+�C�0�0�0�	1����4�3�7�3�3�3�3s	��%Ar c��tj�|j��r�t	|jd��5}|���}ddd��n#1swxYwY|D]d}|�d��rM	t|�d��d�	����cS#t$rY�`wxYw�e|S)z�
        Return system defined MIN_UID from /etc/login.def or def_min_uid
        @param def_min_uid: int
        @return: MIN_UID: int
        �rN�UID_MINr)�os�path�exists�LOGIN_DEF_FILE�open�	readlines�
startswith�int�split�strip�
ValueError)r�def_min_uid�f�lines�lines     rr%zClPwd.get_sys_min_uid}s���7�>�>�$�-�.�.�	��d�)�3�/�/�
&�1����
�
��
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��
�
���?�?�9�-�-���"�4�:�:�i�#8�#8��#;�#A�#A�#C�#C�D�D�D�D�D��%������������s#�A�A�"A�9B<�<
C	�C	r))r )rrrrWrrrr,r/r1r3r7r<r?rCr*rPr%rLrrr
r
s������&�N� � � � � �0� � � �$�$�$�$�"�"�"�!�!�!�#�#�#�"�"�"�2�2�2�1�1�1�2�2�2�	2�	2�	2�B�B�B� 4�4�4������rr
Tc�0��tj��}|dkr��r�tj���}�fd�t	j��D��}|j}||vr|�|��tj|��|r3tj	|j��tj
|j��n2tj|j��tj
|j��|r)�tjd<|jtjd<dSdSdSdS)z�
    Drop current root privileges to user
    :param effective_or_real: if True - drop euid, else - drop ruid
    :param user: name of unix user
    :param set_env: bool -> if true set $HOME and $USER env variables
    :return: None
    rc�0��g|]}�|jv�|j��SrL)�gr_mem�gr_gid)rM�grouprs  �rrNz(drop_user_privileges.<locals>.<listcomp>�s'���X�X�X��4�5�<�CW�CW�u�|�CW�CW�CWr�USER�HOMEN)rT�geteuidrE�getpwnam�grp�getgrall�pw_gidrH�	setgroups�setegid�seteuidr>�setgid�setuid�environrB)r�effective_or_real�set_env�current_euid�user_pwd�user_groups�main_user_groups`      r�drop_user_privilegesr{�s����:�<�<�L��q���T���<��%�%��X�X�X�X�����X�X�X��"�/���+�-�-�����/�/�/�
��[�!�!�!��	'��J�x��'�'�'��J�x��'�'�'�'��I�h�o�&�&�&��I�h�o�&�&�&��	1�!%�B�J�v��!)��B�J�v����%����	1�	1rc#�K�tj��tj��tj��}}}	t	|dd���n(#t
$rt�|���wxYw	dV�tj|��tj	|��tj
|��dS#tj|��tj	|��tj
|��wxYw)zk
    Temporary drop privileges to some user
    :type user: str
    :raises: ClPwd.NoSuchUserException
    TF)rurvN)rT�getuid�getgid�	getgroupsr{r5r
rrqrpro)r�old_uid�old_gid�
old_groupss    r�drop_privilegesr��s�����$&�9�;�;��	���R�\�^�^�j�W�G�.��T�T�5�I�I�I�I�I���.�.�.��'�'��-�-�-�.����!�
����
�
�7����
�
�7����
��Z� � � � � ��	�
�7����
�
�7����
��Z� � � � ���s�A�%A5�9B;�;>C9c��|�td���ddlm}ddlm}||��}	|d\}}n#t
$r|dd|id	����wxYw|S)
zw
    Resolve document root by username
    :param user: str -> name of unix user
    :return: str -> document root
    Nz-Cannot resolve docroot without specified userr)�userdomains)�NoDomainrz!No domain for user %(user)s foundrr)r�cpapir��cpapi.cpapiexceptionsr��
IndexError)rr�r��domains_list�_�results      r�_resolve_doc_root_by_userr��s����|� �!P�Q�Q�Q�#�"�"�"�"�"�/�/�/�/�/�/��;�t�$�$�L�� ��O�	��6�6�������h�:���~�
�
���	�����
�Ms	�6�Ac�&�ddlm}ddlm}|}d}t	j��}|�'||��\}}|�|}n||kr|d���|}nB|�t
|���}n/|dkr)tj|��j	}t
|���}||fS)a
    Resolve username and doc_root by domain,
    or resolve document root by username,
    or resolve document root and username by effective uid
    :param user: str -> name of unix user
    :param domain: str -> domain of panel user
    :return: tuple -> user, doc_root
    r)�docroot)�
IncorrectDataNzUser and domain are in conflict)rr)
r�r�r�r�rTrjr�rE�getpwuidrG)	r�domainr�r��result_user�result_doc_rootrw�doc_root�domain_users	         r�resolve_username_and_doc_rootr��s���������4�4�4�4�4�4��K��O��:�<�<�L�
�� '�������+��<�%�K�K�
�[�
 �
 ��-� A�B�B�B�"���	
�	�3��>�>�>���	��	�	��l�<�0�0�8��3��E�E�E����'�'r)NTT)NN)�
__future__rrrrTrErl�
contextlibr�clexceptionrr
r{r�r�r�rLrr�<module>r�s	��'�&�&�&�&�&�������%�%�%�%�%�%�	�	�	�	�
�
�
�
�
�
�
�
�%�%�%�%�%�%�+�+�+�+�+�+�y�y�y�y�y�y�y�y�x1�1�1�1�<�!�!���!�&���4(�(�(�(�(�(r