Hacked By AnonymousFox

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

�

J{�f�:���ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZGd�de
��ZGd�d	e
��ZGd
�de
��ZGd�d
e
��ZdZgd�ZdgZgd�ZdZdZdZGd�d��ZdS)�)�absolute_import)�division)�print_functionN)�S_IRUSR�S_IRGRPc��eZdZd�ZdS)�
NoSuchUserc�D�t�|d|�d���dS)NzNo such user (�)��	Exception�__init__)�self�users  ��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.10-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clsudo.pyrzNoSuchUser.__init__s'�����4�4����!>�?�?�?�?�?�N��__name__�
__module__�__qualname__r�rrr	r	s(������@�@�@�@�@rr	c��eZdZd�ZdS)�NoSuchGroupc�F�d|z}t�||��dS)NzNo such group (%s)r)r�group�messages   rrzNoSuchGroup.__init__s(��&��.�����4��)�)�)�)�)rNrrrrrrs#������*�*�*�*�*rrc��eZdZd�ZdS)�UnableToReadFilec�<�t�|d��dS)NzCannot read sudoers filer�rs rrzUnableToReadFile.__init__!s�����4�!;�<�<�<�<�<rNrrrrrr s#������=�=�=�=�=rrc��eZdZd�ZdS)�UnableToWriteFilec�<�t�|d��dS)NzCannot modify sudoers filerr s rrzUnableToWriteFile.__init__&s�����4�!=�>�>�>�>�>rNrrrrr"r"%s#������?�?�?�?�?rr"z/etc/sudoers)z/bin/psz	/bin/grepz
/sbin/servicez%/usr/bin/getcontrolpaneluserspackagesz/usr/sbin/lvectlz>/usr/local/directadmin/plugins/new_lvemanager/admin/GetDomainsz0/usr/share/l.v.e-manager/utils/cloudlinux-cli.pyz5/usr/share/l.v.e-manager/utils/cloudlinux-cli-user.py)�/usr/bin/cl-selectorz/usr/bin/pinisetz/usr/sbin/lvepsz/usr/bin/selectorctlzDefaults:%s !requirettyz-%%%s ALL=NOPASSWD: LVECTL_CMDS, SELECTOR_CMDSzDefaults:%%%s !requirettyc�x�eZdZdZdZgZdZdZdZdZ	dZ
dZdZdZ
dZdZeefd���Zeefd���Zeefd���Zeefd���Zeefd���Zeefd	���Zed
���Zed���Zed���Zed
���Zed���Zed���Zed���ZdS)�Clsudoz/
    Adds CloudLinux users to sudoers file
    NFc���t�|��t�|��t�|��tjs:tj�dd�t��z��tj	s:tj�dd�t��z��tjs:tj�dd�t��z��tj
s"tj�|�d���tjs"tj�|�d���tjs"tj�|�d���tjs(tj�t"|fz��t���dS)	z@
        Adds username to sudoers file (for lvemanager)
        �Cmnd_Alias LVECTL_CMDS = �, zCmnd_Alias LVECTL_USER_CMDS = �Cmnd_Alias SELECTOR_CMDS = � ALL=NOPASSWD: LVECTL_CMDS�% ALL=(ALL) NOPASSWD: LVECTL_USER_CMDS� ALL=NOPASSWD: SELECTOR_CMDSN)r&�update_commands_list�_check_user�
_get_contents�	has_alias�sudoers_list�append�join�ALIAS_LVECTL_CMDS�has_user_alias�ALIAS_LVECTL_USER_CMDS�has_selector_alias�ALIAS_SELECTOR_CMDS�
has_rights�has_user_rights�has_selector_rights�
has_action�DEFAULTS_REQUIRETTY�_write_contents�r�sudoers_files  r�add_userzClsudo.add_userJs���	�#�#�L�1�1�1����4� � � ����T�"�"�"���	c���&�&�'B�T�Y�Y�O`�Ea�Ea�'a�b�b�b��$�	m���&�&�'G�$�)�)�Tj�Jk�Jk�'k�l�l�l��(�	g���&�&�'D�t�y�y�Qd�Ge�Ge�'e�f�f�f�� �	Q���&�&����'O�P�P�P��%�	\���&�&�TX�TX�TX�'Z�[�[�[��)�	S���&�&�4�4�4�'Q�R�R�R�� �	F���&�&�':�d�W�'D�E�E�E���� � � � � rc���|t_t�|��t�|��tjstj�d��tjs"tj�|�d���tjs(tj�t|fz��t�
��dS)z<
        Adds username to sudoers file (for cagefs)
        zOCmnd_Alias CAGEFS_CMDS = /usr/sbin/cagefsctl, /bin/ps, /bin/grep, /sbin/service� ALL=NOPASSWD: CAGEFS_CMDSN)r&�filepathr/r0�has_cagefs_aliasr2r3�has_cagefs_rightsr=r>r?r@s  r�add_cagefs_userzClsudo.add_cagefs_userds���
