/usr/lib64/python2.6/site-packages/sepolgen
NameSizeModeActions
access.py116390644editdlrm
access.pyc126950644editdlrm
access.pyo126950644editdlrm
audit.py207060644editdlrm
audit.pyc205140644editdlrm
audit.pyo205140644editdlrm
classperms.py28010644editdlrm
classperms.pyc32000644editdlrm
classperms.pyo32000644editdlrm
defaults.py12870644editdlrm
defaults.pyc15160644editdlrm
defaults.pyo15160644editdlrm
interfaces.py165090644editdlrm
interfaces.pyc160510644editdlrm
interfaces.pyo160510644editdlrm
lex.py335860644editdlrm
lex.pyc201030644editdlrm
lex.pyo201030644editdlrm
matching.py86290644editdlrm
matching.pyc74860644editdlrm
matching.pyo74860644editdlrm
module.py72180644editdlrm
module.pyc85650644editdlrm
module.pyo85650644editdlrm
objectmodel.py65240644editdlrm
objectmodel.pyc47900644editdlrm
objectmodel.pyo47900644editdlrm
output.py50310644editdlrm
output.pyc45240644editdlrm
output.pyo45240644editdlrm
policygen.py144270644editdlrm
policygen.pyc140950644editdlrm
policygen.pyo140260644editdlrm
refparser.py290300644editdlrm
refparser.pyc344630644editdlrm
refparser.pyo344630644editdlrm
refpolicy.py264480644editdlrm
refpolicy.pyc442310644editdlrm
refpolicy.pyo442310644editdlrm
sepolgeni18n.py9120644editdlrm
sepolgeni18n.pyc4100644editdlrm
sepolgeni18n.pyo4100644editdlrm
util.py25730644editdlrm
util.pyc27220644editdlrm
util.pyo27220644editdlrm
yacc.py820750644editdlrm
yacc.pyc432200644editdlrm
yacc.pyo432200644editdlrm
__init__.py00644editdlrm
__init__.pyc1420644editdlrm
__init__.pyo1420644editdlrm
Edit: /usr/lib64/python2.6/site-packages/sepolgen/policygen.pyc (14095B)
Ñò Ô<*Xc @sÙdZddkZddkZddkZddkZddkZddkZddkZddki Z ddk TdZ dZ dZ ddd„ƒYZde d „Zd „Zd „Zd dd „ƒYZd„ZdS(s> classes and algorithms for the generation of SELinux policy. iÿÿÿÿN(t*iiitPolicyGeneratorcBsƒeZdZd d„Zd d d„Zed„Zed„Z d„Z d„Z dd„Z d „Z d „Zd „Zd „ZRS(s¤Generate a reference policy module from access vectors. PolicyGenerator generates a new reference policy module or updates an existing module based on requested access in the form of access vectors. It generates allow rules and optionally module require statements and reference policy interfaces. By default only allow rules are generated. The methods .set_gen_refpol and .set_gen_requires turns on interface generation and requires generation respectively. PolicyGenerator can also optionally add comments explaining why a particular access was allowed based on the audit messages that generated the access. The access vectors passed in must have the .audit_msgs field set correctly and .explain set to SHORT|LONG_EXPLANATION to enable this feature. The module created by PolicyGenerator can be passed to output.ModuleWriter to output a text representation. cCsTd|_t|_t|_|o ||_ntiƒ|_ t|_ d|_ dS(søInitialize a PolicyGenerator with an optional existing module. If the module paramater is not None then access will be added to the passed in module. Otherwise a new reference policy module will be created. N( tNonetifgentNO_EXPLANATIONtexplaintFalset gen_requirestmoduelt refpolicytModuletmodulet dontaudittdomains(tselfR ((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt__init__@s     cCs=|ot||ƒ|_t|_n d|_|iƒdS(s?Set whether reference policy interfaces are generated. To turn on interface generation pass in an interface set to use for interface generation. To turn off interface generation pass in None. If interface generation is enabled requires generation will also be enabled. N(tInterfaceGeneratorRtTrueRRt"_PolicyGenerator__set_module_style(Rtif_sett perm_maps((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytset_gen_refpolSs   cCs ||_dS(s&Set whether module requires are generated. Passing in true will turn on requires generation and False will disable generation. If requires generation is disabled interface generation will also be disabled and can only be re-enabled via .set_gen_refpol. N(R(Rtstatus((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytset_gen_requiresescCs ||_dS(s)Set whether access is explained. N(R(RR((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytset_gen_explainoscCs ||_dS(N(R (RR ((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytset_gen_dontaudittscCsA|io t}nt}x |iiƒD]}||_q*WdS(N(RRRR tmodule_declarationsR (RR tmod((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt__set_module_stylews   s1.0cCs‰d}x|iiƒD] }|}qW|p&tiƒ}|iiid|ƒn||_||_|i o t |_n t |_dS(s?Set the name of the module and optionally the version. iN( RR RR tModuleDeclarationtchildrentinserttnametversionRRR(RR R!tmR((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytset_module_names      cCs"|iot|iƒn|iS(N(RR (R((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt get_modules c Csxý|D]õ}ti|ƒ}|io|i|_nd|_|io+ttit |d|iƒƒƒ|_n|i t i jo|id7_n|i t ijo|id7_n|i t i jogt|iƒdjo/|idditd„|iƒƒ7_q:|id |id d 7_n|i t ijo"|id 7_|id 7_n|i t ijogd |ijoSd|ijpd|ijo/|ip!ttddƒd d|_ng}yðxetd„tt gh|it6|it6|it6ƒƒD]'}||ijo|i|ƒq#q#Wt|ƒdjo/|id|i|idi|ƒf7_nCt|ƒdjo/|id|i|idi|ƒf7_nWqáqáXqåqén|ii i|ƒqWdS(Ntt verbositys0 #!!!! This avc is allowed in the current policys: #!!!! This avc has a dontaudit rule in the current policyisH #!!!! This avc can be allowed using one of the these booleans: # %ss, cSs|dS(i((tx((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt§ss5 #!!!! This avc can be allowed using the boolean '%s'isƒ #!!!! This avc is a constraint violation. You will need to add an attribute to either the source or target type to make it work. s#Contraint rule: twritetdirtopenR tdomainttypescSs|tS((tTCONTEXT(R'((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR(·ssK#!!!! The source type '%s' can write to a '%s' of the following type: # %s sL#!!!! The source type '%s' can write to a '%s' of the following types: # %s (!R tAVRuleR t DONTAUDITt rule_typetcommentRtstrtCommenttexplain_accessttypet audit2whytALLOWtBOOLEANtlentboolstjointmapt CONSTRAINTtTERULEtpermst obj_classR tseinfot ATTRIBUTEtsesearchtsrc_typetSCONTEXTtCLASStPERMStappendR R(RtavstavtruleR-ti((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt__add_allow_rules˜sJ   +/"  !=/3cCsV|io5|ii||iƒ\}}|iii|ƒn|}|i|ƒdS(sJAdd the access from the access vector set to this module. N(RtgenRR Rtextendt!_PolicyGenerator__add_allow_rules(Rtav_sett raw_allowtifcalls((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt add_accessÃs cCs(x!|D]}|iii|ƒqWdS(N(R RRI(Rt role_type_sett role_type((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytadd_role_typesÕsN(t__name__t __module__t__doc__RRRRRtSHORT_EXPLANATIONRRRR#R$RQRURX(((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR)s       + c s‰g‰‡‡fd†}|tjoÕxÇ|iD]¼}ˆid|iƒˆidt|iƒt|iƒfƒˆid|iti |i ƒfƒˆid|i |i |i fƒˆitid|iddd d d d ƒƒq/W|ƒnŒ|o„ˆid |i|i|i|iiƒfƒt|iƒdjo4|id}ˆid|i |i |i fƒn|ƒnˆS(sªExplain why a policy statement was generated. Return a string containing a text explanation of why a policy statement was generated. The string is commented and wrapped and can be directly inserted into a policy. Params: av - access vector representing the access. Should have .audit_msgs set appropriately. verbosity - the amount of explanation provided. Should be set to NO_EXPLANATION, SHORT_EXPLANATION, or LONG_EXPLANATION. Returns: list of strings - strings explaining the access or an empty string if verbosity=NO_EXPLANATION or there is not sufficient information to provide an explanation. csiˆpdSˆidƒxIˆiƒD];}t|iˆiƒ}ˆid|iƒ|ifƒq&WdS(Ns Interface options:s %s # [%d](RItalltcall_interfacet interfaceRKt to_stringtdist(tmatchtifcall(tmlts(s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytexplain_interfacesîs  s %ss scontext="%s" tcontext="%s"s class="%s" perms="%s"s comm="%s" exe="%s" path="%s"s message="t"iPtinitial_indents tsubsequent_indents s) src="%s" tgt="%s" class="%s", perms="%s"is comm="%s" exe="%s" path="%s"(tLONG_EXPLANATIONt audit_msgsRItheaderR3tscontextttcontextttclassR tlist_to_space_strtaccessestcommtexetpathRPttextwraptwraptmessageREttgt_typeRAR@t to_space_strR:(RKRdR&Rftmsg((RdRes8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR5Ùs,     #&  & ' cCst|i|iƒS(N(tcmptnum(tatb((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyt param_compscCs)g}g}|i|iiƒƒ|itƒtiƒ}|i|_x¾t t |ƒƒD]ª}||i ti jo|i i|iƒqZ||i tijo|i i|iƒqZ||i tijo|i i|iƒqZ||i GHdpt‚qZWt |i ƒdjpt‚|S(Ni(RPtparamstvaluestsortRR t InterfaceCallR tifnametrangeR:R6tSRC_TYPEtargsRIREtTGT_TYPERxt OBJ_CLASSRAtAssertionError(R_RKR€R‡RcRM((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR^s$    RcBs/eZdd„Zd„Zd„Zd„ZRS(cCs5||_|i|ƒti|ƒ|_g|_dS(N(tifsthack_check_ifstmatchingt AccessMatchertmatchertcalls(RR‹R((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR-s  cCs¾x·|iiƒD]¦}g}|i|iiƒƒ|itƒxttt|ƒƒD]`}|d||ijot |_ Pn||i t i t it igjot |_ PqRqRWqWdS(Ni(t interfacesRRPR€R‚RR…R:R|RtenabledR6R R†RˆR‰(RR‹R'R€RM((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyRŒ3s   c Cs|i|ƒ}g}xk|iD]`}t|iƒi|iƒ}|o%tit|i||ƒƒ|_ n|i ||fƒqWg}xˆ|D]€\}}t } xS|D]K} | i |ƒo5| i o!|i o| i i |i ƒnt} q©q©W| p|i |ƒqqW||fS(N(RbRR^tbestR_RKR R4R5R2RIRtmatchestmergeR( RRJR&traw_avRTRdRctdR‹tfoundto_ifcall((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyROJs* % cCsng}xa|D]Y}tiƒ}|ii|i||ƒt|ƒo|ii|ƒq |i|ƒq W|S(N(Rt MatchListRt search_ifsR‹R:RRI(RRJR–RKtans((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyRbas  N(RYRZRRRŒRORb(((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyR,s   cCs.d„}x|iƒD]}||ƒqWdS(s*Add require statements to the module. c Sstiƒ}xa|iƒD]S}|ii|iƒ|ii|iƒx$|iD]}|i||i ƒqOWqWx8|i ƒD]*}x!|i D]}|ii |ƒqWq}Wx:|i ƒD],}|ii |iƒ|ii|iƒq¸W|iidƒ|iid|ƒdS(NRi(R tRequiretavrulesR-tupdatet src_typest tgt_typest obj_classest add_obj_classR@tinterface_callsR‡taddt role_typestrolestroletdiscardRR(tnodetrtavruletobjRctargRW((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pytcollect_requiresqs&      N(tnodes(R R¯Rª((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyRns  (((R[t itertoolsRuR t objectmodeltaccessR‘Rtselinux.audit2whyR7tsetoolsRR\RjRRR5RR^RR(((s8/usr/lib64/python2.6/site-packages/sepolgen/policygen.pyts$        °7  B