Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/clcommon/__pycache__/clpwd.cpython-311.pyc



]j|ddlZddlZddlZddlmZddlmZGddZddZed	Z	d
Z
d
dZdS)N)contextmanager)FormattedExceptionczeZdZdZGddeZddZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZddZdS)ClPwdz/etc/login.defsceZdZfdZxZS)ClPwd.NoSuchUserExceptioncdttj|jdd|idg|Ri|dS)NzNo such user (%(user)s)usermessagecontext)superrNoSuchUserException__init__)selfrargskwargs	__class__s    n/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/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	 	 	 	 	 	 	 	 	 rrNci|_i|_i|_i|_||d|_dS||_dS)N)
_user_key_map_uid_key_map_user_full_map
_uid_full_mapget_sys_min_uid_min_uid)rmin_uids  rrzClPwd.__init__sK ? 0055DMMM#DMMMrc8||jSN)_load_passwd_databaserrs r
get_user_dictzClPwd.get_user_dict'""$$$!!rc8||jSr&)r'rr(s rget_uid_dictzClPwd.get_uid_dict+s""$$$  rc8||jSr&)r'r r(s rget_user_full_dictzClPwd.get_user_full_dict/s""$$$""rc8||jSr&)r'r!r(s rget_uid_full_dictzClPwd.get_uid_full_dict3r*rc	||S#t$r }t||d}~wwxYw)z*
        Return pw_entry for user
        N)r.KeyErrorrrrres   rget_pw_by_namezClPwd.get_pw_by_name7sS	9**,,T22	9	9	9++D11q8	9
AAAc	||S#t$r }t||d}~wwxYw)z7
        Return list of passwd entries for uid
        Nr0r2rr)ruidr4s   r
get_pw_by_uidzClPwd.get_pw_by_uid@sS	8))++C00	8	8	8++C00a7	8r6c	||jS#t$r }t||d}~wwxYw)z&
        Returns uid for user
        N)r.pw_uidr2rrr3s   rget_uidz
ClPwd.get_uidIsV	9**,,T299	9	9	9++D11q8	9!
AAAc	||jS#t$r }t||d}~wwxYw)z`
        Returns homedir for a user
        @param user: string
        @return: string
        N)r.pw_dirr2rrr3s   rget_homedirzClPwd.get_homedirRsV	9**,,T299	9	9	9++D11q8	9r>c|jstjD]}||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!pwdgetpwallr pw_namer<appendr#rr)rentrys  rr'zClPwd._load_passwd_database]s!
	B	
B	
B5:#EM2<t'99979D&u|4"5<077>>><4=008=D&u}5|4+<<<:<)%,7%el3::5AAA
	B
	B	
B	
Brc	||}n-#t$r }t||d}~wwxYwd|DS)zs
        Return names of users with uid specified
        @param uid: int
        @return: list of strings
        Ncg|]	}|j
S)rE).0rGs  r
<listcomp>z#ClPwd.get_names.<locals>.<listcomp>xs333%
333rr8)rr9entriesr4s    r	get_nameszClPwd.get_namesmsj	8,,..s3GG	8	8	8++C00a7	84373333s
AAArctj|jrt	|jdd5}|}dddn#1swxYwY|D]d}|drM	t|dd	cS#t$rY`wxYwe|S)z
        Return system defined MIN_UID from /etc/login.def or def_min_uid
        @param def_min_uid: int
        @return: MIN_UID: int
        rzutf-8)encodingNUID_MINr)ospathexistsLOGIN_DEF_FILEopen	readlines
startswithintsplitstrip
ValueError)rdef_min_uidflineslines     rr"zClPwd.get_sys_min_uidzs7>>$-..	d)3AAA
&Q


&
&
&
&
&
&
&
&
&
&
&
&
&
&
&

??9--"4::i#8#8#;#A#A#C#CDDDDD%s#AA!$A!9B>>
C
Cr&)r)rrrrVrrrr)r,r.r0r5r:r=rAr'rNr"rJrrrrs&N     0   $$$$"""!!!###"""999888999	9	9	9BBB 444rrTc0tj}|dkrrtj}fdt	jD}|j}||vr||tj||r3tj	|jtj
|jn2tj|jtj
|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
    rc0g|]}|jv|jSrJ)gr_memgr_gid)rKgrouprs  rrLz(drop_user_privileges.<locals>.<listcomp>s'XXX45<CWCWu|CWCWCWrUSERHOMEN)rSgeteuidrCgetpwnamgrpgetgrallpw_gidrF	setgroupssetegidseteuidr<setgidsetuidenvironr@)reffective_or_realset_envcurrent_euiduser_pwduser_groupsmain_user_groups`      rdrop_user_privilegesrzs:<<LqT<%%XXXXXXX"/+--///
[!!!	'Jx'''Jx''''Iho&&&Iho&&&	1!%BJv!)BJv%	1	1rc#Ktjtjtj}}}	t	|ddn-#t
$r }t||d}~wwxYw	dVtj|tj	|tj
|dS#tj|tj	|tj
|wxYw)zk
    Temporary drop privileges to some user
    :type user: str
    :raises: ClPwd.NoSuchUserException
    TF)rtruN)rSgetuidgetgid	getgroupsrzr2rrrprorn)rold_uidold_gid
old_groupsr4s     rdrop_privilegesrs$&9;;	R\^^jWG5TT5IIIII555''--145!


7

7
Z     	
7

7
Z    s#A
A:A55A:>C>C>c|tdddlm}ddlm}||}	|d\}}n##t
$r}|dd|id	|d}~wwxYw|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)rcpapircpapi.cpapiexceptionsr
IndexError)rrrdomains_list_resultr4s       r_resolve_doc_root_by_userrs| !PQQQ#"""""//////;t$$L O	66h:~

	
Ms6
AAAc&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)
rrrrrSrirrCgetpwuidrE)	rdomainrrresult_userresult_doc_rootrvdoc_rootdomain_users	         rresolve_username_and_doc_rootrs444444KO:<<L
 '+<%KK
[
 
 - ABBB"	
	3>>>			l<0083EEE''r)NTT)NN)rSrCrk
contextlibrclexceptionrrrzrrrrJrr<module>rs
			







%%%%%%++++++yyyyyyyyx1111<!!!&4((((((r
Back to Directory File Manager