%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/opt/alt/python37/lib/python3.7/site-packages/__pycache__/
Upload File :
Create Path :
Current File : //proc/self/root/opt/alt/python37/lib/python3.7/site-packages/__pycache__/clsudo.cpython-37.pyc

B

`�1b�:�@s�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZGdd�de
�ZGdd	�d	e
�ZGd
d�de
�ZGdd
�d
e
�ZdZdddddddgZdgZddddgZdZdZdZGdd�d�ZdS) �)�absolute_import)�division)�print_functionN)�S_IRUSR�S_IRGRPc@seZdZdd�ZdS)�
NoSuchUsercCst�|d|f�dS)NzNo such user (%s))�	Exception�__init__)�self�user�r�7/opt/alt/python37/lib/python3.7/site-packages/clsudo.pyr	szNoSuchUser.__init__N)�__name__�
__module__�__qualname__r	rrrr
rsrc@seZdZdd�ZdS)�NoSuchGroupcCsd|}t�||�dS)NzNo such group (%s))rr	)r
�group�messagerrr
r	szNoSuchGroup.__init__N)rrrr	rrrr
rsrc@seZdZdd�ZdS)�UnableToReadFilecCst�|d�dS)NzCannot read sudoers file)rr	)r
rrr
r	!szUnableToReadFile.__init__N)rrrr	rrrr
r src@seZdZdd�ZdS)�UnableToWriteFilecCst�|d�dS)NzCannot modify sudoers file)rr	)r
rrr
r	&szUnableToWriteFile.__init__N)rrrr	rrrr
r%srz/etc/sudoersz/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.pyz/usr/bin/cl-selectorz/usr/bin/pinisetz/usr/sbin/lvepsz/usr/bin/selectorctlzDefaults:%s !requirettyz-%%%s ALL=NOPASSWD: LVECTL_CMDS, SELECTOR_CMDSzDefaults:%%%s !requirettyc@s�eZdZdZdZgZdZdZdZdZ	dZ
dZdZdZ
dZdZeefdd��Zeefdd��Zeefdd	��Zeefd
d��Zeefdd
��Zeefdd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��ZdS)�Clsudoz/
    Adds CloudLinux users to sudoers file
    NFcCs�t�|�t�|�t�|�tjs:tj�dd�t��tj	sVtj�dd�t
��tjsrtj�dd�t��tj
s�tj�d|f�tjs�tj�d|f�tjs�tj�d|f�tjs�tj�t|f�t��dS)	z@
        Adds username to sudoers file (for lvemanager)
        zCmnd_Alias LVECTL_CMDS = z, zCmnd_Alias LVECTL_USER_CMDS = zCmnd_Alias SELECTOR_CMDS = z%s ALL=NOPASSWD: LVECTL_CMDSz'%s ALL=(ALL) NOPASSWD: LVECTL_USER_CMDSz%s 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_filerrr
�add_userJs$


zClsudo.add_usercCsh|t_t�|�t�|�tjs,tj�d�tjsDtj�d|f�tjs\tj�t	|f�t�
�dS)z<
        Adds username to sudoers file (for cagefs)
        zOCmnd_Alias CAGEFS_CMDS = /usr/sbin/cagefsctl, /bin/ps, /bin/grep, /sbin/servicez%s ALL=NOPASSWD: CAGEFS_CMDSN)r�filepathrr�has_cagefs_aliasrr�has_cagefs_rightsr&r'r()rr)rrr
�add_cagefs_userds

zClsudo.add_cagefs_usercCs�t�|�t�|�t�|�tjs:tj�dd�t��tj	sVtj�dd�t
��tjsntj�t|f�tj
s�tj�t|f�t��dS)zJ
        Adds group to sudoers file, grants access to LVE Manager
        zCmnd_Alias LVECTL_CMDS = z, zCmnd_Alias SELECTOR_CMDS = N)rr�_check_group�_get_contents_grouprrrrrr!r"r&�GROUP_LVECTL_SELECTOR�has_group_action�GROUP_DEFAULTS_REQUIRETTYr()�
group_namer)rrr
�add_lvemanager_groupus


zClsudo.add_lvemanager_groupc	Cs�|t_y�ttj�}|����t_|��d}d}xR|ttj�kr�tj|}d|f|ksft|f|krxtj�	|�d}q2|d7}q2W|r�t�
�Wnttfk
r�t
��YnXdS)z5
         Removes username from sudoers file
        rFz%s ALL=NOPASSWD:T�N)rr+�open�read�
splitlinesr�close�lenr'�remover(�IOError�OSErrorr)rr)�f�idxZremoved�linerrr
�remove_user�s$

zClsudo.remove_usercCs"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)rrrr)rr)rrr
�update_user�s	

zClsudo.update_userc		Cs�|t_tj�tj�t_t��ttd�}d}x�t	t
tj��D]�}tj|}xj|��D]^\}}||krT|�
|d���}|�d�}x2|D]*}||kr�d}d�|d�|��tj|<Pq�WqTW|r<t��q<WdS)	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
        )zCmnd_Alias LVECTL_CMDSzCmnd_Alias SELECTOR_CMDSF��,Tz	{0} = {1}z, N)rr+�os�path�dirname�temp_dir�
_read_sudoersrr"�ranger;r�items�replace�strip�split�formatrr()	r)Z	cmnd_dictZis_sudoer_changer@Zcommand_stringZ
aliase_keyZaliase_listZ	cmnd_listZaliase_cmnd_itemrrr
r�s(	



zClsudo.update_commands_listcCs0yt�|�Wntk
r*t|��YnXdS)zZ
        Checks passwd database for username presence
        @param user: string
        N)�pwd�getpwnam�KeyErrorr)rrrr
r�szClsudo._check_usercCs0yt�|�Wntk
r*t|��YnXdS)z_
        Checks grp database for group_name presence
        @param group_name: string
        N)�grpZgetgrnamrSr)r4rrr
r/�szClsudo._check_groupcCs$ttj�}|����t_|��dS)N)r7rr+r8r9rr:)�irrr
rJ�s
zClsudo._read_sudoersc	Cs�dt_dt_dt_dt_dt_dt_dt_dt_dt_	dt_
t�d|�}�ypt�
��x`tttj��D�]L}dtj|kr�dt_qhdtj|kr�dt_qhdtj|kr�dt_	qhd|ftj|kr�dt_qhd|ftj|kr�dt_qhd	|ftj|k�rdt_
qhd
tj|k�r2|�tj|�}|rhdt_qhdtj|k�r�dtj|k�rjtj|�d
d�tj|<dtj|k�r�tj|�dd�tj|<dt_qhd|ftj|krhdt_qhqhWWn ttfk
�r�t��YnXdS)zM
        Reads file into list of strings
        @param user: string
        FzDefaults:\s*%s\s*!requirettyzCmnd_Alias LVECTL_CMDSTzCmnd_Alias LVECTL_USER_CMDSzCmnd_Alias CAGEFS_CMDSz%s ALL=NOPASSWD: LVECTL_CMDSz'%s ALL=(ALL) NOPASSWD: LVECTL_USER_CMDSz%s ALL=NOPASSWD: CAGEFS_CMDSZ
