/usr/lib/python3.9/site-packages/sepolicy/__pycache__
NameSizeModeActions
booleans.cpython-39.opt-1.pyc10090644editdlrm
booleans.cpython-39.pyc10090644editdlrm
communicate.cpython-39.opt-1.pyc12530644editdlrm
communicate.cpython-39.pyc12530644editdlrm
generate.cpython-39.opt-1.pyc432470644editdlrm
generate.cpython-39.pyc432470644editdlrm
gui.cpython-39.opt-1.pyc834050644editdlrm
gui.cpython-39.pyc834050644editdlrm
interface.cpython-39.opt-1.pyc59600644editdlrm
interface.cpython-39.pyc59600644editdlrm
manpage.cpython-39.opt-1.pyc353250644editdlrm
manpage.cpython-39.pyc353250644editdlrm
network.cpython-39.opt-1.pyc16650644editdlrm
network.cpython-39.pyc16650644editdlrm
sedbus.cpython-39.opt-1.pyc21310644editdlrm
sedbus.cpython-39.pyc21310644editdlrm
transition.cpython-39.opt-1.pyc30220644editdlrm
transition.cpython-39.pyc30220644editdlrm
__init__.cpython-39.opt-1.pyc323550644editdlrm
__init__.cpython-39.pyc323550644editdlrm
Edit: /usr/lib/python3.9/site-packages/sepolicy/__pycache__/generate.cpython-39.pyc (43247B)
a BÒi„Éã @sòddlZddlZddlZddlZddlZddlmZmZmZddlZddl m Z ddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZdZzHddlZiZej dk�r6ded<ej!efddie¤ddi¤ŽZ"e"jZ#WnJzddl$Z$e%e$j&d<Wn&e'�y ddl(Z(e)e(j&d<Yn0Yn0dd„Z*dd„Z+dd „Z,d!d"„Z-dZ.dZ/d#Z0d$Z1d%Z2d&Z3dZ4dZ5d#Z6d$Z7d'Z8d(Z9d)Z:d*Z;d+Zd.Z?d/Z@iZAe#d0ƒeAe4<e#d1ƒeAe5<e#d2ƒeAe6<e#d3ƒeAe7<e#d4ƒeAe8<e#d5ƒeAe9<e#d6ƒeAe:<e#d7ƒeAe;<e#d8ƒeAe<<e#d9ƒeAe=<e#d:ƒeAe><e#d;ƒeAe?<e#d<ƒeAe@<d=d>„ZBe4e5e6e9e7gZCee?gZDd?d@„ZEGdAdB„dBƒZFdS)CéN)Ú get_all_typesÚget_all_attributesÚ get_all_rolesé)Ú executable)Úboolean)Úetc_rw)Ú unit_file)Ú var_cache)Ú var_spool)Úvar_lib)Úvar_log)Úvar_run)Útmp)Úrw)Únetwork)Úscript)Úspec)Úuserzselinux-python)éTÚunicodeÚ localedirz/usr/share/localeÚfallbackÚ_cCsF|d}|d}|d}|d| d¡d}| d¡d}|||gS)z6Given an RPM header return the package NVR as a stringÚnameÚversionÚreleaseú-Ú.rr)Úsplit)ZhdrrrrZrelease_versionZ os_version©r ú5/usr/lib/python3.9/site-packages/sepolicy/generate.pyÚget_rpm_nvr_from_headerGs r"cCs^zpóz!get_all_users..Zsystem_uÚroot)r-r.ÚUSERÚremoveÚsort)Úusersr r r!Ú get_all_usersos   r<érz_admin$z_role$éééééé é é é zStandard Init DaemonzDBUS System DaemonzInternet Services DaemonzWeb Application/Script (CGI)ZSandboxzUser ApplicationzExisting Domain Typez Minimal Terminal Login User Rolez!Minimal X Windows Login User RolezDesktop Login User RolezAdministrator Login User Rolez Confined Root Administrator Rolez!Module information for a new typecCs:t ¡}| ¡tdƒ}|D]}|d|t|f7}q|S)Nz Valid Types: z%2s: %s )ÚpoltypeÚkeysr:r)rHÚmsgÚkr r r!Úget_poltype_desc›s rKcCsè|dkr gSd}z°g}| d¡D]š}| d¡}t|ƒdkr>t‚t|ƒdkrdt|dƒ}t|dƒ}n$t|dƒ}t|dƒ}||krˆt‚t||dƒD]"}|dksª||kr®t‚| |¡q–q |WStyâttdƒ|ƒ‚Yn0dS) NÚiú,rr=rrz8Ports must be numbers or ranges of numbers from 1 to %d )rÚlenÚ ValueErrorÚintr+Úappendr)ÚportsZmax_portÚtempÚaÚrÚbeginÚendr1r r r!Ú verify_ports§s.       rXc@s¦eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdçdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dHdI„Z&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*dRdS„Z+dTdU„Z,dVdW„Z-dXdY„Z.dZd[„Z/d\d]„Z0d^d_„Z1d`da„Z2dbdc„Z3ddde„Z4dfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9dpdq„Z:drds„Z;dtdu„Zdzd{„Z?d|d}„Z@d~d„ZAd€d�„ZBd‚dƒ„ZCd„d…„ZDd†d‡„ZEdˆd‰„ZFdŠd‹„ZGdŒd�„ZHdŽd�„ZId�d‘„ZJd’d“„ZKd”d•„ZLd–d—„ZMd˜d™„ZNdšd›„ZOdœ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»„Z_d¼d½„Z`d¾d¿„ZadÀdÁ„ZbdÂdÄZcdÄdÅ„ZddÆdÇ„ZedÈdÉ„ZfdÊdË„ZgdÌdÍ„ZhdÎdÏ„ZidÐdÑ„ZjdÒdÓ„ZkdÔdÕ„ZldÖdׄZmdØdÙ„ZndÚdÛ„ZodÜdÝ„ZpdÞdß„Zqdàdá„Zrdâdã„Zset u¡fdädå„ZvdæS)èÚpolicycCsg|_i|_tƒ|_g|_|tvr.ttdƒƒ‚|sFttdƒt|ƒ‚z tƒ|_WnXty~}zt dƒWYd}~n6d}~0t yª}zt d|ƒWYd}~n d}~00i|_ d|j d<d|j d<d|j d<d |j d <d |j d <d |j d <d|j d <d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d<d|j d <d!|j d"<d#|j d$<d%|j d&<d'|j d(<d)|j d*<d+|j d,<d-|j d.<d/|j d0<d1|j d2<d3|j d4<d5|j d6<d7|j d8<d9|j d:<d;|j d<<d=|j d><d?|j d@<dA|j dB<dC|j dD<dE|j dF<dG|j dH<dI|j dJ<dK|j dL<dM|j dN<dO|j dP<dQ|j dR<dS|j dT<dU|j dV<dW|j dX<dY|j dZ<d[|j d\<d]|j d^<d_|j d`<da|j db<da|j dc<da|j dd<da|j de<df|j dg<df|j dh<df|j di<df|j dj<df|j dg<dk|j dl<dm|j dn<do|j dp<dq|j dr<ds|j dt<du|j dv<dw|j dx<dy|j dz<d{|j d|<d}|j d~<d|j d€<d|j d�<d‚|j dƒ<d„|j d…<d†|j d‡<d†|j dˆ<d†|j d‰<dŠ|j d‹<dŒ|j d�<dŽ|j d�<d�|j d‘<d’|j d“<d”|j d•<d–|j d—<d˜|j d™<dš|j d›<dœ|j d�<i|_ džgt g|j dŸ<d gtg|j d¡<d¢gtg|j d¢<d£gtg|j d¤<d£gtg|j d¥<d£gtg|j d¦<d§gtg|j d¨<d©gtg|j dª<d«gtg|j d¬<d­gtg|j d®<d¯gtg|j d°<i|_t|jd±<t|jd²<t|jd³<t|jd´<t|jdµ<t|jd¶<t|jd·<t|jd¸<gd¹¢|_|j|jf|j|jf|j|jf|j|j f|j!|j"f|j#|j$f|j%|j&f|j'|j(f|j)|j*f|j+|j(f|j,|j(f|j-|j.f|j/|j0ff |_1t2 3dº|¡�sÐttd»ƒƒ‚|t4k�ræd¼||_5n||_5||_6g|_7g|_8||_9d½|_:d|_;d¾d¾d¾gg|_d¾d¾d¾gg|_?d¾|_@d¾|_Ad¾|_Bd¾|_Cd¾|_Dd¾|_Ed¾|_Fd¾|_Gd¾|_H|j9tItJfv|_K|j9tItJfv|_L|j9tItJfv|_Md¾|_Nd¾|_Oi|_Pi|_Qi|_Rg|_Sg|_Td¾|_Ud¾|_Vg|_Wg|_Xg|_Yg|_Zg|_[dS)¿Nz"You must enter a valid policy typez;You must enter a name for your policy module for your '%s'.z9Can not get port types, must be root for this informationzCan not get port typeszset_use_kerberos(True)Zopenlogzset_use_kerb_rcache(True)zset_use_syslog(True)zset_use_resolve(True)Z gethostbyZ getaddrinfoZ getnameinfoZkrbzset_manage_krb5_rcache(True)Zgss_accept_sec_contextZkrb5_verify_init_credsZ krb5_rd_reqZ __syslog_chkzset_use_uid(True)ÚgetpwnamÚgetpwuidzset_use_dbus(True)Zdbus_zset_use_pam(True)Zpam_zset_use_audit(True)zadd_process('fork')Úforkzadd_process('transition')Z transitionzadd_process('sigchld')Zsigchldzadd_process('sigkill')Zsigkillzadd_process('sigstop')Zsigstopzadd_process('signull')Zsignullzadd_process('ptrace')Zptracezadd_process('getsched')Zgetschedzadd_process('setsched')Zsetschedzadd_process('getsession')Z getsessionzadd_process('getpgid')Úgetpgidzadd_process('setpgid')Úsetpgidzadd_process('getcap')Zgetcapzadd_process('setcap')Zsetcapzadd_process('share')Zsharezadd_process('getattr')Úgetattrzadd_process('setexec')Zsetexeczadd_process('setfscreate')Z setfscreatezadd_process('noatsecure')Z noatsecurezadd_process('siginh')Zsiginhzadd_process('signal_perms')Úkillzadd_process('setrlimit')Z setrlimitzadd_process('rlimitinh')Z rlimitinhzadd_process('dyntransition')Z dyntransitionzadd_process('setcurrent')Z setcurrentzadd_process('execmem')Zexecmemzadd_process('execstack')Z execstackzadd_process('execheap')Zexecheapzadd_process('setkeycreate')Z setkeycreatezadd_process('setsockcreate')Z setsockcreatezadd_capability('chown')Úchownzadd_capability('dac_override')Z dac_overridez!add_capability('dac_read_search')Zdac_read_searchzadd_capability('fowner')Zfownerzadd_capability('fsetid')Zfsetidzadd_capability('setgid')ÚsetgidÚsetegidÚ setresgidÚsetregidzadd_capability('setuid')Ú setresuidÚsetuidÚseteuidÚsetreuidzadd_capability('setpcap')Zsetpcapz!add_capability('linux_immutable')Zlinux_immutablez"add_capability('net_bind_service')Znet_bind_servicezadd_capability('net_broadcast')Z net_broadcastzadd_capability('net_admin')Z net_adminzadd_capability('net_raw')Znet_rawzadd_capability('ipc_lock')Zipc_lockzadd_capability('ipc_owner')Z ipc_ownerzadd_capability('sys_module')Ú sys_modulezadd_capability('sys_rawio')Z sys_rawiozadd_capability('sys_chroot')ÚchrootZ sys_chrootzadd_capability('sys_ptrace')Z sys_ptracezadd_capability('sys_pacct')Z sys_pacctzadd_capability('sys_admin')ZmountZunshareZ sys_adminzadd_capability('sys_boot')Zsys_bootzadd_capability('sys_nice')Zsys_nicezadd_capability('sys_resource')Z sys_resourcezadd_capability('sys_time')Zsys_timez add_capability('sys_tty_config')Zsys_tty_configzadd_capability('mknod')Úmknodzadd_capability('lease')Zleasezadd_capability('audit_write')Z audit_writezadd_capability('audit_control')Z audit_controlzadd_capability('setfcap')Zsetfcaprú/etcrú/tmprr ú/usr/lib/systemd/systemú/lib/systemd/systemú/etc/systemd/systemr ú /var/cacher ú/var/libr ú/var/logrú/var/runr ú /var/spoolZ_tmp_tZ _unit_file_tZ _var_cache_tZ _var_lib_tZ _var_log_tZ _var_run_tZ _var_spool_tZ_port_t) rmrrrtrnrrsrurvrqrorpz^[a-zA-Z0-9-_]+$zOName must be alphanumeric with no spaces. Consider using option "-n MODULENAME"zhttpd_%s_scriptrLF)\ÚrpmsrRrÚ all_rolesÚtypesrGrOrr2r%Ú RuntimeErrorÚsymbolsÚ DEFAULT_DIRSrrrr r r r rr Ú DEFAULT_EXTrÚ DEFAULT_KEYSÚgenerate_daemon_typesÚgenerate_daemon_rulesÚgenerate_dbusd_typesÚgenerate_dbusd_rulesÚgenerate_inetd_typesÚgenerate_inetd_rulesÚgenerate_cgi_typesÚgenerate_cgi_rulesÚgenerate_sandbox_typesÚgenerate_sandbox_rulesÚgenerate_userapp_typesÚgenerate_userapp_rulesÚgenerate_existing_user_typesÚgenerate_existing_user_rulesÚgenerate_min_login_user_typesÚgenerate_login_user_rulesÚgenerate_x_login_user_typesÚgenerate_x_login_user_rulesÚgenerate_login_user_typesÚgenerate_admin_user_typesÚgenerate_root_user_typesÚgenerate_root_user_rulesÚgenerate_new_typesÚgenerate_new_rulesÚ DEFAULT_TYPESÚreÚmatchÚCGIrÚ file_nameÚ capabilitiesÚ processesr*Ú initscriptÚprogramÚin_tcpÚin_udpÚout_tcpÚout_udpÚ use_resolveÚuse_tmpÚuse_uidÚ use_syslogÚ use_kerberosÚmanage_krb5_rcacheÚuse_pamÚuse_dbusÚ use_auditÚEUSERÚNEWTYPEÚuse_etcÚuse_localizationÚuse_fdÚ use_terminalÚuse_mailÚbooleansÚfilesÚdirsÚfound_tcp_portsÚfound_udp_portsÚ need_tcp_typeÚ need_udp_typeÚ admin_domainsÚexisting_domainsÚtransition_domainsÚtransition_usersÚroles)Úselfrr*Úer r r!Ú__init__Æsf                                                                                                                ó   zpolicy.__init__cCs(|tp&|tp&|tp&t|tƒdkS©Nr)ÚALLÚRESERVEDÚ UNRESERVEDrNÚPORTS)rÀÚlr r r!Z __isnetset‡szpolicy.__isnetsetcCs ||_dS©N)r»)rÀr»r r r!Úset_admin_domainsŠszpolicy.set_admin_domainscCs ||_dSrÉ)r¼)rÀr¼r r r!Úset_existing_domains�szpolicy.set_existing_domainscCs ||_dSrÉ)r¿)rÀr¿r r r!Úset_admin_roles�szpolicy.set_admin_rolescCs ||_dSrÉ)r½)rÀr½r r r!Úset_transition_domains“szpolicy.set_transition_domainscCs ||_dSrÉ)r¾)rÀr¾r r r!Úset_transition_users–szpolicy.set_transition_userscCs | |j¡SrÉ)Ú_policy__isnetsetr¡©rÀr r r!Ú use_in_udp™szpolicy.use_in_udpcCs | |j¡SrÉ)rÏr£rÐr r r!Ú use_out_udpœszpolicy.use_out_udpcCs| ¡p| ¡SrÉ)rÑrÒrÐr r r!Úuse_udpŸszpolicy.use_udpcCs | |j¡SrÉ)rÏr rÐr r r!Ú use_in_tcp¢szpolicy.use_in_tcpcCs | |j¡SrÉ)rÏr¢rÐr r r!Ú use_out_tcp¥szpolicy.use_out_tcpcCs| ¡p| ¡SrÉ)rÔrÕrÐr r r!Úuse_tcp¨szpolicy.use_tcpcCs| ¡p| ¡SrÉ)rÖrÓrÐr r r!Ú use_network«szpolicy.use_networkÚtcpcCsF|j ¡D]6\}}}||kr ||kr ||kr |j|||fSq dSrÉ)rRrH)rÀÚportr,rVrWr1r r r!Ú find_port®szpolicy.find_portcCs |jtvrttdƒƒ‚||_dS)Nz0User Role types can not be assigned executables.)r*Ú APPLICATIONSrOrrŸ)rÀrŸr r r!Ú set_program´s  zpolicy.set_programcCs |jtkrttdƒƒ‚||_dS)Nz(Only Daemon apps can use an init script.)r*ÚDAEMONrOrrž)rÀržr r r!Úset_init_scriptºs  zpolicy.set_init_scriptcCs|||t|ƒg|_dSrÉ)rXr ©rÀÚallZreservedZ unreservedrRr r r!Ú set_in_tcpÀszpolicy.set_in_tcpcCs|||t|ƒg|_dSrÉ)rXr¡rßr r r!Ú set_in_udpÃszpolicy.set_in_udpcCs|ddt|ƒg|_dS©NF)rXr¢©rÀràrRr r r!Ú set_out_tcpÆszpolicy.set_out_tcpcCs|ddt|ƒg|_dSrã)rXr£rär r r!Ú set_out_udpÉszpolicy.set_out_udpcCs"t|ƒturttdƒƒ‚||_dS)Nz$use_resolve must be a boolean value )r*ÚboolrOrr¤©rÀÚvalr r r!Úset_use_resolveÌs  zpolicy.set_use_resolvecCs"t|ƒturttdƒƒ‚||_dS)Nz#use_syslog must be a boolean value )r*rçrOrr§rèr r r!Úset_use_syslogÒs  zpolicy.set_use_syslogcCs"t|ƒturttdƒƒ‚||_dS)Nz%use_kerberos must be a boolean value )r*rçrOrr¨rèr r r!Úset_use_kerberosØs  zpolicy.set_use_kerberoscCs"t|ƒturttdƒƒ‚||_dS)Nz+manage_krb5_rcache must be a boolean value )r*rçrOrr©rèr r r!Úset_manage_krb5_rcacheÞs  zpolicy.set_manage_krb5_rcachecCs|du|_dS©NT)rªrèr r r!Ú set_use_pamäszpolicy.set_use_pamcCs|du|_dSrî)r«rèr r r!Ú set_use_dbusçszpolicy.set_use_dbuscCs|du|_dSrî)r¬rèr r r!Ú set_use_auditêszpolicy.set_use_auditcCs|du|_dSrî)r¯rèr r r!Ú set_use_etcíszpolicy.set_use_etccCs|du|_dSrî)r°rèr r r!Úset_use_localizationðszpolicy.set_use_localizationcCs|du|_dSrî)r±rèr r r!Ú set_use_fdószpolicy.set_use_fdcCs|du|_dSrî)r²rèr r r!Úset_use_terminalöszpolicy.set_use_terminalcCs|du|_dSrî)r³rèr r r!Ú set_use_mailùszpolicy.set_use_mailcCsB|jtvrttdƒƒ‚|r0|jdd d¡ng|jdd<dS)Nz'USER Types automatically get a tmp typernr)r*ÚUSERSrOrr|rQrèr r r!Ú set_use_tmpüs   zpolicy.set_use_tmpcCs|du|_dSrî)r¦rèr r r!Ú set_use_uidszpolicy.set_use_uidcCs |jrt d|jtj¡SdSdS©NÚ TEMPLATETYPErL)r¦r˜ÚsubrrZ te_uid_rulesrÐr r r!Úgenerate_uid_rulesszpolicy.generate_uid_rulescCs |jrt d|jtj¡SdSdSrú)r§r˜rürrZte_syslog_rulesrÐr r r!Úgenerate_syslog_rulesszpolicy.generate_syslog_rulescCs |jrt d|jtj¡SdSdSrú)r¤r˜rürrZte_resolve_rulesrÐr r r!Úgenerate_resolve_rulesszpolicy.generate_resolve_rulescCs |jrt d|jtj¡SdSdSrú)r¨r˜rürrZte_kerberos_rulesrÐr r r!Úgenerate_kerberos_rulesszpolicy.generate_kerberos_rulescCs |jrt d|jtj¡SdSdSrú)r©r˜rürrZte_manage_krb5_rcache_rulesrÐr r r!Ú!generate_manage_krb5_rcache_rules sz(policy.generate_manage_krb5_rcache_rulescCs d}|jrt d|jtj¡}|S©NrLrû)rªr˜rürrZ te_pam_rules©rÀÚnewter r r!Úgenerate_pam_rules&szpolicy.generate_pam_rulescCs d}|jrt d|jtj¡}|Sr)r¬r˜rürrZte_audit_rulesrr r r!Úgenerate_audit_rules,szpolicy.generate_audit_rulescCs d}|jrt d|jtj¡}|Sr)r¯r˜rürrZ te_etc_rulesrr r r!Úgenerate_etc_rules2szpolicy.generate_etc_rulescCs d}|jrt d|jtj¡}|Sr)r±r˜rürrZ te_fd_rulesrr r r!Úgenerate_fd_rules8szpolicy.generate_fd_rulescCs d}|jrt d|jtj¡}|Sr)r°r˜rürrZte_localization_rulesrr r r!Úgenerate_localization_rules>sz"policy.generate_localization_rulescCs*d}|jtkr&|jr&t d|jtj¡}|Sr)r*ÚDBUSr«r˜rürrZ te_dbus_rulesrr r r!Úgenerate_dbus_rulesDszpolicy.generate_dbus_rulescCs d}|jrt d|jtj¡}|Sr)r³r˜rürrZ te_mail_rulesrr r r!Úgenerate_mail_rulesJszpolicy.generate_mail_rulescCsFd}d|||f}|t ¡vr.d||jf}nd||j|||f}|S)NrLzcorenet_%s_%s_%sz %s(%s_t) zD gen_require(` type %s_t; ') allow %s_t %s_t:%s_socket name_%s; )r-Z get_methodsr)rÀr,ÚactionÚ port_nameÚlineÚmethodr r r!Úgenerate_network_actionPs ûzpolicy.generate_network_actioncCsZ|jtD]X}| t|ƒd¡}|dur.d|_q |ddd…}| dd|¡}||jvr |j |¡q |jtD]X}| t|ƒd¡}|dur’d|_qn|ddd…}| dd|¡}||jvrn|j |¡qn|j tD]X}| t|ƒd¡}|duröd|_ qÒ|ddd…}| dd|¡}||j vrÒ|j  |¡qÒ|j du�sD|jdu�rVt   d|jtj¡Sd S) NrØTréþÿÿÿZbindZconnectÚudprûrL)r rÇrÚrPr¹rr·rQr¢r¡rºr¸r˜rürrÚte_types)rÀÚiZrecrrr r r!Úgenerate_network_types^s6   zpolicy.generate_network_typescCsZ|jD]4}| |¡dkr|j|d |¡|j|Sq|jdd |¡|jdS)Nrrr)r|ÚfindrQ)rÀÚfileÚdr r r!Z __find_path„s  zpolicy.__find_pathcCs||jvr|j |¡dSrÉ)rœrQ)rÀZ capabilityr r r!Úadd_capabilityŒs zpolicy.add_capabilitycCs ||_dSrÉ)ry)rÀryr r r!Ú set_types�szpolicy.set_typescCs||jvr|j |¡dSrÉ)r�rQ)rÀZprocessr r r!Ú add_process“s zpolicy.add_processcCs||j|<dSrÉ)r´)rÀrÚ descriptionr r r!Ú add_boolean—szpolicy.add_booleancCs| |¡|j|<dSrÉ)Ú_policy__find_pathrµ©rÀrr r r!Úadd_filešszpolicy.add_filecCs| |¡|j|<dSrÉ)rr¶r r r r!Úadd_dir�szpolicy.add_dircCs6d}|j ¡t|jƒdkr2d|jd |j¡f}|S)NrLrz#allow %s_t self:capability { %s }; ú )rœr:rNrÚjoinrr r r!Úgenerate_capabilities s  zpolicy.generate_capabilitiescCs6d}|j ¡t|jƒdkr2d|jd |j¡f}|S)NrLrz allow %s_t self:process { %s }; r#)r�r:rNrr$rr r r!Úgenerate_process§s  zpolicy.generate_processcCs�d}| ¡�rŒd}|t d|jtj¡7}| ¡�rª|d7}|t d|jtj¡7}| ¡rœ|t d|jtj ¡7}|j rœt |j t ƒdkrœ|t d|jtj¡7}|j rÊt |jt ƒdkrÊ|t d|jtj¡7}|j trê|t d|jtj¡7}|j t�r |t d|jtj¡7}|j t�r.|t d|jtj¡7}|jt�rP|t d|jtj¡7}|jt�rr|t d|jtj¡7}|jt�r”|t d|jtj¡7}|jD]}||7}�qš| ¡�rŒ|d7}|t d|jtj¡7}|j�rð|t d|jtj¡7}| ¡�r|t d|jtj ¡7}|j!t�r2|t d|jtj"¡7}|j!t�rT|t d|jtj#¡7}|j!t�rv|t d|jtj$¡7}|j%D]}||7}�q||S)NrLÚ rûr)&r×r˜rürrZ te_networkrÖZte_tcprÔZ te_in_tcpr¹rNr rÇZte_in_need_port_tcpr¢Zte_out_need_port_tcprÄZte_in_all_ports_tcprÅZte_in_reserved_ports_tcprÆZte_in_unreserved_ports_tcpZte_out_all_ports_tcpZte_out_reserved_ports_tcpZte_out_unreserved_ports_tcpr·rÓZte_udprºZte_in_need_port_udprÑZ te_in_udpr¡Zte_in_all_ports_udpZte_in_reserved_ports_udpZte_in_unreserved_ports_udpr¸)rÀrrr r r!Úgenerate_network_rules®sV                 zpolicy.generate_network_rulescCs|d}|jD](}t d|jtj¡}|t d||¡7}q |jtkrx|jD]2}t d|jt j ¡}|t d|  d¡d|¡7}qD|S)NrLrûÚ APPLICATIONr8Ú_ur) r½r˜rürrZte_transition_rulesr*r8r¾rZ te_run_rulesr)rÀrÚapprÚurSr r r!Úgenerate_transition_rulesæs   z policy.generate_transition_rulescCsd}|jtkrz|jD]`}| d¡d}|d}|jD]>}t d|tj¡}||j vr`t |d|¡}|t d||¡7}q4q|S|jt k�r|t d|j tj ¡7}|jD](}t d|j tj¡}|t d||¡7}q¢|j D]D}| d¡d}|d|j vrÒt d|j tj¡}|t d ||¡7}qÒ|S) NrLÚ_trÚ_rrûZsystem_rr)r*r8)r*r­r¼rr»r˜rürZte_admin_domain_rulesrxÚRUSERrZte_admin_rulesr¾Zte_admin_trans_rules)rÀrrrÚroler+rr,r r r!Úgenerate_admin_rulesós,       zpolicy.generate_admin_rulescCs d}|jrt d|jtj¡}|Sr)r«r˜rürrZ if_dbus_rules©rÀÚnewifr r r!Úgenerate_dbus_ifszpolicy.generate_dbus_ifcCs(d}|jtkr|St d|jtj¡}|Sr)r*ÚSANDBOXr˜rürrZif_sandbox_rulesr3r r r!Úgenerate_sandbox_ifs  zpolicy.generate_sandbox_ifcCsþd}d}|jdkr>|t d|jtj¡7}|t d|jtj¡7}|jD]Z}t|j |dƒdkrD|t d|j|j |dj ¡7}|t d|j|j |dj ¡7}qD|dkrút d|jtj ¡}||7}|t d|jtj ¡7}||7}|t d|jtj¡7}|SdS©NrLrûrrr=)ržr˜rürrZif_initscript_admin_typesZif_initscript_adminr~rNr|Zif_admin_typesZif_admin_rulesZif_begin_adminZif_middle_adminZ if_end_admin)rÀr4ZnewtypesrÚretr r r!Úgenerate_admin_ifs"   "zpolicy.generate_admin_ifcCst d|jtj¡S©Nrû)r˜rür›rÚ te_cgi_typesrÐr r r!r…5szpolicy.generate_cgi_typescCst d|jtj¡Sr;)r˜rür›rÚte_sandbox_typesrÐr r r!r‡8szpolicy.generate_sandbox_typescCst d|jtj¡Sr;)r˜rürrZte_userapp_typesrÐr r r!r‰;szpolicy.generate_userapp_typescCst d|jtj¡Sr;)r˜rürrZte_inetd_typesrÐr r r!rƒ>szpolicy.generate_inetd_typescCst d|jtj¡Sr;)r˜rürrZte_dbusd_typesrÐr r r!r�Aszpolicy.generate_dbusd_typescCst d|jtj¡Sr;)r˜rürrZte_min_login_user_typesrÐr r r!r�Dsz$policy.generate_min_login_user_typescCst d|jtj¡Sr;)r˜rürrZte_login_user_typesrÐr r r!r‘Gsz policy.generate_login_user_typescCst d|jtj¡Sr;)r˜rürrZte_admin_user_typesrÐr r r!r’Jsz policy.generate_admin_user_typescCsŠt|jƒdkr$ttdƒt|jƒ‚t d|jt j ¡}|d7}|jD]8}|d|7}|  d¡dd}||j vrD|d|7}qD|d 7}|S) Nrz,'%s' policy modules require existing domainsrûz gen_require(`z type %s;r.r/z role %s;z ') ) rNr¼rOrrGr*r˜rürrZte_existing_user_typesrrx)rÀrrr1r r r!r‹Ms ÿ ÿz#policy.generate_existing_user_typescCst d|jtj¡Sr;)r˜rürrZte_x_login_user_typesrÐr r r!r�_sz"policy.generate_x_login_user_typescCst d|jtj¡Sr;)r˜rürrZte_root_user_typesrÐr r r!r“bszpolicy.generate_root_user_typesc CsÄd}t|jƒdkrttdƒƒ‚|jD]^}|jD]R}| |¡r.t||dt|ƒ …ƒ|t d|dt|ƒ …|j|j ¡7}q$q.q$t rÀ|dkrÀg}|jD]}|  |¡qšttdƒd  |¡ƒ‚|S)NrLrzType field requiredrûz3You need to define a new type which ends with: %sz ) rNryrOrr}Úendswithr%r˜rürr®rQr$)rÀrÚtrZ default_extr r r!r•es    (   zpolicy.generate_new_typescCsdS)NrLr rÐr r r!r–yszpolicy.generate_new_rulescCs6t d|jtj¡}|jdkr2|t d|jtj¡7}|Srú)r˜rürrZte_daemon_typesržZte_initscript_typesrr r r!r|s zpolicy.generate_daemon_typescCs |jrt d|jtj¡SdSdSrú)r¥r˜rürrrrÐr r r!Úgenerate_tmp_types‚szpolicy.generate_tmp_typescCs<d}|jD],}t d|tj¡}|t d|j||¡7}q |S)NrLÚBOOLEANZ DESCRIPTION)r´r˜rürZ te_boolean)rÀrÚbrr r r!Úgenerate_booleansˆs  zpolicy.generate_booleanscCs(d}|jD]}|t d|tj¡7}q |S)NrLrA)r´r˜rürÚte_rules)rÀrrBr r r!Úgenerate_boolean_rules�s zpolicy.generate_boolean_rulescCst d|jtj¡Sr;)r˜rürrr=rÐr r r!Úgenerate_sandbox_te•szpolicy.generate_sandbox_tecCst d|jtj¡Sr;)r˜rürrr<rÐr r r!Úgenerate_cgi_te˜szpolicy.generate_cgi_tecCst d|jtj¡}|Sr;)r˜rürrZte_daemon_rulesr3r r r!r€›szpolicy.generate_daemon_rulesc Csld}|jD]\}|jD]P}| |¡r|dt|ƒ …d}|t d|dt|ƒ …|j|j¡7}q qq |S)NrLr.rû)ryr}r>rNr˜rüÚif_rules)rÀr4r?rZreqtyper r r!Úgenerate_new_type_if s   (zpolicy.generate_new_type_ifcCst d|jtj¡Sr;)r˜rürrZte_login_user_rulesrÐr r r!rŽªsz policy.generate_login_user_rulescCst d|jtj¡}|Sr;)r˜rürrZte_existing_user_rules)rÀZnerulesr r r!rŒ­sz#policy.generate_existing_user_rulescCst d|jtj¡Sr;)r˜rürrZte_x_login_user_rulesrÐr r r!r�±sz"policy.generate_x_login_user_rulescCst d|jtj¡}|Sr;)r˜rürrZte_root_user_rulesrr r r!r”´szpolicy.generate_root_user_rulescCst d|jtj¡Sr;)r˜rürrZte_userapp_rulesrÐr r r!rЏszpolicy.generate_userapp_rulescCst d|jtj¡Sr;)r˜rürrZte_inetd_rulesrÐr r r!r„»szpolicy.generate_inetd_rulescCst d|jtj¡Sr;)r˜rürrZte_dbusd_rulesrÐr r r!r‚¾szpolicy.generate_dbusd_rulescCs |jrt d|jtj¡SdSdSrú)r¥r˜rürrrDrÐr r r!Úgenerate_tmp_rulesÁszpolicy.generate_tmp_rulescCsd}|t d|jtj¡7}|Sr)r˜rürrZ te_cgi_rulesrr r r!r†Çszpolicy.generate_cgi_rulescCsd}|t d|jtj¡7}|Sr)r˜rürrZte_sandbox_rulesrr r r!rˆÌszpolicy.generate_sandbox_rulescCsRd}|js|jtkr&t d|jtj¡}|jtt t t fvrN|t d|jtj ¡7}|Sr) r²r*r8r˜rürrZif_user_program_rulesÚTUSERÚXUSERÚAUSERÚLUSERZif_role_change_rulesr3r r r!Úgenerate_user_ifÑs zpolicy.generate_user_ifc Cs>d}|t d|jtj¡7}|jr6|t d|jtj¡7}|jdkrV|t d|jtj¡7}|j D]”}t |j |dƒdkr\|t d|j|j |dj ¡7}|j |dD]J}t j |¡r¤t t  |¡tj¡r¤|t d|j|j |dj¡7}q\q¤q\|| ¡7}|| ¡7}|| ¡7}|| ¡7}|| ¡7}|| ¡7}|Sr8)r˜rürrZif_heading_rulesrŸZif_program_rulesržZif_initscript_rulesr~rNr|rHÚosÚpathÚexistsÚstatÚS_ISSOCKÚST_MODEZif_stream_rulesrOr5r:r7rIr–)rÀr4rrr r r!Ú generate_ifÚs(   "       zpolicy.generate_ifcCs|j|jdƒSrér—r*rÐr r r!Úgenerate_default_typesòszpolicy.generate_default_typescCs&|j|jdr"|j|jdƒSdS)NrrLrWrÐr r r!Úgenerate_default_rulesõszpolicy.generate_default_rulescCsˆd}|jttttfvr„d}t|jƒdkr„|t d|j t j ¡7}|t d|j t j ¡7}|jD](}t d|j t j ¡}|t d||¡7}qZ|S)NrLrrûZROLE)r*rKrLrMrNrNr¿r˜rürrZ te_sudo_rulesZte_newrole_rulesZte_roles_rules)rÀrr¿r1rr r r!Úgenerate_roles_rulesús zpolicy.generate_roles_rulesc Csà| ¡}|jD]L}t|j|dƒdkr|jtks:|dkr|t d|j|j|dj ¡7}q|jt krt|d|j7}||  ¡7}||  ¡7}||  ¡7}|| ¡7}|| ¡7}|| ¡7}|| ¡7}|jD�]>}t|j|dƒdkrÎ|jt k�rLd}|jD]H}|t d|dd …d |j|dj¡7}|t d |jd |¡7}�qn |t d|j|j|dj¡7}|j|dD]’}tj |¡�rzt t |¡tj¡�rz|jt k�ræ|jD],}|t d|dd …|j|dj¡7}�q¶n |t d|j|j|dj¡7}qÎ�qzqÎ|| ¡7}|| ¡7}|| ¡7}|| ¡7}|| ¡7}||  ¡7}|| !¡7}|| "¡7}|| #¡7}|| $¡7}|| %¡7}|| &¡7}|| '¡7}|| (¡7}|| )¡7}|| *¡7}|| +¡7}|S) Nrrrrûr=z@ ######################################## # # %s local policy # rLZTEMPLATETYPE_trr.ZTEMPLATETYPE_rw_tZ_rw_t),rXr~rNr|r*ršr˜rürrr­r%r&rr@rCrYrEr¼rDrPrQrRrSrTrUZte_stream_rulesrJr(rrrrýrrþr rÿrZr r-r2r rr)rÀrrZ newte_tmpÚdomainrr r r!Ú generate_tesb " û          * &  ,                   zpolicy.generate_tecCsÂd}g}|j ¡D]Œ}tj |¡rVt t |¡tj¡rVt  d|j |j|dj ¡}nt  d|j |j|dj ¡}t  d||¡}|  t  d|j|d|¡¡q|j ¡D]L}t  d|j |j|dj¡}t  d||¡}|  t  d|j|d|¡¡qª|jttgv�rt|ƒdk�rtjS|jttttgv�rH|j�sHttdƒƒ‚|j�rxt  d|jtj¡}|  t  d|j |¡¡|jdk�r¬t  d|jtj¡}|  t  d|j |¡¡| ¡d  |¡}|S) NrLrûr=ÚFILENAMEZFILETYPErz      zpolicy.generate_speccCs2d||jf}t|dƒ}| | ¡¡| ¡|S)Nz%s/%s_selinux.specÚw)r›ÚopenÚwritergÚclose)rÀÚout_dirZspecfileÚfdr r r!Ú write_specÍs  zpolicy.write_speccCs2d||jf}t|dƒ}| | ¡¡| ¡|S)Nz%s/%s.terh)r›rirjr\rk)rÀrlZtefilermr r r!Úwrite_teÕs  zpolicy.write_tecCs>d||jf}t|dƒ}| | ¡¡| ¡t |d¡|S)Nz%s/%s.shrhiè)r›rirjrdrkrPÚchmod)rÀrlZshfilermr r r!Úwrite_shÜs   zpolicy.write_shcCs2d||jf}t|dƒ}| | ¡¡| ¡|S)Nz%s/%s.ifrh)r›rirjrVrk)rÀrlZiffilermr r r!Úwrite_ifäs  zpolicy.write_ifcCs2d||jf}t|dƒ}| | ¡¡| ¡|S)Nz%s/%s.fcrh)r›rirjr`rk)rÀrlZfcfilermr r r!Úwrite_fcës  zpolicy.write_fcc CsBddl}| ¡��}| ¡|jdd�|j ¡}| ¡}|j|jd�}|D]Ð}|j   |j ¡|j D]F}|j D]:}|dkr|qn| |¡rntj |¡rž| |¡qn| |¡qnqd| ¡}|j|jd�}|D]T} | j D]H}|j D]<}|dkrèqÚ| |¡rÚtj |¡�r | |¡qÚ| |¡qÚqÐqÆqLWdƒn1�s40YdS)NrT)Zload_system_repo)rrm)Zprovides)ÚdnfZBaseZread_all_reposZ fill_sackZsackÚqueryZ availableÚfilterrŸrwrQrrµr|Ú startswithrPrQÚisfiler!r"Z source_name) rÀrtÚbaseruZpqÚpkgÚfnamerBÚsqZbpkgr r r!Z__extract_rpmsòs8            zpolicy.__extract_rpmsc Csæz | ¡WntyYn0tj d|j¡rB| d|j¡tj d|j¡rd| d|j¡tj d|j¡r†| d|j¡tj d|j¡r¨| d|j¡tj d|j¡rÊ| d|j¡tj d|j¡rì|  d|j¡g}|j   ¡D]æ}g}z|j |dd d }Wnt �y4YqúYn0|j |dD]"}|  |¡�rD| |¡n�qD�qDt|ƒd krú|D]>}||j  ¡v�r–|j|=n||j  ¡v�rx|j|=n�qx�qxtt|j |dƒt|ƒƒ|j |d<qúdS) Nz/var/run/%s.pidz /var/run/%sz /var/log/%sz/var/log/%s.logz /var/lib/%sz/etc/rc.d/init.d/%sz/etc/rc\.d/init\.d/%srrú/)Ú_policy__extract_rpmsÚ ImportErrorrPrQrxrr!Úisdirr"rÞr|rHÚ IndexErrorrwrQrNr¶rµÚlistÚset)rÀZ temp_basepathr1Z temp_dirsrr r r!Ú gen_writeablesF        zpolicy.gen_writeablecCsˆ|jtvrdStj |j¡s2tj d|j¡dSt  d|j¡}|  ¡  ¡D],}|j D] }|  |¡rXtd|j |ƒqXqN| ¡dS)Nzl *************************************** Warning %s does not exist *************************************** znm -D %s | grep Uzself.%s)r*rÛrPrQrRrŸÚsysÚstderrrjÚpopenÚreadrr{rwÚexecrk)rÀrmÚsrBr r r!Ú gen_symbolsIs û  zpolicy.gen_symbolscCs˜tdƒ}|d| |¡tdƒf7}|d| |¡tdƒf7}|d| |¡tdƒf7}|jtkr”|d| |¡tdƒf7}|d| |¡tdƒf7}|S)NzCreated the following files: z%s # %s zType Enforcement filezInterface filezFile Contexts filez Spec filez Setup Script)rrorrrsr*r®rnrq)rÀrlÚoutr r r!Úgenerate[s zpolicy.generateN)rØ)wÚ__name__Ú __module__Ú __qualname__rÂrÏrÊrËrÌrÍrÎrÑrÒrÓrÔrÕrÖr×rÚrÜrÞrárârårærêrërìrírïrðrñròrórôrõrörørùrýrþrÿrrrrrrr r r rrrrrrrr!r"r%r&r(r-r2r5r7r:r…r‡r‰rƒr�r�r‘r’r‹r�r“r•r–rr@rCrErFrGr€rIrŽrŒr�r”rŠr„r‚rJr†rˆrOrVrXrYrZr\r`rbrdrgrnrorqrrrsr~r„r‹rPÚgetcwdr�r r r r!rYÄsæB  &8    >##*$3rY)GrPr…rSr˜r-rrrreZ templatesrrrr r r r r rrrrrrrZsepolgen.interfacesZ interfacesZsepolgen.defaultsÚdefaultsZPROGNAMEÚgettextÚkwargsÚ version_infoÚ translationr?rÚbuiltinsÚstrÚ__dict__rZ __builtin__rr"r)r2r<rÄrÅrÆrÇZADMIN_TRANSITION_INTERFACEZUSER_TRANSITION_INTERFACErÝr ZINETDršr6r8r­rKrLrNrMr0r®rGrKrÛr÷rXrYr r r r!Ús¬                   ÿþý