'������4� � � ����T�"�"�"��&�	L���&�&�(K�
L�
L�
L��'�	Q���&�&����'O�P�P�P�� �	F���&�&�':�d�W�'D�E�E�E���� � � � � rc��t�|��t�|��t�|��tjs:tj�dd�t��z��tj	s:tj�dd�t��z��tjs(tj�t|fz��tj
s(tj�t|fz��t���dS)zJ
        Adds group to sudoers file, grants access to LVE Manager
        r(r)r*N)r&r.�_check_group�_get_contents_groupr1r2r3r4r5r8r9r=�GROUP_LVECTL_SELECTOR�has_group_action�GROUP_DEFAULTS_REQUIRETTYr?)�
group_namerAs  r�add_lvemanager_groupzClsudo.add_lvemanager_groupus��	�#�#�L�1�1�1����J�'�'�'��"�"�:�.�.�.���	c���&�&�'B�T�Y�Y�O`�Ea�Ea�'a�b�b�b��(�	g���&�&�'D�t�y�y�Qd�Ge�Ge�'e�f�f�f�� �	N���&�&�'<�
�}�'L�M�M�M��&�	R���&�&�'@�J�=�'P�Q�Q�Q���� � � � � rc�p�|t_	ttj��}|������t_|���d}d}|ttj��krjtj|}|�d�|vs
t|fz|vr"tj�	|��d}�e|dz
}|ttj��k�j|rt�
��dSdS#ttf$rt���wxYw)z5
         Removes username from sudoers file
        rFz ALL=NOPASSWD:T�N)r&rE�open�read�
splitlinesr2�close�lenr>�remover?�IOError�OSErrorr)rrA�f�idx�removed�lines      r�remove_userzClsudo.remove_user�s4��
'���	%��V�_�%�%�A�"#�&�&�(�(�"5�"5�"7�"7�F��
�G�G�I�I�I��C��G���F�/�0�0�0�0��*�3�/��+/�4�4�1�d�:�:�AT�X\�W^�A^�bf�@f�@f��'�.�.�t�4�4�4�"�G���q���
��F�/�0�0�0�0��
)��&�&�(�(�(�(�(�
)�
)����!�	%�	%�	%�"�$�$�$�	%���s�DD� D5c��t�|��t�|��t�|��dS)z�
        updates username in sudoers file
        :param user: username for caching
        :param sudoers_file: path to /etc/sudoers (only for tests)
        :return: None
        N)r&r.r/r0r@s  r�update_userzClsudo.update_user�sH��	�#�#�L�1�1�1�	���4� � � ����T�"�"�"�"�"rc	��|t_tj�tj��t_t���ttd�}d}tttj����D]�}tj|}|���D]�\}}||vr�|�
|d�����}|�d��}|D]@}||vr:d}d�|d�|����tj|<n�A��|rt�����dS)	z�
        Update command lists for lvemanager plugin
        If any required command absent in file, add it
        :param sudoers_file: path to /etc/sudoers
        :return: None
        )�Cmnd_Alias LVECTL_CMDS�Cmnd_Alias SELECTOR_CMDSF��,Tz	{0} = {1}r)N)r&rE�os�path�dirname�temp_dir�
_read_sudoersr5r9�rangerWr2�items�replace�strip�split�formatr4r?)	rA�	cmnd_dict�is_sudoer_changer\�command_string�
aliase_key�aliase_list�	cmnd_list�aliase_cmnd_items	         rr.zClsudo.update_commands_list�s]��'����'�/�/�&�/�:�:���������/@�1D�F�F�	� ����V�0�1�1�2�2�	)�	)�C�#�0��5�N�+4�?�?�+<�+<�

