/opt/imunify360/venv/lib/python3.11/site-packages/__pycache__
NameSizeModeActions
distro.cpython-311.pyc515050644editdlrm
pam.cpython-311.pyc101470644editdlrm
peewee.cpython-311.pyc4865020644editdlrm
phpserialize.cpython-311.pyc240650644editdlrm
pwiz.cpython-311.pyc127610644editdlrm
secureio.cpython-311.pyc300790644editdlrm
six.cpython-311.pyc464360644editdlrm
speaklater.cpython-311.pyc91610644editdlrm
typing_extensions.cpython-311.pyc1827110644editdlrm
_pyrsistent_version.cpython-311.pyc2450644editdlrm
Edit: /opt/imunify360/venv/lib/python3.11/site-packages/__pycache__/secureio.cpython-311.pyc (30079B)
§ dCY2Oà€+ãóÆ—ddlZddlZddlZddlZddlZddlmZddlmZddl m Z m Z m Z m Z mZmZmZmZmZmZddlmZddlmZd„Zd„Zed¬ ¦«d „¦«Zer e¦«Ze Ze ZGd „d e ¦«Zee¦«Zd „Z d„Z!d„Z"d„Z#d„Z$d„Z%Gd„d¦«Z&ed¬ ¦«d„¦«Z'er e'¦«Z(d„Z)d„Z*d„Z+d„Z,d„Z-da.dZ/dZ0dZ1d„Z2d „Z3d!„Z4d"„Z5d;d#„Z6d;d$„Z7d;d%„Z8dd)„Z; d?d+ed@d.„Z?d/„Z@d0„ZAdaBd1„ZCee0¬2¦«ZDd3„ZEdaFdAd4„ZGd5„ZHdBd6„ZId7„ZJd8„ZKejLd9„¦«ZMejLd:„¦«ZNdS)CéN)Ú lru_cache)Ú TYPE_CHECKING) ÚcdllÚc_longÚ StructureÚc_ushortÚc_ubyteÚc_charÚPOINTERÚc_intÚc_void_pÚc_char_p)ÚClPwd)Údrop_user_privilegescó†—|dkrt¦«S|dkrt¦«Stdt›d|›�¦«‚)NÚlibcÚliblvezmodule z has no attribute )Ú _load_libcÚ _load_liblveÚAttributeErrorÚ__name__)Únames úh/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/secureio.pyÚ __getattr__rsK€ð ˆv‚~€~݉|Œ|ÐØ �Ò Ð Ý‰~Œ~ÐÝ ÐE¥8ÐEÐE¸tÐEÐEÑ FÔ FÐFócóJ—ddgt¦« ¦«¢S)Nrr)ÚglobalsÚkeys©rrÚ__dir__r #s €Ø �HÐ 0�w™yœyŸ~š~Ñ/Ô/Ð 0Ð0r)Úmaxsizecóì—tjd¦«}tttg|j_t|j_ttg|j_t|j_tg|j_t|j_tg|j _t|j _tg|j _d|j _tg|j _t|j _|S)Nz libc.so.6) rÚ LoadLibraryr ÚfchownÚargtypesÚrestypeÚfchmodÚ fdopendirr ÚreaddirÚ DIRENTRY_PÚ rewinddirÚclosedir)rs rrr(sª€å Ô ˜KÑ (Ô (€Då!¥5­%Ð0€D„KÔÝ€D„KÔå!¥5˜>€D„KÔÝ€D„KÔõ %˜g€D„NÔå%€D„NÔõ&˜J€D„LÔå%€D„LÔõ (˜j€D„NÔà!€D„NÔõ'˜Z€D„MÔÝ!€D„MÔà €Krcó6—eZdZdefdefdefdefdedzfgZdS)ÚDIRENTRYÚd_inoÚd_offÚd_reclenÚd_typeÚd_nameéN) rÚ __module__Ú __qualname__Úino_tÚoff_trr r Ú_fields_rrrr.r.PsA€€€€€à �%ÐØ �%ÐØ �XÐØ �7ÐØ �6˜C‘<Ð ð €H€H€Hrr.cóH—t¦« |||¦«S©N)rr$)ÚfdÚuidÚgids rr$r$]s€Ý ‰<Œ<× Ò ˜r 3¨Ñ ,Ô ,Ð,rcóF—t¦« ||¦«Sr;)rr')r<Úmodes rr'r'as€Ý ‰<Œ<× Ò ˜r 4Ñ (Ô (Ð(rcóD—t¦« |¦«Sr;)rÚfdopen©r<s rrBrBes€Ý ‰<Œ<× Ò ˜rÑ "Ô "Ð"rcóD—t¦« |¦«Sr;)rr)©Údirps rr)r)is€Ý ‰<Œ<× Ò  Ñ %Ô %Ð%rcóD—t¦« |¦«Sr;)rr+rEs rr+r+ms€Ý ‰<Œ<× !Ò ! $Ñ 'Ô 'Ð'rcóD—t¦« |¦«Sr;)rr,rEs rr,r,qs€Ý ‰<Œ<× Ò  Ñ &Ô &Ð&rcóT—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd S)ÚStubLVEz?Stub implementation of LVE functions for systems without liblvecó—dS©Néÿÿÿÿr)ÚselfÚpathÚ parent_paths rÚopen_not_symlinkzStubLVE.open_not_symlinkxó€Øˆrrcó—dSrLr)rNr<s rÚ check_dirzStubLVE.check_dir{rRrcó—dSrLr)rNrOÚ descriptorrPs rÚisdirz StubLVE.isdir~rRrcó—dSrLr)rNrOÚpermr<rPs rÚset_perm_dir_securezStubLVE.set_perm_dir_secure�rRrcó—dSrLr)rNrOr=r>r<rPs rÚset_owner_dir_securezStubLVE.set_owner_dir_secure„rRrcó—dSrLr)rNrOrYr=r>r<rPs rÚcreate_dir_securezStubLVE.create_dir_secure‡rRrcó—dSrLr)rNrOrYr=r>rPs rÚmakedirs_securezStubLVE.makedirs_secureŠrRrcó—dSr;r)rNr<Úbufs rÚget_path_from_descriptorz StubLVE.get_path_from_descriptor�s€Øˆtrcó—dS©Nrr)rNÚdirÚsubdirs rÚ is_subdirzStubLVE.is_subdir�ó€Øˆqrcó—dSrer©rNs rÚenable_quota_capabilityzStubLVE.enable_quota_capability“rircó—dSrerrks rÚdisable_quota_capabilityz StubLVE.disable_quota_capability–rirN)rr5r6Ú__doc__rQrTrWrZr\r^r`rcrhrlrnrrrrJrJus¿€€€€€ØIÐIðððððððððððððððððððððððððððððððððððrrJcól— tjd¦«}nF#t$r9 tjd¦«}n #t$rt¦«cYcYSwxYwYnwxYwttg|j_t|j_tg|j _d|j _tg|j _t|j _tttg|j _t|j _ttttg|j _t|j _tttttg|j _t|j _ttttttg|j_t|j_tttttg|j_t|j_ttg|j_t|j_ttg|j_t|j_|S)z>Load liblve if available, otherwise return stub implementationzlibsecureio.so.0z liblve.so.0N)rr#ÚOSErrorrJrrQr%r r&ÚclosefdrTrWrZr\r^r`rcrh)rs rrr›s»€ðÝÔ!Ð"4Ñ5Ô5ˆˆøÝ ðððð ÝÔ% mÑ4Ô4ˆFˆFøÝð ð ð Ý‘9”9Ð Ð Ð Ð Ð ð øøøð ˆFðøøøõ)1µ(Ð';€FÔÔ$Ý&+€FÔÔ#õ %˜g€F„NÔà!€F„NÔõ "' €FÔÔÝ$€FÔÔõ&¥u­hÐ7€F„LÔÝ €F„LÔõ,4µU½EÅ8Ð*L€FÔÔ'Ý).€FÔÔ&õ-5µe½UÅEÍ8Ð+T€FÔÔ(Ý*/€FÔÔ'õ *2µ5½%ÅÍÍxÐ(X€FÔÔ%Ý',€FÔÔ$õ (0µ½½uÅhÐ&O€FÔÔ#Ý%*€FÔÔ"õ 16µxÐ/@€FÔ#Ô,Ý.6€FÔ#Ô+õ"*­8Ð 4€FÔÔÝ$€FÔÔà €Ms/‚— A¢7¶A·AÁAÁAÁAÁAcóF—t¦« ||¦«Sr;)rrQ)rOrPs rÚ_open_not_symlinkrtós€Ý ‰>Œ>× *Ò *¨4°Ñ =Ô =Ð=rcóD—t¦« |¦«Sr;)rrTrCs rrTrT÷s€Ý ‰>Œ>× #Ò # BÑ 'Ô 'Ð'rcóH—t¦« |||¦«Sr;)rrW)rOrVrPs rrWrWûs€Ý ‰>Œ>× Ò   j°+Ñ >Ô >Ð>rcóF—t¦« ||¦«Sr;)rrc)r<rbs rrcrcÿs€Ý ‰>Œ>× 2Ò 2°2°sÑ ;Ô ;Ð;rcóF—t¦« ||¦«Sr;)rrh)rfrgs rrhrhs€Ý ‰>Œ>× #Ò # C¨Ñ 0Ô 0Ð0rTz/var/log/cagefs-update.logiôFcóZ—tj|tjtjz¦«Sr;)ÚosÚopenÚO_RDONLYÚ O_NOFOLLOW©rOs rrQrQs€Ý Œ7�4�œ¥r¤}Ñ4Ñ 5Ô 5Ð5rcóF—tjt|¦«d¦«S)NÚr)rzrBrQr~s rÚopen_file_not_symlinkr�s€Ý Œ9Õ% dÑ+Ô+¨SÑ 1Ô 1Ð1rcó6—tj|¦«}t|¦«}|std¦«‚t |¦«g} t |¦«}|sn"|j}| |j¦«Œ4t |¦«t|¦«|S)z:Returns list of entries of directory pointed by descriptorzfdopendir error) rzÚdupr(Ú RuntimeErrorr+r)ÚcontentsÚappendr3r,)r<Úfd2rFÚdirlistÚentrypÚentrys rÚflistdirr‹sŸ€õ Œ&�‰*Œ*€Cõ �S‰>Œ>€DØ ð.ÝÐ,Ñ-Ô-Ð-õ ˆd�O„O€Oà€Gð%ݘ‘”ˆØð Ø Ø”ˆØ�Š�u”|Ñ$Ô$Ð$ð %õˆd�O„O€OÝ ˆT�N„N€NØ €NrcóZ—|�( tj|¦«dS#t$rYdSwxYwdSr;)rzÚcloserqrCs rrrrr7sF€Ø €~ð Ý ŒH�R‰LŒLˆLˆLˆLøÝð ð ð Ø ˆDˆDð øøøð€~s „š (§(cóÒ—|€d}t¦« | ¦«||| ¦«¦«}|dkr|S|�|d|zdd¦«dS)z{Sets permissions to directory (in secure manner) Returns descriptor if successful Returns None if error has occuredNrMrz.Error: failed to set permissions of directory FT)rrZÚencode)rOrYrPr<Úloggers rrZrZ?sr€ð €zØ ˆÝ ‰Œ× +Ò +¨D¯KªK©M¬M¸4ÀÀ[×EWÒEWÑEYÔEYÑ ZÔ Z€BØ ˆA‚v€v؈ Ø ÐØˆÐ?À$ÑFÈÈtÑTÔTÐTØ ˆ4rcóÔ—|€d}t¦« | ¦«|||| ¦«¦«}|dkr|S|�|d|zdd¦«dS)zSets owner and group of directory (in secure manner) Returns descriptor if successful Returns None if error has occuredNrMrz(Error: failed to set owner of directory FT)rr\r�)rOr=r>rPr<r�s rr\r\Mst€ð €zØ ˆÝ ‰Œ× ,Ò ,¨T¯[ª[©]¬]¸CÀÀbÈ+×J\ÒJ\ÑJ^ÔJ^Ñ _Ô _€BØ ˆA‚v€v؈ Ø ÐØˆÐ9¸DÑ@À%ÈÑNÔNÐNØ ˆ4rc óÖ—|€d}t¦« | ¦«||||| ¦«¦«}|dkr|S|�|d|zdd¦«dS)z“Creates directory if it does not exist, sets permissions/owner otherwise Returns descriptor if successful Returns None if error has occuredNrMrú#Error : failed to create directory FT)rr^r�)rOrYr=r>rPr<r�s rr^r^[sv€ð €zØ ˆÝ ‰Œ× )Ò )¨$¯+ª+©-¬-¸¸sÀCÈÈ[×M_ÒM_ÑMaÔMaÑ bÔ b€BØ ˆA‚v€v؈ Ø ÐØˆÐ4°tÑ;¸UÀDÑIÔIÐIØ ˆ4rcóÀ—t¦« | ¦«|||| ¦«¦«}|r|r|d|zdd¦«|S)zeRecursive directory creation function Returns 0 if successful Returns -1 if error has occuredr“FT)rr`r�)rOrYr=r>rPr�Úress rr`r`isg€õ ‰.Œ.× (Ò (¨¯ª©¬¸¸cÀ3È ×HZÒHZÑH\ÔH\Ñ ]Ô ]€CØ ðJˆvðJ؈Ð4°tÑ;¸UÀDÑIÔIÐIØ €JrcóÞ—|€|€|�|€td¦«‚|duo|du}|rt||¦« t|¦«}| ¦«}| ¦«|rt ¦«|S#t tf$r_}|rt ¦«td|zdzt|¦«ztd|¦«|s‚tj d¦«Yd}~dSd}~wwxYw)z read file not following symlinksNzEread_file_secure: uid and gid should be both null or be both not nullzError: failed to read ú : é) r„Ú set_user_permr�Ú readlinesr�Ú set_root_permrqÚIOErrorÚloggingÚstrÚ SILENT_FLAGÚsysÚexit) Úfilenamer=r>Ú exit_on_errorÚ write_logÚ drop_permÚ file_objectÚcontentÚes rÚread_file_securer©ss€à ˆ ˜˜¨S¨_ÀÀÝÐbÑcÔcÐcà˜D�Ð7 s°$ €IØð Ý�c˜3ÑÔÐð Ý+¨HÑ5Ô5ˆ Ø×'Ò'Ñ)Ô)ˆØ×ÒÑÔÐØ ð Ý ‰OŒOˆO؈øÝ •WÐ ðððØ ð Ý ‰OŒOˆOÝÐ(¨8Ñ3°eÑ;½cÀ!¹f¼fÑDÅkÐSTÐV_Ñ`Ô`Ð`Øð Ø Ý Œ�‰ Œ ˆ ˆ ˆ ˆ ˆ ˆ ˆ øøøøð øøøs³AA<Á<C, AC'Ã'C,é¤c óT—tj |¦«}|rt||¦«d}d} t jd|¬¦«\}} tj|d¦«} |  d |¦«¦«|s$|�"|� t|||¦«rtd¦«‚t||¦«rtd¦«‚|   ¦«�n+#ttf$rË} |   ¦«n#t$rYnwxYw tj |¦«n#t$rYnwxYw tj| ¦«n#t$rYnwxYw|rt!¦«t#d|›d t%| ¦« d d ¦«›�t(d |¦«Yd} ~ d Sd} ~ wt$rD} t#dt%| ¦«›�t(d ¦«t+jd ¦«Yd} ~ nd} ~ wwxYwd} tj| |¦«nl#t$r_} d } t#d|zd zt%| ¦«zt(d |¦« tj| ¦«n#t$rYnwxYwYd} ~ nd} ~ wwxYw|rt!¦«| S)z!Returns True if error has occuredNÚcagefs_)ÚprefixrfÚwÚz fchown failedz fchmod failedzError: failed to write file r—ÚErrnozErr coder˜TzError: Fz$Error: failed to rename tempfile to )rzrOÚdirnamer™ÚtempfileÚmkstemprBÚwriteÚjoinr$rqr'r�rœÚ ExceptionÚunlinkr›r�ržÚreplacerŸr r¡Úrename) r§Úini_pathr=r>r¥rYr¤Údirpathr<Ú temp_pathr¦r¨Úerrors rÚwrite_file_securer¾Œs0€åŒg�oŠo˜hÑ'Ô'€Gàð Ý�c˜3ÑÔÐà €BØ€Ið"Ý Ô(° ¸wÐGÑGÔG‰ ˆˆIÝ”i  CÑ(Ô(ˆ Ø×Ò˜"Ÿ'š' 'Ñ*Ô*Ñ+Ô+Ð+Øð /˜S˜_°°Ý�b˜#˜sÑ#Ô#ð /ݘoÑ.Ô.Ð.Ý �"�dÑ Ô ð +ݘ/Ñ*Ô*Ð *Ø×ÒÑÔÐÑøÝ •WÐ ðððð Ø × Ò Ñ Ô Ð Ð øÝð ð ð Ø ˆDð øøøð Ý ŒH�R‰LŒLˆLˆLøÝð ð ð Ø ˆDð øøøð Ý ŒI�iÑ Ô Ð Ð øÝð ð ð Ø ˆDð øøøà ð Ý ‰OŒOˆOÝØ ]¨8Ð ]Ð ]½¸A¹¼¿ºÀwÐPZÑ8[Ô8[Ð ]Ð ]Ý Ø Ø ñ  ô ð ð ˆtˆtˆtˆtˆtøøøøÝ ðððÝÐ"�#˜a™&œ&Ð"Ð"¥K°Ñ3Ô3Ð3Ý Œ�‰ Œ ˆ ˆ ˆ ˆ ˆ ˆ øøøøðøøøð €EðÝ Œ �)˜XÑ&Ô&Ð&Ð&øÝ ððð؈ÝÐ6¸ÑAÀEÑIÍCÐPQÉFÌFÑRÕT_ÐabÐdmÑnÔnÐnð Ý ŒI�iÑ Ô Ð Ð øÝð ð ð Ø ˆDð øøøøøøøøøøøøð øøøðð݉Œˆà €LsÇ·B/C(Ã(HÃ:DÄF?Ä DÄF?ÄDÄF?Ä D5Ä4F?Ä5 EÄ?F?ÅEÅF?ÅEÅF?Å E(Å%F?Å'E(Å(AF?Æ? HÇ :H È HÈH,È, JÈ6/JÉ&I;É:JÉ; JÊJÊJÊJÊJr¯Ú copy_ownercó²—|�%tj¦«}t|dd¬¦«tj |¦«}d\} } t j|||¬¦«\} } tj| dd¬ ¦«5} |  |¦«ddd¦«n #1swxYwYnu#ttf$ra| �| €‚ tj | ¦«n#ttf$rYnwxYw tj | ¦«n#ttf$rYnwxYw‚wxYw tj | |¦«|rStj |¦«r4tj|¦«} tj| | j| j¦«tj| |¦«nI#ttt(f$r/ tj | ¦«n#ttf$rYnwxYw‚wxYw|�htj¦«} tj| ¦«tjtj¦«¦«| d krtj|¦«dSdSdS) a¯ Safely write string content to a file :param content: str :param dest_path: str -> path to a file :param perm: int -> permissions for the file :param prefix: str -> add to temporary file name :param suffix: str -> add to temporary file name :param as_user: str -> name of the user to drop privileges to :param copy_owner: bool -> whether to copy original uid/gid to new file if original exists NTF)Úeffective_or_realÚset_env©NN)r­Úsuffixrfr®Úsurrogateescape)Úerrorsr)rzÚ getgroupsrrOr±r²r³rBr´rœrqr�r·ÚchmodÚisfileÚstatÚchownÚst_uidÚst_gidr¹Ú TypeErrorÚgetuidÚseteuidÚsetegidÚgetgidÚ setgroups)r§Ú dest_pathrYr­rÄÚas_userr¿Ú old_groupsr»r<r¼Úf_tempÚstat_Úruids rÚwrite_file_via_tempfilerÚÊsÉ€ðÐÝ”\‘^”^ˆ ݘW¸ÀeÐLÑLÔLÐLåŒg�oŠo˜iÑ(Ô(€GØ�M€Bˆ ðÝ Ô(Ø f°'ð;ñ;ô;‰ ˆˆIå ŒY�r˜3Ð'8Ð 9Ñ 9Ô 9ð "¸VØ �LŠL˜Ñ !Ô !Ð !ð "ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "øøå •WÐ ð ð ð Ø ˆ:˜Ð*Ø ð Ý ŒH�R‰LŒLˆLˆLøÝ�Ð!ð ð ð Ø ˆDð øøøð Ý ŒI�iÑ Ô Ð Ð øÝ�Ð!ð ð ð Ø ˆDð øøøà ð øøøð Ý Œ�˜DÑ!Ô!Ð!Ø ð <�"œ'Ÿ.š.¨Ñ3Ô3ð <Ý”G˜IÑ&Ô&ˆEÝ ŒH�Y ¤ ¨e¬lÑ ;Ô ;Ð ;Ý Œ �)˜YÑ'Ô'Ð'Ð'øÝ •W�iÐ (ðððð Ý ŒI�iÑ Ô Ð Ð øÝ�Ð!ð ð ð Ø ˆDð øøøà ð øøøðÐÝŒy‰{Œ{ˆÝ Œ �4ÑÔÐÝ Œ •2”9‘;”;ÑÔÐà �1Š9ˆ9Ý ŒL˜Ñ $Ô $Ð $Ð $Ð $ð Ðð ˆ9s©Á 1B,Á>B  B, B$Â$B,Â'B$Â(B,Â,DÃCÃDÃC,Ã)DÃ+C,Ã,DÃ0DÄDÄDÄDÄDÄDÄ"A?F"Æ"G(Æ:GÇG(ÇG#Ç G(Ç"G#Ç#G(cóD— tj|¦«ng#tf$rY}|rGtdt |¦«zdzt |¦«z¦«t jd¦«nYd}~dSYd}~nd}~wwxYwt||¦«} tj|¦«nS#tf$rE}|r3td|t |¦«¦«t jd¦«nYd}~dSYd}~nd}~wwxYw tj |¦«ng#tf$rY}|rGtdt |¦«zdzt |¦«z¦«t jd¦«nYd}~dSYd}~nd}~wwxYw|dkrda dSt¦«  ¦«d a dS) Nzfailed to set egid to z: r˜rMz'failed to set supplementary groups to :zfailed to set euid to rTF) rzrÑrqÚ print_errorržr r¡Ú get_groupsrÓrÐÚ root_flagrrl)r=r>r¡r¨Úgroupss rr™r™së€ðÝ Œ �3‰ŒˆˆøÝ ˆ:ðððØ ð Ý Ð0µ3°s±8´8Ñ;¸dÑBÅSÈÁVÄVÑKÑ LÔ LÐ LÝ ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøõ˜˜SÑ !Ô !€FðÝ Œ �VÑÔÐÐøÝ ˆ:ðððØ ð Ý ÐAÀ6Í3ÈqÉ6Ì6Ñ RÔ RÐ RÝ ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøðÝ Œ �3‰ŒˆˆøÝ ˆ:ðððØ ð Ý Ð0µ3°s±8´8Ñ;¸dÑBÅSÈÁVÄVÑKÑ LÔ LÐ LÝ ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøð ˆa‚x€x؈ ˆ ˆ õ ‰Œ×.Ò.Ñ0Ô0Ð0؈ ˆ ˆ sF‚— A;¢A A6Á6A;ÂB$Â$ C4Â/5C/Ã/C4Ã8D Ä E1ÄA E,Å,E1cóœ— tjd¦«nR#tf$rD}|r2tdt |¦«¦«t jd¦«nYd}~dSYd}~nd}~wwxYw tjd¦«nR#tf$rD}|r2tdt |¦«¦«t jd¦«nYd}~dSYd}~nd}~wwxYwtdd¦«} tj |¦«nS#tf$rE}|r3td|t |¦«¦«t jd¦«nYd}~dSYd}~nd}~wwxYwda dS)Nrzfailed to set euid to 0 :r˜rMz Error: failed to set egid to 0 :z.Error: failed to set supplementary groups to :T) rzrÐrqrÜržr r¡rÑrÝrÓrÞ)r¡r¨rßs rr›r›+sŸ€ðÝ Œ �1‰ Œ ˆ ˆ øÝ ˆ:ðððØ ð Ý Ð3µS¸±V´VÑ <Ô <Ð <Ý ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøðÝ Œ �1‰ Œ ˆ ˆ øÝ ˆ:ðððØ ð Ý Ð:½CÀ¹F¼FÑ CÔ CÐ CÝ ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøõ˜˜1Ñ Ô €FðÝ Œ �VÑÔÐÐøÝ ˆ:ðððØ ð Ý ÐHÈ&ÕRUÐVWÑRXÔRXÑ YÔ YÐ YÝ ŒH�Q‰KŒKˆKˆKà�2�2�2�2�2ð ˆKˆKˆKˆKøøøøðøøøð€I€I€IsD‚— A&¢4A!Á!A&Á*A?Á? C 4C à CÃ"C7Ã7 EÄ5EÅEcó´—tddtj¬¦«|D]}t|dtj¬¦«Œttj¬¦«dS)NzError:ú )ÚendÚfile)rä)Úprintr Ústderr)ÚargsÚas rrÜrÜMs[€Ý ˆ(˜¥#¤*Ð-Ñ-Ô-Ð-Ø ð+ð+ˆÝ ˆa�S�sœzÐ*Ñ*Ô*Ð*Ð*Ý �sŒzÐÑÔÐÐÐrcóV—t¦«}t¦«}t¦«}|D]Y}||j}|D]G} ||j}n#t $rYŒwxYw||kr | ||j¦«ŒHŒZ| |¦«t|¦«S)z$Returns supplementary groups for uid) Ú get_grp_dictÚ get_pwd_dictÚsetÚgr_memÚpw_uidÚKeyErrorÚaddÚgr_gidÚlist) r=r>ÚgrÚpwrßÚgroupÚmembersÚuserÚ member_uids rrÝrÝTsÀ€å ‰Œ€BÝ ‰Œ€BÝ ‰UŒU€FØð-ð-ˆØ�U”)Ô"ˆØð -ð -ˆDð Ø œXœ_� � øÝð ð ð Ø�ð øøøà˜SÒ Ð Ø— ’ ˜2˜eœ9Ô+Ñ,Ô,Ð,øð  -ð ‡J‚Jˆs�O„O€OÝ �‰<Œ<ÐsÁ AÁ AÁAcóp—t€)iatj¦«}|D]}|t|j<ŒtSr;)Úgrp_dictÚgrpÚgetgrallÚgr_name)róÚlines rrêrêis;€åÐØˆÝ Œ\‰^Œ^ˆØð *ð *ˆDØ%)�H�T”\Ñ "Ð "Ý €Or)Úmin_uidcó4—t ¦«Sr;)ÚclpwdÚ get_user_dictrrrrërëvs€Ý × Ò Ñ Ô Ð rcóX—|s|rt|¦«|�rt}tst¦«\}}t¦« t€>t jd¦«}ttdd¦«at j|¦«t  |¦«t  d¦«nU#ttf$rA}tdtt|¦«¦«tjd¦«Yd}~nd}~wwxYw|st!||¦«dSdSdS)Nér®r˜ú z writing to )rårÞÚget_permr›Úlog_filerzÚumaskr{ÚLOGFILEr´rqrœrÜržr r¡r™) ÚmsgÚsilentÚverboser¤Úroot_flag_savedr=r>Ú umask_savedr¨s rr�r�}s/€à ðØ ð Ý �#‰JŒJˆJàñ$Ý#ˆÝð Ý‘z”z‰HˆC�Ý ‰OŒOˆOð ÝÐÝ œh t™nœn� 奨¨aÑ0Ô0�Ý”˜Ñ%Ô%Ð%Ý �NŠN˜3Ñ Ô Ð Ý �NŠN˜4Ñ Ô Ð Ð øÝ�Ð!ð ð ð Ý ˜ ¥wµ°A±´Ñ 7Ô 7Ð 7Ý ŒH�Q‰KŒKˆKˆKˆKˆKˆKˆKøøøøð øøøðð $Ý ˜#˜sÑ #Ô #Ð #Ð #Ð #ð#$ð$ð  $ð $sÁA9B?Â?DÃ7D Ä Dcóì— tj¦«}tj¦«}nI#tf$r;}t dt |¦«¦«t jd¦«Yd}~nd}~wwxYw||fS)Nzfailed to get (euid,egid)r˜)rzÚgeteuidÚgetegidrqrÜržr r¡)r=r>r¨s rrr—sy€ðÝŒj‰lŒlˆÝŒj‰lŒlˆˆøÝ ˆ:ðððÝÐ/µ°Q±´Ñ8Ô8Ð8Ý Œ�‰ Œ ˆ ˆ ˆ ˆ ˆ ˆ øøøøðøøøð �ˆ8€Os‚&)© A/´1A*Á*A/có†—|r t¦« ¦«nt¦« ¦«S)z¡ Set CAP_SYS_RESOURCE capability :param bool clear: Set on if it's true, set off otherwise :return: 0 for success, -1 otherwise :rtype: int )rrnrl)Úclears rÚset_capabilityr¡s9€ð9>ð 6�<‰>Œ>× 2Ò 2Ñ 4Ô 4Ð 4Ý ‰^Œ^× 3Ò 3Ñ 5Ô 5ð6rcóF—tj|¦«t¦«S)a Change effective uid of current process and set CAP_SYS_RESOURCE capbality to prevent "Disk quota exceeded" error :param int euid: User ID to set it as current effective UID :return: 0 if capability was set successfuly, -1 otherwise :rtype: int )rzrÐr)r=s rÚ change_uidr­s€õ„Jˆs�O„O€OÝ Ñ Ô ÐrcóŽ—|s"t¦« ¦«dSt¦« ¦«dS)zZ Disable quota kernel check to allow us to write more than user can by quota. N)rrlrn©Úenableds rÚ_set_quota_checks_statusrºsD€ð ð2݉Œ×.Ò.Ñ0Ô0Ð0Ð0Ð0剌×/Ò/Ñ1Ô1Ð1Ð1Ð1rc#ó~K—td¬¦« dV—td¬¦«dS#td¬¦«wxYw)NFrT)rrrrÚ disable_quotarÅsTèè€å UÐ+Ñ+Ô+Ð+ð/Ø ˆˆˆå ¨Ð.Ñ.Ô.Ð.Ð.Ð.øÕ ¨Ð.Ñ.Ô.Ð.Ð.øøøs”*ª<c#ó–K—tj|¦«} dV—tj|¦«dS#tj|¦«wxYwr;)rzr)Ú umask_valueÚ saved_umasks rÚ set_umaskr ÎsOèè€å”(˜;Ñ'Ô'€KðØ ˆˆˆå Œ�ÑÔÐÐÐø�Œ�ÑÔÐÐøøøs ˜2²ArÃr;)NNTT)TrªT)r¯r¯NF)T)FTT)F)Orûr r²Ú contextlibrzÚ functoolsrÚtypingrÚctypesrrrrr r r r r rÚclcommonrÚclcommon.clpwdrrr rrr7r8r.r*r$r'rBr)r+r,rJrrrtrTrWrcrhrÞr ÚMIN_UIDrŸrQr�r‹rrrZr\r^r`r©r¾ÚboolrÚr™r›rÜrÝrúrêrrërr�rrrrÚcontextmanagerrr rrrúr*sÈðð € € € Ø € € € Ø€€€ØÐÐÐØ € € € ØÐÐÐÐÐØ Ð Ð Ð Ð Ð ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ð/ðÐÐÐÐÐØ/Ð/Ð/Ð/Ð/Ð/ðGðGðGð1ð1ð1ð  €�4ÐÑÔððñÔðð>ðØ ˆ:‰<Œ<€Dð €Ø€ðððððˆyñôððˆW�XÑ Ô € ð-ð-ð-ð)ð)ð)ð#ð#ð#ð&ð&ð&ð(ð(ð(ð'ð'ð'ð"ð"ð"ð"ð"ñ"ô"ð"ðL €�4ÐÑÔðPðPñÔðPðfðØ ˆ\‰^Œ^€Fð>ð>ð>ð(ð(ð(ð?ð?ð?ð<ð<ð<ð1ð1ð1ð € à &€à €à€ ð6ð6ð6ð2ð2ð2ðððð8ððð ð ð ð ð ð ð ð ð ð ð ð ððððððððð2;ð;ð;ð;ð~Z_ð7%ð7%ØRVð7%ð7%ð7%ð7%ðt$ð$ð$ð$ðNððððDðððððð$ €ðððð ˆ�gÐÑÔ€ð!ð!ð!ð €ð$ð$ð$ð$ð4ððð 6ð 6ð 6ð 6ð ð ð ð2ð2ð2ð Ôð/ð/ñÔð/ð ÔððñÔðððr