requirettyzCmnd_Alias SELECTOR_CMDS�pinisetz/usr/bin/cl-selectorz&/usr/bin/cl-selector, /usr/bin/piniset�lvepsz7/usr/bin/cl-selector, /usr/bin/piniset, /usr/sbin/lvepsz%s ALL=NOPASSWD: SELECTOR_CMDSN)rr&r2rrr#r$r!r%r,r-�re�compilerJrKr;r�searchrMr=r>r)rZrequire_tty_patternr@�
pattern_matchrrr
r�sh


zClsudo._get_contentsc	Csldt_dt_dt_dt_dt_dt_dt_dt_d|}d|}t	�
d|f�}y�t��x�tt
tj��D]�}dtj|kr�dtj|kr�tj|�dd�tj|<d	tj|kr�tj|�dd
�tj|<dt_qjdtj|kr�dt_qjd
tj|kr�dt_qjtj|�|��r*|�tj|�}|�r*dt_tj|�|�rjdt_qjWWn ttfk
�rft��YnXdS)zS
        Reads file into list of strings
        @param group_name: string
        Fz%%%sz
Defaults:%%%sz1%s\s*ALL=NOPASSWD:\s*LVECTL_CMDS,\s*SELECTOR_CMDSzCmnd_Alias SELECTOR_CMDSrVz/usr/bin/cl-selectorz&/usr/bin/cl-selector, /usr/bin/pinisetrWz7/usr/bin/cl-selector, /usr/bin/piniset, /usr/sbin/lvepsTzCmnd_Alias LVECTL_CMDSzCmnd_Alias CAGEFS_CMDSN)rr&r2rr#r!r%r,r-rXrYrJrKr;rrM�
startswithrZr=r>r)r4Zgroup_prefixZgroup_actionZ
group_patternr@r[rrr
r0)sL

zClsudo._get_contents_groupc	Cs�yttj�tj�}d}tj||d�\}}t�|d�}|�d�	tj
�d�|��tt
B}t�||�t�|�srt�WnFttfk
r�ytj�|�r�t�|�WnYnXt��YnXyt�|tj�Wntk
r�t��YnXdS)zX
        Writes data to temporary file then checks it and rewrites sudoers file
        Zlve_sudoers_)�prefix�dir�w�
N)rFrGrHrr+�tempfileZmkstemp�fdopen�writerrr:rr�chmod�_is_file_validr=r>�exists�unlinkr�rename)rIZtemp_prefix�fdZ	temp_pathZfo�maskrrr
r(Ys,
zClsudo._write_contentscCsBddd|g}tj|td�tjtjdd�}|��|jdkr>dSdS)	Nz/usr/sbin/visudoz-cz-fz	/dev/nullT)�stdin�stdout�stderrZ	close_fdsrF)�
subprocess�Popenr7�PIPEZSTDOUTZcommunicate�
returncode)�filename�cmd�rvrrr
reus
zClsudo._is_file_valid)rrr�__doc__r+rr&r2rrr#r$r!r%r,r-�staticmethod�SUDOERS_FILEr*r.r5rBrCrrr/rJrr0r(rerrrr
r9s@>0r)Z
__future__rrrrFrQrTrXrnra�statrrrrrrrrwrr r"r'r1r3rrrrr
�<module>s.

Zerion Mini Shell 1.0