grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ¾ÃyeÄ“ã @stddlZddlZddlZddlmZddlmZddlZddlZddl Z ddl Z ddl m Z ddl mZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZd ZzFddl Z iZ!ej"d krìde!d<e j#efddie!¤ddi¤ŽZ$e$j Z%WnJzddl&Z&e'e&j(d<Wn&e)�yVddl*Z*e+e*j(d<Yn0Yn0dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7d Z8d!Z9d"Z:d#Z;d$Ze%d=ƒe>d><e%d?ƒe>d@<e%dAƒe>dB<e%dCƒe>dD<e%dEƒe>dF<e%dGƒe>dH<e%dIƒe>dJ<e%dKƒe>dL<iZ?d>e?dM<d@e?dN<dBe?dO<dDe?dP<dFe?dQ<dHe?dR<dJe?dS<dLe?dT<da@daAdaBdaCdaDgaEdaFdaGdaHdaIdaJdaKdaLdaMdaNdaOdaPdaQdaRdaSdaTdaUdaVdaWdaXdUdV„ZYdÝdXdY„ZZdZd[„Z[d\d]„Z\d^d_„Z]d`da„Z^dÞdbdc„Z_ddde„Z`dßdfdg„Zadhdi„Zbdjdk„Zcdldm„Zddndo„Zedpdq„Zfdrds„Zgdtdu„Zhgfdvdw„Zigfdxdy„Zjdzd{„Zke l¡fd|d}„Zme l¡fd~d„Zne l¡fd€d�„Zoe l¡fd‚dƒ„Zpd„d…„Zqd†d‡„Zrdˆd‰„ZsdŠd‹„ZtdŒd�„ZudŽd�„Zvd�d‘„Zwd’d“„Zxd”d•„Zyd–d—„Zzd˜d™„Z{dšd›„Z|dœd�„Z}dždŸ„Z~d d¡„Zd¢d£„Z€d¤d¥„Z�d¦d§„Z‚d¨d©„Zƒdªd«„Z„d¬d­„Z…d®d¯„Z†d°d±„Z‡d²d³„Zˆd´dµ„Z‰d¶d·„ZŠd¸d¹„Z‹dºd»„ZŒd¼d½„Z�e�fd¾d¿„ZŽdÀdÁ„Z�dÂdÄZ�dÄdÅ„Z‘dÆdÇ„Z’dÈdÉ„Z“dÊdË„Z”dÌdÍ„Z•dÎdÏ„Z–dàdÑdÒ„Z—dádÓdÔ„Z˜dÕdÖ„Z™d×dØ„ZšdÙdÚ„Z›dÛdÜ„ZœdS)âéN)Ú BoolQuery)Ú PortconQuery)Ú SELinuxPolicy)Ú ObjClassQuery)Ú RBACRuleQuery)Ú RoleQuery)Ú TERuleQuery)ÚTypeAttributeQuery)Ú TypeQuery)Ú UserQueryzselinux-python)éTÚunicodeÚ localedirz/usr/share/localeÚfallbackÚ_éér ééééÚallowZ auditallowZ neverallowZ dontauditÚsourceÚtargetÚpermlistÚclassZ transitionZ role_allowZetc_tz/etcZtmp_tz/tmpZ unit_file_tz/usr/lib/systemd/systemz/lib/systemd/systemz/etc/systemd/systemZ var_cache_tz /var/cacheZ var_lib_tz/var/libZlog_tz/var/logZ var_run_tz/var/runz/runZ var_lock_tz /run/lockz /var/run/lockZ var_spool_tz /var/spoolZ content_tz/var/wwwz all filesÚaz regular fileÚfZ directoryÚdzcharacter deviceÚcz block deviceÚbz socket fileÚsz symbolic linkÚlz named pipeÚpÚz--z-dz-cz-bz-sz-lz-pcCs>| dd¡d}zt|ƒ|fWSty8d|fYS0dS)Nz/policy.rr)ÚrsplitÚintÚ ValueError)Z policy_pathÚ extension©r)ú5/usr/lib/python3.9/site-packages/sepolicy/__init__.pyÚpolicy_sortkey„s  r+ú/cCsNz0|t ¡}t d|¡}|jtd�|dWSYn0ttdƒƒ‚dS)Nz%s.*©ÚkeyéÿÿÿÿzNo SELinux Policy installed)ÚselinuxZselinux_binary_policy_pathÚglobÚsortr+r'r)ÚrootÚpathÚpoliciesr)r)r*Úget_installed_policy�s   r6cCs2t dt ¡|f¡}|sdS|jtd�|dS)z?Get the path to the policy file located in the given store namez%s%s/policy/policy.*Nr-r/)r1r0Z selinux_pathr2r+)Ústorer5r)r)r*Úget_store_policy—s ÿ r8cCsRdadadadadadadadadaz t |ƒa Wnt t dƒ|ƒ‚Yn0dS)NzFailed to read %s policy file) Ú all_domainsÚall_attributesÚboolsÚ all_typesÚ role_allowsZusersÚrolesÚ file_typesÚ port_typesrÚ_polr'r©Ú policy_filer)r)r*Úpolicy¡s  rDcCst|ƒ}|sdSt|ƒdS©N)r8rD)r7rCr)r)r*Úload_store_policy»srFcCstƒ}t|ƒdSrE)r6rDrBr)r)r*Ú init_policyÁsrGcCsþts tƒ|tkrbttƒ}||_t| ¡ƒ}|rTt|ƒdkrTd|_||_t| ¡ƒ}dd„|DƒS|t krŽt tƒ}|r|||_dd„| ¡DƒS|t krºt tƒ}|r¨||_dd„| ¡DƒS|t k�rHttƒ}|�rdd„| d¡Dƒ}t|ƒd k�rü||_n t|ƒdk�r|d |d f|_tj�r6d d„| ¡DƒSd d„| ¡DƒS|tk�r’ttƒ}|�rf||_tj�r€d d„| ¡DƒSdd„| ¡DƒS|tk�rÂttƒ}|�r°||_dd„| ¡DƒS|tk�ròttƒ}|�rà||_dd„| ¡DƒStdƒ‚dS)Nrc ssB|]:}ttt| ¡ƒƒt|ƒt|jƒttt| ¡ƒƒdœVqdS))ÚaliasesÚnameZ permissiveÚ attributesN)ÚlistÚmapÚstrrHÚboolZ ispermissiverJ©Ú.0Úxr)r)r*Ú Õs üüzinfo..css:|]2}t|ƒttt| ¡ƒƒttt| ¡ƒƒdœVqdS))rIr>ÚtypesN)rMrKrLÚexpandrSrOr)r)r*rRás ýýcss*|]"}t|ƒttt| ¡ƒƒdœVqdS))rIrSN)rMrKrLrTrOr)r)r*rRìsþþcSsg|] }t|ƒ‘qSr))r&)rPÚir)r)r*Ú ôózinfo..ú-rrcss<|]4}|jjt|jƒt|jjƒt|jjƒ|jjdœVqdS))ÚhighÚprotocolÚrangeÚtypeÚlowN)ÚportsrYrMrZÚcontextZrange_Útype_r]rOr)r)r*rRûsû  ûcss2|]*}|jjt|jƒt|jjƒ|jjdœVqdS))rYrZr\r]N)r^rYrMrZr_r`r]rOr)r)r*rRs ü ücss8|]0}t|jƒt|ƒttt|jƒƒt|jƒdœVqdS))r[rIr>ÚlevelN)rMZ mls_rangerKrLr>Z mls_levelrOr)r)r*rRs üücss(|] }t|ƒttt|jƒƒdœVqdS))rIr>N)rMrKrLr>rOr)r)r*rRsþþcss|]}t|ƒ|jdœVqdS))rIÚstateN©rMrbrOr)r)r*rRsþþcss"|]}t|ƒt|jƒdœVqdS))rIrN)rMrKÚpermsrOr)r)r*rR)sþþz Invalid type)rArGÚTYPEr rIrKÚresultsÚlenÚaliasÚROLErÚ ATTRIBUTEr ÚPORTrÚsplitr^ÚmlsÚUSERr ÚBOOLEANrÚTCLASSrr')ÚsetyperIÚqrfr^r)r)r*ÚinfoÅsˆ  ûüý úû ûý ý ýrscCsTt|jƒt|jƒt|jƒt|jƒdœ}z.ÚbooleansÚ conditionalÚfilename)rMÚruletyperrÚtclassrwrvrbZevaluateZconditional_blockÚAttributeErrorrKrLrdÚdefaultrx)ZrulerZ boolstateÚbooleanrtr)r)r*Ú_setools_rule_to_dict2sDü     r~c CsÒts tƒ|si}tttttttgƒ}|D]}||vr*t dd  |¡ƒ‚q*d}t |vrbt |t ƒ}d}t |vrzt |t ƒ}d}t|vr˜t |tƒ d¡}g}g}t|vr²| t¡t|vrÄ| t¡t|vrÖ| t¡t|vrè| t¡t|ƒdk�r2tt||||d�} t|v�r|t| _|dd„|  ¡Dƒ7}t|v�r€gd¢} tt| |||d�} t|v�rj|t| _|d d„|  ¡Dƒ7}t|v�rÎd g} tt| |||d�} |  ¡D]"} | t | jƒt | jƒd œ¡�qª|S) NzType has to be in %sú ú,r)ryrrrzcSsg|] }t|ƒ‘qSr)©r~rOr)r)r*rV‘rWzsearch..)Útype_transitionZ type_changeZ type_membercSsg|] }t|ƒ‘qSr)r�rOr)r)r*rVžrWr)rr)rArGÚsetÚALLOWÚ AUDITALLOWÚ NEVERALLOWÚ DONTAUDITÚ TRANSITIONÚ ROLE_ALLOWr'ÚjoinÚSOURCErMÚTARGETÚCLASSrlÚappendrgrÚPERMSrdrfrrr) rSZseinfoZ valid_typesrqrrrzZtoretZtertypesrrZrtypesZratypesÚrr)r)r*Úsearchdsz      ü   ü   ü  ÿ r‘csi}g}ˆg‰ˆg‰z(ˆtt‡fdd„tƒƒƒdd7‰Wn Yn0z(ˆtt‡fdd„tƒƒƒdd7‰Wn Yn0tdd„t‡‡‡fdd„tƒƒƒ}zD|D]:}| |d|d |d fd œ¡||vr¨| |¡i}q¨Wnt�yþ|YS0|S) Ncs |dˆkS©NrIr)©rQ)Úsrcr)r*Ú¶rWz"get_conditionals..rrJcs |dˆkSr’r)r“)Údestr)r*r•ºrWcSs|SrEr))Úyr)r)r*r•½rWcs2|dˆvo0|dˆvo0tˆƒ |t¡o0d|vS)Nrrrw)rƒÚissubsetr�r“)Ú dest_listÚpermÚsrc_listr)r*r•½s   ÿþrrwrt)rrw)rKÚfilterÚget_all_types_inforLÚget_all_allow_rulesÚupdaterŽÚKeyError)r”r–rzršZtdictZtlistZallowsrUr))r–r™ršr”r›r*Úget_conditionals¯s0((û    r¡cCsFd}|D]}|ddrd}q"qtdƒ|d ttdd„|ƒƒ¡fS) NFrwrTz-- Allowed %s [ %s ]z || cSsd|dd|ddfS)Nz%s=%drwrrr)r“r)r)r*r•×rWz.get_conditionals_format_text..)rrŠrƒrL)ZcondrtrQr)r)r*Úget_conditionals_format_textÐs  r¢cCsttt|ƒƒddS)NrrS)rKrsrj)Z attributer)r)r*Úget_types_from_attributeÚsr£c Cs€g}i}tƒD]}| t|ƒ¡r| |¡qtƒ}|D]D}z$||dt||df||<Wq6tyxg||<Yq60q6|S©NÚregexÚftype)Úget_all_file_typesÚ startswithÚgen_short_namerŽÚ get_fcdictÚ file_type_strr )rqÚflistÚmpathsrÚfcdictr)r)r*Úget_file_typesÞs  $ r¯c Cs<|s|Szttt|ƒƒdWSttfy6|YS0dS)z¼Return the real name of a type * If 'name' refers to a type alias, return the corresponding type name. * Otherwise return the original name (even if the type does not exist). rIN)ÚnextrsreÚ RuntimeErrorÚ StopIteration©rIr)r)r*Úget_real_type_nameís r´c Cs.tƒ}g}i}ttg|ddgddœƒ}|dus:t|ƒdkr>|Stƒ}ddg}|D]Œ}|d|vrbqPd |vrt|d stqP|d d ¡r¸|d|vr�qP|d|vrÜ|d|krÜ| |d¡qPt|dƒD]}||vrÄ| |¡qÄqP|D]F} z$|| d t|| d f|| <Wqât �y&g|| <Yqâ0qâ|S) NÚopenÚwriteÚfile)rrrrZ proc_typeZ sysctl_typerrtÚ_tr¥r¦) r§r‘r„rgrªÚendswithrŽr£r«r ) rqr?Z all_writesr­rr®rJrUÚtrr)r)r*Úget_writable_filesûs:    $r»csêtj |¡r|gSzt d|¡‰Wntd|ƒgYS0|}| d¡r^|dd…d}tj |¡‰zˆddkr€ˆd7‰WntyœtdƒYn0z6t d|¡‰‡fdd „t ‡fd d „t  ˆ¡ƒDƒWSgYS0dS) Nz%s$zbad reg:z(/.*)?iúÿÿÿr,r/ztry failed got an IndexErrorcsg|]}ˆ |¡r|‘qSr))ÚmatchrO)Úpatr)r*rV5rWzfind_file..csˆ|SrEr)r“)r4r)r*r•5rWzfind_file..) Úosr4ÚexistsÚreÚcompileÚprintr¹ÚdirnameÚ IndexErrorrLÚlistdir)Zregr#r))r½r4r*Ú find_files*        (rÆcCsVt|ƒ}| ¡D]@}| d¡r||vr||D] }t|ƒD]}|Sq.qdS)NÚ_exec_t)Úget_entrypointsÚkeysr¹rÆ)ÚdomainÚ exclude_listZexecutable_filesÚexer4rr)r)r*Úfind_all_files:s   rÍcCs`tƒ}zB| d¡rF||vrF||dD]}t|ƒD]}|WSq&WntyZYn0dS)NrÇr¥)rªr¹rÆr )rÌrËr®r4rr)r)r*Úfind_entrypoint_pathDs  rÎc Cs zht|dƒ�J}|D]4}| ¡}|r|d d¡s|d|dœ||d<qWdƒn1s\0YWn2tyš}z|jtjkr†‚WYd}~n d}~00|S)Nr�rú#r)ZequivÚmodify)rµrlr¨ÚOSErrorÚerrnoÚENOENT)ZedictÚfc_pathrÐÚfdÚerr)r)r*Úread_file_equivPs : r×cCs"trtSiatt|ddd�atS)Nz.subsT©rÐ)Úfile_equiv_modifiedrשrÔr)r)r*Úget_file_equiv_modified]s rÛcCs&trtSt|ƒatt|ddd�atS)Nz .subs_distFrØ)Ú file_equivrÛr×rÚr)r)r*Úget_file_equivfs rÝc CsêtrtSgaz:t|ddƒ�}| ¡}Wdƒn1s:0YWn6ty|}z|jtjkrd‚gWYd}~Sd}~00|D]b}| ¡}t|ƒdkrœq‚z4t|ƒdkr¸t|d}nd}t  |d|f¡Wq‚t yâYq‚0q‚tS)Nú.localr�rrrr) Ú local_filesrµÚ readlinesrÑrÒrÓrlrgÚtrans_file_type_strrŽr )rÔrÕÚfcrÖrUÚrecr¦r)r)r*Úget_local_file_pathsos,*    räc CsÆtrtSt|dƒ}| ¡}| ¡t|ddƒ}|| ¡7}| ¡iaz>t|ddƒ�}|| ¡7}Wdƒn1sz0YWn2ty¸}z|jtjkr¤‚WYd}~n d}~00|D]„}| ¡}zjt|ƒdkræt |d}nd}|d d¡d}|tv�rt|d   |d ¡n|d g|d œt|<Wq¾Yq¾0q¾d d gitd <d dgitd<d dgitd<d dgitd<d dgitd<d dgitd<d dgitd<d dgitd<d dgitd<tS)Nr�z .homedirsrÞrrrr/ú:r¥r)r¥r¦z all log filesZlogfilezall user tmp filesZ user_tmp_typezall user home filesZuser_home_typezall virtual image filesZvirt_image_typezBall files on file systems which do not support extended attributesZ noxattrfsz)all sandbox content in tmpfs file systemsZsandbox_tmpfs_typez&all user content in tmpfs file systemsZuser_tmpfs_typezall files on the systemÚ file_typezAuse this label for random content that will be shared using sambaZ samba_share_t) r®rµràÚcloserÑrÒrÓrlrgrárŽ)rÔrÕrârÖrUrãr¦rºr)r)r*rª‹sJ  .   rªc s<z ‡fdd„ttgddiƒDƒWSttfy6Yn0dS)Ncsg|]}|dˆkr|‘qS)rur)rO©rqr)r*rV»rWz(get_transitions_into..rÚprocess©r‘rˆÚ TypeErrorr{rèr)rèr*Úget_transitions_into¹s  rìc Cs0zttg|ddœƒWSttfy*Yn0dS)Nré©rrrêrèr)r)r*Úget_transitionsÁs rîc Cs8zdd„ttgd|iƒDƒWSttfy2Yn0dS)NcSsg|]}|ddkr|‘qS)rrér)rOr)r)r*rVËrWz(get_file_transitions..rrêrèr)r)r*Úget_file_transitionsÉs rïcCs\g}ttgd|iƒ}|D]>}d|vrz$|dD]}||vr.| |¡q.WqYq0q|S)Nrrv)r‘r„rŽ)rqr}Zboollistrr#r r)r)r*Úget_boolean_rulesÑs rðcCstdƒS)NZ entry_type)r£r)r)r)r*Úget_all_entrypointsßsrñcs.tttgˆdgdgd�}‡fdd„| ¡DƒS)Nr·Ú entrypoint)ryrrzrdcs g|]}|jˆkrt|jƒ‘qSr))rrMrrOrèr)r*rVérWz(get_entrypoint_types..)rrAr„rf)rqrrr)rèr*Úget_entrypoint_typesãsüróc sht |¡d d¡d‰z2tt‡fdd„ttgdddœƒƒƒ}|d d WSttt fybYn0dS) Nrrårcs |dˆkS)Nrr)r“©ròr)r*r•ïrWz$get_init_transtype..Úinit_trérírru) r0Z getfileconrlrKrœr‘rˆrër{rÄ)r4Ú entrypointsr)rôr*Úget_init_transtypeìs$r÷c Cs\ttdgddgd�}g}| ¡D]6}z|j|kr<| |j¡Wq tyTYq Yq 0q |S©Nr‚rõré)ryrrz)rrArfr|rŽrr{)rurrrörUr)r)r*Úget_init_entrypointösý    rùc Cs~ttdgddgd�}i}| ¡D]X}z.rõré)rrrr)rLr‘rˆrKrërÄ)ròrör)r)r*Úget_init_entrypoint_targets rûc Cs\tƒ}i}t|ƒD]D}z$||dt||df||<WqtyTg||<Yq0q|Sr¤)rªrór«r )rqr®r­rr)r)r*rÈ s $ rÈcCs†ttƒdkrtStƒt ¡}z4t|ƒ}t ¡}| |¡t |j  ¡ƒa|  ¡Wn&t j  d|¡t  d¡Yn0t ¡tS)Nrz#could not open interface info [%s] r)rgÚmethodsÚgen_interfacesÚdefaultsÚinterface_inforµÚ interfacesZ InterfaceSetZ from_filerKrÉrçÚsysÚstderrr¶Úexitr2)ÚfnrÕÚifsr)r)r*Ú get_methods+s   rcCstdurdd„ttƒDƒatS)NcSsg|] }|d‘qSr³r)rOr)r)r*rVCrWz!get_all_types..)r<rsrer)r)r)r*Ú get_all_types@srcCstdurtttƒƒatSrE)Úall_types_inforKrsrer)r)r)r*r�Fs r�cCs&tdur"ttttdƒƒddƒatS)NZ userdomainrrS)Ú user_typesrKrsrjr)r)r)r*Úget_user_typesLsr cCsttrtSiatttgd�}| ¡D]L}t|jƒ}t|jƒ}|dks"|dkrLq"|tvrdt| |¡q"|gt|<q"tS)N)ryZsystem_r) r=rrAr„rfrMrrrŽ)rrr�r”Ztgtr)r)r*Úget_all_role_allowsSs    r cCsvddl}g}ttƒƒ}|D]V}| dd|¡}t|ƒdkrt| dd|d¡ƒdkr|d|vr| |d¡q|S)Nrz(.*)%sz_exec_t$z_initrc$)rÀÚsortedrÚfindallrgrŽ)rÀr9rSrUÚmr)r)r*Úget_all_entrypoint_domainsgs  (rcCs¢zddlm}Wnty.ddlm}Yn0t ¡}t ¡}z"t |¡j t |¡j kr`WdSWnt ytYn0t  ¡dkrŽt t dƒƒ‚t|dƒdƒdS)Nr)ÚgetstatusoutputzEYou must regenerate interface info by running /usr/bin/sepolgen-ifgenz/usr/bin/sepolgen-ifgenr)ZcommandsrÚ ImportErrorÚ subprocessrþrÿÚheadersr¾ÚstatÚst_mtimerÑÚgetuidr'rrÂ)rZifilerr)r)r*rýss     rýcCsøtr ttfSiaiattƒD]Ò}|d|dkr>t|dƒ}ndt|dƒt|dƒf}|d|dftvrŠt|d|df |¡n|gt|d|df<d|vrÐ|d|dft|d|d|df<q|dt|d|d|df<qttfS)Nr]rYz%s-%sr\rZr[)ÚportrecsÚ portrecsbynumrsrkrMrŽ)rUÚportr)r)r*Ú gen_port_dict…s ( rcCs"tsttttdƒƒddƒatS)NrÊrrS)r9rKrsrjr)r)r)r*Úget_all_domainsŸsrcCs0trtStstƒttƒ}dd„| ¡DƒatS)NcSs g|]}t|ƒdkrt|ƒ‘qS)Zobject_r)rMrOr)r)r*rV°rWz!get_all_roles..)r>rArGrrf©rrr)r)r*Ú get_all_roles¦srcCs<ts8tttƒƒatjr8tD]}d |d d¡¡|d<qtS)Nr$r[r)Úselinux_user_listrKrsrnrArmrŠrlr“r)r)r*Úget_selinux_users´s  rc Cs�trtStt ¡dƒ}| ¡}| ¡ga| d¡D]V}| ¡}t|ƒdks4|  d¡rXq4| d¡}t  |d|dd  |dd…¡dœ¡q4tS) Nr�Ú rrÏrårr)rIZseuserrm) Úlogin_mappingsrµr0Zselinux_usersconf_pathÚreadrçrlÚstriprgr¨rŽrŠ)rÕÚbufr rQr)r)r*Úget_login_mappings¾s *r%cCsttdd„tƒƒƒS)NcSs|dSr’r)r“r)r)r*r•ÑrWzget_all_users..)r rLrr)r)r)r*Ú get_all_usersÐsr&cCs&trtSttttdƒƒddƒatS)NrærrS)r?rKr rsrjr)r)r)r*r§Ôsr§cCs&trtSttttdƒƒddƒatS)NZ port_typerrS)r@rKr rsrjr)r)r)r*Úget_all_port_typesÜsr'cCststttƒƒatSrE)r;rKrsror)r)r)r*Ú get_all_boolsäs r(cCsd |dt|ƒ … d¡¡S)Nrr)rŠrgrl)rZtrimr)r)r*Ú prettyprintësr)cCs|SrEr))rr)r)r*Úmarkupïsr*cCsVd||ƒ}| d¡r(|dt|dƒS| d¡rD|dt|dƒS| d¡r`|dt|dƒS| d¡r||d t|dƒS| d ¡r˜|d t|d ƒS| d ¡r´|d t|d ƒS| d ¡sÈ| d¡rÐ|dS| d¡râ|dS| d¡rþ|dt|dƒS| d¡�r|dt|dƒS| d¡�r:|dt|dƒS| d¡�rX|dt|dƒS| d¡�r~|d|dtdƒ …S| d¡�rœ|dt|dƒS| d¡�rº|dt|dƒS| d¡�rØ|dt|dƒS| d ¡�rö|dt|d ƒS| d!¡�r|d"t|d!ƒS| d#¡�r2|d$t|d#ƒS| d%¡�rP|d&t|d%ƒS| d'¡�rn|d(t|d'ƒS| d)¡�rŒ|d*t|d)ƒS| d+¡�rª|d$t|d+ƒS| d,¡�rÈ|d-t|d,ƒS| d.¡�ræ|d/t|d.ƒS| d0¡�r|d1t|d0ƒS| d2¡�r"|d3t|d2ƒS| d4¡�r@|d1t|d4ƒS| d5¡�r^|d1t|d5ƒS| d6¡�r||d1t|d6ƒS| d5¡�rš|d7t|d5ƒS| d8¡�r¸|d9t|d8ƒS| d:¡�rÖ|d;t|d:ƒS| d<¡�rô|d=t|d<ƒS| d>¡�r|d?t|d>ƒS| d@¡�r&|dAS| dB¡�rD|dCt|dBƒS|dDt|dEƒS)FNz+Set files with the %s type, if you want to Z _var_run_tz8store the %s files under the /run or /var/run directory.Z_pid_tz,store the %s files under the /run directory.Z _var_lib_tz0store the %s files under the /var/lib directory.Z_var_tz,store the %s files under the /var directory.Z _var_spool_tz2store the %s files under the /var/spool directory.Z_spool_tZ_cache_tZ _var_cache_tz/store the files under the /var/cache directory.Z _keytab_tz)treat the files as kerberos keytab files.Z_lock_tzEtreat the files as %s lock data, stored under the /var/lock directoryZ_log_tzKtreat the data as %s log data, usually stored under the /var/log directory.Z _config_tzRtreat the files as %s configuration data, usually stored under the /etc directory.Z_conf_trÇz,transition an executable to the %s_t domain.Z_cgi_content_tz"treat the files as %s cgi content.Z _rw_content_tz)treat the files as %s read/write content.Z_rw_tZ_write_tZ_db_tz'treat the files as %s database content.Z _ra_content_tz*treat the files as %s read/append content.Z_cert_tz'treat the files as %s certificate data.Z_key_tztreat the files as %s key data.Z _secret_tz"treat the files as %s secret data.Z_ra_tZ_ro_tz(treat the files as %s read/only content.Z _modules_tztreat the files as %s modules.Z _content_tztreat the files as %s content.Z_state_tz!treat the files as %s state data.Z_files_tZ_file_tZ_data_tztreat the data as %s content.Z_tmp_tz1store %s temporary files in the /tmp directories.Z_etc_tz'store %s files in the /etc directories.Z_home_tz+store %s files in the users home directory.Z_tmpfs_tz&store %s files on a tmpfs file system.Z _unit_file_tz#treat files as a systemd unit file.Z _htaccess_tz#treat the file as a %s access file.ztreat the files as %s data.r¸)r¹r)rg)rr*Ztxtr)r)r*Úget_descriptionós˜                                     r+cCs"tstttdd„ttƒƒƒƒatS)NcSs|dSr’r)r“r)r)r*r•SrWz$get_all_attributes..)r:rKr rLrsrjr)r)r)r*Úget_all_attributesPsr,cCs |D]}||tvrdSqdS)NFT)r�)Údictrdršr)r)r*Ú_dict_has_permsWs r.cCsptƒ}| d¡r&t|ƒ}|dd…}n|}|d|vrBtd|ƒ‚|ddkr`|dd…d}n|d}||fS)Nr¸éþÿÿÿzdomain %s_t does not existr/rr)rr¹r´r')rqr9Ú domainnameÚ short_namer)r)r*r©^s    r©cCststtgƒatSrE)Úall_allow_rulesr‘r„r)r)r)r*ržns ržcCs.ts*ttddttgd�}dd„| ¡DƒatS)Nz.*T)r}Z boolean_regexrycSsg|] }t|ƒ‘qSr)r�rOr)r)r*rVyrWz&get_all_bool_rules..)Úall_bool_rulesrrAr„r‡rfrr)r)r*Úget_all_bool_rulests ÿr4cCststttgƒƒatSrE)Úall_transitionsrKr‘rˆr)r)r)r*Úget_all_transitions|sr6c s g}g}tˆƒ\}}tdd„t‡fdd„tƒƒƒD]Î}|D]Ä}t|tƒsJq:zt |d¡}Wntyv|d}Yn0|d  |¡s”|d  |¡rÊ|d|f|vrþ|d| f|vrþ|  |d|f¡q:|d|f|vr:|d| f|vr:|  |d|f¡q:q2||fS)NcSs|dS)Nrvr)r“r)r)r*r•†rWzget_bools..csd|vo|dˆkS)Nrvrr)r“rèr)r*r•†rWrr) r©rLrœr4Ú isinstanceÚtupler0Zsecurity_get_boolean_activerÑr¨rŽ)rqr;Z domainboolsr0r1rUr rtr)rèr*Ú get_bools‚s" "  ""r9cCstst ¡datS)Nr)rvr0Zsecurity_get_boolean_namesr)r)r)r*Úget_all_booleans—s r:ú#/usr/share/selinux/devel/policy.xmlcCsNzt |¡}| ¡}| ¡Wn*tyHt|ƒ}| ¡}| ¡Yn0|SrE)Úgziprµr"rçÚIOError)r4rÕr$r)r)r*Ú policy_xmlžs   r>cCs¸trtSddl}ia�zˆ|jj t|ƒ¡}| d¡D�]}| d¡D]°}| d¡D]J}| d¡ d¡j  d¡}t   dd|¡}|  d ¡|  d ¡|ft|  d ¡<qR| d ¡D]J}| d¡ d¡j  d¡}t   dd|¡}|  d ¡|  d ¡|ft|  d ¡<q¨qD| d ¡D]F}| d¡ d¡j  d¡}t   dd|¡}d |  d ¡|ft|  d ¡<�qq4| d¡D]F}| d¡ d¡j  d¡}t   dd|¡}d |  d ¡|ft|  d ¡<�qTWnt �y²Yn0tS) NrZlayerÚmoduleZtunableÚdescr#r rrIZdftvalrNÚglobal)Ú booleans_dictZxml.etree.ElementTreeZetreeZ ElementTreeZ fromstringr>r ÚfindÚtextr#rÀÚsubÚgetr=)r4ZxmlZtreer"rr r@rUr)r)r*Ú gen_bool_dictªs6"$ "rGcCs*tƒ}||vrt||dƒStdƒSdS)NrÚunknown)rGr)r}rBr)r)r*Úboolean_categoryÉsrIcCsPtƒ}||vrt||dƒS| d¡}tdƒj|dd |dd…¡d�SdS)NrrzAllow {subject} to {rest}rrr)ZsubjectÚrest)rGrrlÚformatrŠ)r}rBr@r)r)r*Ú boolean_descÑs  rLc CsLddl}d}zddl}|jdd�}Wn"tttt|jfyFd}Yn0|S)Nrr$T)ZprettyZMisc)rÚdistrorIÚModuleNotFoundErrorrÑr=Ú UnicodeErrorZCalledProcessError)rZsystem_releaserMr)r)r*Úget_os_versionÚs rPcCsPdadadadadadadadadada da da da da da dadadadadSrE)r:r9r<rvrBr;r®r?rßrürrr@r=r>r r!rr)r)r)r*Úreinitæs&rQ)r,)N)N)r;)r;)�rÒr0r1Zsepolgen.defaultsrþZsepolgen.interfacesrrr¾rÀr<Zsetools.boolqueryrZsetools.portconqueryrZsetools.policyreprZsetools.objclassqueryrZsetools.rbacrulequeryrZsetools.rolequeryrZsetools.terulequeryrZsetools.typeattrqueryr Zsetools.typequeryr Zsetools.userqueryr ZPROGNAMEÚgettextÚkwargsÚ version_infoÚ translationrºrÚbuiltinsrMÚ__dict__rZ __builtin__r rerirjrkrnrorpr„r…r†r‡r‹rŒr�r�rˆr‰Z DEFAULT_DIRSr«rárArÙrÜrßr®rür<rr r=rrr9r>rr!r?r@r;r:rvrBr2r3r5r+r6r8rDrFrGrsr~r‘r¡r¢r£r¯r´r»rÆrÍrÎr×Zselinux_file_context_pathrÛrÝrärªrìrîrïrðrñrór÷rùrúrûrÈrrr�r r rrýrrrrr%r&r§r'r(r)r*r+r,r.r©ržr4r6r9r:r>rGrIrLrPrQr)r)r)r*Úsj              ÿþý            m2 K! $    .       ]