"�

"�'�
�K���/�/�%3�%;�%;�J��%K�%K�%Q�%Q�%S�%S�N� .� 4� 4�S� 9� 9�I�,7�"�"�(�+�9�<�<�/3�,�7B�7I�7I� *�D�I�I�k�,B�,B�8�8�F�/��4�"�E�=�� �
)��&�&�(�(�(��	)�	)rc�j�	tj|��dS#t$rt|���wxYw)zZ
        Checks passwd database for username presence
        @param user: string
        N)�pwd�getpwnam�KeyErrorr	)rs rr/zClsudo._check_user�sF��	#��L���������	#�	#�	#��T�"�"�"�	#������2c�j�	tj|��dS#t$rt|���wxYw)z_
        Checks grp database for group_name presence
        @param group_name: string
        N)�grp�getgrnamr|r)rOs rrJzClsudo._check_group�sF��	*��L��$�$�$�$�$���	*�	*�	*��j�)�)�)�	*���r}c��ttj��}|������t_|���dS)N)rSr&rErTrUr2rV)�is rrkzClsudo._read_sudoers�s>�����!�!���f�f�h�h�1�1�3�3���	���	�	�	�	�	rc���dt_dt_dt_dt_dt_dt_dt_dt_dt_	dt_
tjd|z��}	t�
��tttj����D�]�}dtj|vr
dt_�$dtj|vr
dt_�Edtj|vr
dt_	�f|�d�tj|vr
dt_��|�d�tj|vr
dt_��|�d	�tj|vr
dt_
��d
tj|vr5|�tj|��}|rdt_��dtj|vr�dtj|vr3tj|�d
d��tj|<dtj|vr3tj|�dd��tj|<dt_���|�d�tj|vrdt_�����dS#t&t(f$rt+���wxYw)zM
        Reads file into list of strings
        @param user: string
        FzDefaults:\s*%s\s*!requirettyrcTzCmnd_Alias LVECTL_USER_CMDS�Cmnd_Alias CAGEFS_CMDSr+r,rD�
requirettyrd�pinisetr$�&/usr/bin/cl-selector, /usr/bin/piniset�lveps�7/usr/bin/cl-selector, /usr/bin/piniset, /usr/sbin/lvepsr-N)r&r=rMr1r6r:r;r8r<rFrG�re�compilerkrlrWr2�searchrnrYrZr)r�require_tty_patternr\�
pattern_matchs    rr0zClsudo._get_contents�s���"���"'��� ��� %���!���!&���$)��!�%*��"�"'���#(�� � �j�)H�4�)O�P�P��)	%�� � �"�"�"��S��!4�5�5�6�6�$
�$
��+�v�/B�3�/G�G�G�'+�F�$��0�F�4G��4L�L�L�,0�F�)��+�v�/B�3�/G�G�G�.2�F�+��59�T�T�;�v�?R�SV�?W�W�W�(,�F�%��@D���F�&�J]�^a�Jb�b�b�-1�F�*��59�T�T�;�v�?R�SV�?W�W�W�/3�F�,���6�#6�s�#;�;�;�$7�$>�$>�v�?R�SV�?W�$X�$X�M�$�1�,0��)��-��1D�S�1I�I�I� ��(;�C�(@�@�@�39�3F�s�3K�3S�3S�2�4\�4^�4^��+�C�0��f�&9�#�&>�>�>�39�3F�s�3K�3S�3S�D�U�4W�4W��+�C�0�15�F�-��7;�t�t�=��AT�UX�AY�Y�Y�15�F�.��Z�E$
�$
��J��!�	%�	%�	%�"�$�$�$�	%���s
�H1K� K$c���dt_dt_dt_dt_dt_dt_dt_dt_d|z}d|z}tj
|�d���}	t���tttj����D�]}}dtj|vr�dtj|vr3tj|�dd��tj|<d	tj|vr3tj|�dd
��tj|<dt_��dtj|vr
dt_��d
tj|vr
dt_��tj|�|��r3|�tj|��}|rdt_tj|�|��rdt_��dS#t$t&f$rt)���wxYw)zS
        Reads file into list of strings
        @param group_name: string
        Fz%%%sz
Defaults:%%%sz/\s*ALL=NOPASSWD:\s*LVECTL_CMDS,\s*SELECTOR_CMDSrdr�r$r�r�r�Trcr�N)r&r=rMr1r:r8r<rFrGr�r�rkrlrWr2rn�
startswithr�rYrZr)rO�group_prefix�group_action�
group_patternr\r�s      rrKzClsudo._get_contents_group)s.��"���"'��� ���!���$)��!�%*��"�"'���#(�� ��
�*��&��3���
�[e�[e�[e�#g�h�h�
�	%�� � �"�"�"��S��!4�5�5�6�6�
3�
3��-��1D�S�1I�I�I� ��(;�C�(@�@�@�39�3F�s�3K�3S�3S�2�4\�4^�4^��+�C�0��f�&9�#�&>�>�>�39�3F�s�3K�3S�3S�D�U�4W�4W��+�C�0�15�F�-��+�v�/B�3�/G�G�G�'+�F�$��+�v�/B�3�/G�G�G�.2�F�+���&�s�+�6�6�|�D�D�1�$1�$8�$8��9L�S�9Q�$R�$R�M�$�1�,0��)��&�s�+�6�6�|�D�D�3�.2�F�+��-
3�
3��.��!�	%�	%�	%�"�$�$�$�	%���s
�F>I� I#c��	tj�tj��}d}tj||���\}}tj|d��}|�d�	tj
��dz��|���ttz}tj||��t�|��st �n_#t t"f$rK	tj�|��rtj|��n#YnxYwt)���wxYw	tj|tj��dS#t"$rt)���wxYw)zX
        Writes data to temporary file then checks it and rewrites sudoers file
        �lve_sudoers_)�prefix�dir�w�
N)rgrhrir&rE�tempfile�mkstemp�fdopen�writer4r2rVrr�chmod�_is_file_validrYrZ�exists�unlinkr"�rename)rj�temp_prefix�fd�	temp_path�fo�masks      rr?zClsudo._write_contentsYsf��
	&��w���v��7�7�H�(�K�$�,�K�X�N�N�N�M�B�	���2�s�#�#�B��H�H�T�Y�Y�v�2�3�3�d�:�;�;�;��H�H�J�J�J��W�$�D��H�Y��%�%�%��(�(��3�3�
��
�
����!�	&�	&�	&�
��7�>�>�)�,�,�)��I�i�(�(�(���
������#�%�%�%�
	&����	&��I�i���1�1�1�1�1���	&�	&�	&�#�%�%�%�	&���s0�C'C*�*E�<3D0�/E�0D4�2E�
E+�+Fc���ddd|g}tj|td��tjtjd���}|���|jdkrdSdS)	Nz/usr/sbin/visudoz-cz-fz	/dev/nullT)�stdin�stdout�stderr�	close_fdsrF)�
subprocess�PopenrS�PIPE�STDOUT�communicate�
returncode)�filename�cmd�rvs   rr�zClsudo._is_file_validust��
���(�
��
�
���{�#�#��?��$������	������
�=�A����5��tr)rrr�__doc__rEr2r=rMr1r6r:r;r8r<rFrG�staticmethod�SUDOERS_FILErBrHrPr_rar.r/rJrkr0rKr?r�rrrr&r&9s����������H��L��J����I��N��J��O����������$0�!�!�!��\�!�2�+7�!�!�!��\�!� �6B�!�!�!��\�!�&�'3�%�%�%��\�%�.�'3�#�#�#��\�#��*6�)�)�)��\�)�<�#�#��\�#��*�*��\�*�����\��
�;%�;%��\�;%�z�-%�-%��\�-%�^�&�&��\�&�6����\���rr&)�
__future__rrrrgrzrr�r�r��statrrr
r	rrr"r�r5r7r9r>rLrNr&rrr�<module>r�s���'�&�&�&�&�&�������%�%�%�%�%�%�	�	�	�	�
�
�
�
�
�
�
�
�	�	�	�	���������!�!�!�!�!�!�!�!�@�@�@�@�@��@�@�@�*�*�*�*�*�)�*�*�*�=�=�=�=�=�y�=�=�=�
?�?�?�?�?�	�?�?�?�
��I�I�I��R�R��m�m�m��/��G��7��L�L�L�L�L�L�L�L�L�Lr

Hacked By AnonymousFox1.0, Coded By AnonymousFox