??????????????
Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 173

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 174

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 176

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 177

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 178
ó àUdac@`svddlmZmZmZeZidd6dgd6dd6ZdZd Zd Z dd l m Z dd l Z dd l Z dd lmZddlmZe jde jƒZe jdƒZddddddddgZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZd!efd"„ƒYZd#„Zd$„Zed%krreƒnd S(&i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontpreviewtstatust communityt supported_bysM module: pamd author: - Kenneth D. Evensen (@kevensen) short_description: Manage PAM Modules description: - Edit PAM service's type, control, module path and module arguments. - In order for a PAM rule to be modified, the type, control and module_path must match an existing rule. See man(5) pam.d for details. version_added: "2.3" options: name: description: - The name generally refers to the PAM service file to change, for example system-auth. type: str required: true type: description: - The type of the PAM rule being modified. - The C(type), C(control) and C(module_path) all must match a rule to be modified. type: str required: true choices: [ account, -account, auth, -auth, password, -password, session, -session ] control: description: - The control of the PAM rule being modified. - This may be a complicated control with brackets. If this is the case, be sure to put "[bracketed controls]" in quotes. - The C(type), C(control) and C(module_path) all must match a rule to be modified. type: str required: true module_path: description: - The module path of the PAM rule being modified. - The C(type), C(control) and C(module_path) all must match a rule to be modified. type: str required: true new_type: description: - The new type to assign to the new rule. type: str choices: [ account, -account, auth, -auth, password, -password, session, -session ] new_control: description: - The new control to assign to the new rule. type: str new_module_path: description: - The new module path to be assigned to the new rule. type: str module_arguments: description: - When state is C(updated), the module_arguments will replace existing module_arguments. - When state is C(args_absent) args matching those listed in module_arguments will be removed. - When state is C(args_present) any args listed in module_arguments are added if missing from the existing rule. - Furthermore, if the module argument takes a value denoted by C(=), the value will be changed to that specified in module_arguments. type: list state: description: - The default of C(updated) will modify an existing rule if type, control and module_path all match an existing rule. - With C(before), the new rule will be inserted before a rule matching type, control and module_path. - Similarly, with C(after), the new rule will be inserted after an existing rulematching type, control and module_path. - With either C(before) or C(after) new_type, new_control, and new_module_path must all be specified. - If state is C(args_absent) or C(args_present), new_type, new_control, and new_module_path will be ignored. - State C(absent) will remove the rule. The 'absent' state was added in Ansible 2.4. type: str choices: [ absent, before, after, args_absent, args_present, updated ] default: updated path: description: - This is the path to the PAM service files. type: path default: /etc/pam.d backup: description: - Create a backup file including the timestamp information so you can get the original file back if you somehow clobbered it incorrectly. type: bool default: no version_added: '2.6' s— - name: Update pamd rule's control in /etc/pam.d/system-auth pamd: name: system-auth type: auth control: required module_path: pam_faillock.so new_control: sufficient - name: Update pamd rule's complex control in /etc/pam.d/system-auth pamd: name: system-auth type: session control: '[success=1 default=ignore]' module_path: pam_succeed_if.so new_control: '[success=2 default=ignore]' - name: Insert a new rule before an existing rule pamd: name: system-auth type: auth control: required module_path: pam_faillock.so new_type: auth new_control: sufficient new_module_path: pam_faillock.so state: before - name: Insert a new rule pam_wheel.so with argument 'use_uid' after an \ existing rule pam_rootok.so pamd: name: su type: auth control: sufficient module_path: pam_rootok.so new_type: auth new_control: required new_module_path: pam_wheel.so module_arguments: 'use_uid' state: after - name: Remove module arguments from an existing rule pamd: name: system-auth type: auth control: required module_path: pam_faillock.so module_arguments: '' state: updated - name: Replace all module arguments in an existing rule pamd: name: system-auth type: auth control: required module_path: pam_faillock.so module_arguments: 'preauth silent deny=3 unlock_time=604800 fail_interval=900' state: updated - name: Remove specific arguments from a rule pamd: name: system-auth type: session control: '[success=1 default=ignore]' module_path: pam_succeed_if.so module_arguments: crond,quiet state: args_absent - name: Ensure specific arguments are present in a rule pamd: name: system-auth type: session control: '[success=1 default=ignore]' module_path: pam_succeed_if.so module_arguments: crond,quiet state: args_present - name: Ensure specific arguments are present in a rule (alternative) pamd: name: system-auth type: session control: '[success=1 default=ignore]' module_path: pam_succeed_if.so module_arguments: - crond - quiet state: args_present - name: Module arguments requiring commas must be listed as a Yaml list pamd: name: special-module type: account control: required module_path: pam_access.so module_arguments: - listsep=, state: args_present - name: Update specific argument value in a rule pamd: name: system-auth type: auth control: required module_path: pam_faillock.so module_arguments: 'fail_interval=300' state: args_present - name: Add pam common-auth rule for duo pamd: name: common-auth new_type: auth new_control: '[success=1 default=ignore]' new_module_path: '/lib64/security/pam_duo.so' state: after type: auth module_path: pam_sss.so control: 'requisite' su change_count: description: How many rules were changed. type: int sample: 1 returned: success version_added: 2.4 new_rule: description: The changes to the rule. This was available in Ansible 2.4 and Ansible 2.5. It was removed in Ansible 2.6. type: str sample: None None None sha512 shadow try_first_pass use_authtok returned: success version_added: 2.4 updated_rule_(n): description: The rule(s) that was/were changed. This is only available in Ansible 2.4 and was removed in Ansible 2.5. type: str sample: - password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok returned: success version_added: 2.4 action: description: - "That action that was taken and is one of: update_rule, insert_before_rule, insert_after_rule, args_present, args_absent, absent. This was available in Ansible 2.4 and removed in Ansible 2.8" returned: always type: str sample: "update_rule" version_added: 2.4 dest: description: - "Path to pam.d service that was changed. This is only available in Ansible 2.3 and was removed in Ansible 2.4." returned: success type: str sample: "/etc/pam.d/system-auth" backupdest: description: - "The file name of the backup file, if created." returned: success type: str version_added: 2.6 ... (t AnsibleModuleN(tNamedTemporaryFile(tdatetimes¹(?P-?(?:auth|account|session|password))\s+ (?P\[.*\]|\S*)\s+ (?P\S*)\s* (?P.*)\s*s (\[.*\]|\S*)taccounts-accounttauths-authtpasswords -passwordtsessions-sessiontPamdLinecB`s>eZd„Zed„ƒZd„Zdd„Zd„ZRS(cC`s||_d|_d|_dS(N(tlinetNonetprevtnext(tselfR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyt__init__&s  cC`s|jdkrtStS(Nt(RtTruetFalse(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytis_valid+scC`s+|jstd|jfStd|jfS(NsRule is not valid sRule is valid (RRRR(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytvalidate1s cC`stS(N(R(Rt rule_typet rule_controlt rule_patht rule_args((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytmatches7scC`s t|jƒS(N(tstrR(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyt__str__:sN( t__name__t __module__RtpropertyRRRRR!(((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR$s    t PamdCommentcB`s eZd„Zed„ƒZRS(cC`stt|ƒj|ƒdS(N(tsuperR%R(RR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR@scC`s|jjdƒrtStS(Nt#(Rt startswithRR(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRCs(R"R#RR$R(((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR%>s t PamdIncludecB`s eZd„Zed„ƒZRS(cC`stt|ƒj|ƒdS(N(R&R)R(RR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRKscC`s|jjdƒrtStS(Ns@include(RR(RR(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRNs(R"R#RR$R(((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR)Js tPamdRulec!B`sLeZdddddddgZddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'g!Zd d(d)d*d+d,gZd9d-„Zd9d.„Zed/„ƒZ d0„Z e d1„ƒZ e j d2„ƒZ e d3„ƒZej d4„ƒZe d5„ƒZed6„ƒZe d7„ƒZd8„ZRS(:trequiredt requisitet sufficienttoptionaltincludetsubstackt definitivetsuccesstopen_errt symbol_errt service_errt system_errtbuf_errt perm_deniedtauth_errtcred_insufficienttauthinfo_unavailt user_unknowntmaxtriestnew_authtok_reqdt acct_expiredt session_errt cred_unavailt cred_expiredtcred_errtno_module_datatconv_errt authtok_errtauthtok_recover_errtauthtok_lock_busytauthtok_disable_agingt try_againtignoretaborttauthtok_expiredtmodule_unknowntbad_itemt conv_againt incompletetdefaulttbadtdietoktdonetresetcC`sLd|_d|_d|_d|_||_||_||_||_dS(N( RRRt_controlt_argsRRRR(RRRRR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRas       cC`s5||jkr1||jkr1||jkr1tStS(N(RRRRR(RRRRR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRms cC`sRtj|ƒ}t|jdƒƒ}||jdƒ|jdƒ|jdƒ|ƒS(NtargsRtcontroltpath(t RULE_REGEXtsearchtparse_module_argumentstgroup(tclsRt rule_matchR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytrule_from_stringtscC`sP|jr4dj|j|j|jdj|jƒƒSdj|j|j|jƒS(Ns{0: <11}{1} {2} {3}t s{0: <11}{1} {2}(RtformatRRRtjoin(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR!zs +cC`s1t|jtƒr*ddj|jƒdS|jS(Nt[Rdt](t isinstanceRXtlistRf(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRscC`s[|jdƒrN|jddƒjddƒjddƒ}|jdƒ|_n ||_dS(NRgs = t=RRhRd(R(treplacetsplitRX(RR[((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR…s*cC`s|js gS|jS(N(RY(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRs cC`st|ƒ|_dS(N(R_RY(RRZ((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR“scC`s t|ƒS(N(R (R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR—scC`s?d}yt|ƒ}Wntk r*tSX|dkr;tStS(Ni(tintt ValueErrorRR(Rat string_numtnumber((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytis_action_unsigned_int›s  cC`s|jƒdS(Ni(R(R((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR§scC`s|jtkr+td|jd|jfSt|jtƒrk|jtj krktd|jd|jfSt|jt ƒr x‰|jD]{}|j dƒ\}}|tj krÊtd|d|jfS|tj kr‡tj|ƒ r‡td|d|jfSq‡Wntd|jfS(Ns Rule type, s, is not valid in rule sRule control, RksRule control value, sRule control action, sRule is valid (Rt VALID_TYPESRRRiRXR RR*tvalid_simple_controlsRjRmtvalid_control_valuestvalid_control_actionsRrR(RR[tvaluetaction((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR«s$ N(R"R#RtRuRvRRRt classmethodRcR!R$RtsetterRRRrRR(((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR*Us*     t PamdServicecB`s˜eZd„Zd„Zd„Zd„Zd„Zd d d d d„Zd d d d d„Z d d d d d„Z d„Z d „Z d „Z d „ZRS( cC`s¬d|_d|_x“|jƒD]…}|jƒjdƒrIt|ƒ}nN|jƒjdƒrmt|ƒ}n*|dkrˆt|ƒ}nt j |ƒ}|j |ƒqWdS(NR's@includeR( Rt_headt_tailt splitlinestlstripR(R%R)RR*Rctappend(RtcontentRt pamd_line((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRÃs   cC`sP|jdkr"||_|_n*|j|_d|_||j_||_dS(N(R|RR}RR(RR‚((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR€Òs    cC`s«|j}d}x•|dk r¦|j|||ƒrš|jdk ru|j|j_|jdk r|j|j_qn|j|_d|j_|d7}n|j}qW|S(Nii(R|RRRR(RRRRt current_linetchanged((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytremoveÛs     cC`scg}|j}xM|dk r^t|tƒrR|j|||ƒrR|j|ƒn|j}qW|S(N(R|RRiR*RR€R(RRRRtlinesRƒ((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pytgetís $ cC`s|j|||ƒrtStS(N(R‡RR(RRRR((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pythas_ruleùsc C`sý|j|||ƒ}t|ƒ}d} xÏ|D]Ç} t} |rd| j|krdt} || _qdn|rŽ| j|krŽt} || _qŽn|r¸| j|kr¸t} || _q¸n|râ| j|krât} || _qân| r.| d7} q.q.W| S(Nii(R‡R_RRRRRR( RRRRtnew_typet new_controltnew_pathtnew_argst rules_to_findtchangest current_rulet rule_changed((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyt update_ruleþs0  c C`s*|j|||ƒ}d} x|D]} t||||ƒ} | j} x(| dk rpt| tƒrp| j} qIW| dk rÄ| j|||ƒ rÄ| | _| | _| | _| | _| d7} q"| dkr"| jdkrë| |_n | | j_| j| _| | _| | _| d7} q"q"W| S(Nii( R‡R*RRRiR%RRR|( RRRRR‰RŠR‹RŒRRŽRtnew_rulet previous_rule((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyt insert_befores,   "           c C`s|j|||ƒ}d} xö|D]î} | j} x(| dk r[t| tƒr[| j} q4Wt||||ƒ} | dk rÄ| j|||ƒ rÄ| | _| | _| | _| | _| d7} q"| dkr"|j| _d| _| |j_| |_| | _| d7} q"q"W| S(Nii( R‡RRRiR%R*RRR}( RRRRR‰RŠR‹RŒRRŽRt next_ruleR’((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyt insert_afterNs*   "           cC`s|j|||ƒ}t|ƒ}d}xS|D]K}t}tƒ} tƒ} x^|D]V} | jdƒrnqSqSd| krœ| jdƒ\} } | | | |jƒds2|jƒS|j}q WtdfS(NisModule is valid(R|RRRR(RRƒ((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyRØs    cC`s’g}|j}x,|dk r=|jt|ƒƒ|j}qW|djdƒra|jdƒn|jddtj ƒj ƒƒdj |ƒdS(Nis# Updated by Ansibles# Updated by Ansible - s ( R|RR€R RR(tpoptinsertR tnowt isoformatRf(RR†Rƒ((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR!ás   N(R"R#RR€R…R‡RˆRR‘R”R–R¨RªRR!(((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR{Ás    0+ E  cC`sÈ|s gSt|tƒr:t|ƒdkr:|d r:gSt|tƒsU|g}ntƒ}xc|D][}xRtdtj|ƒƒD]8}|jdƒs¯tj dd|ƒn|j |ƒq„WqeW|S(NiiRgs\s*=\s*Rk( RiRjtlentfilterRtRULE_ARG_REGEXtfindallR(tretsubR€(tmodule_argumentst parsed_argsR titem((s?/usr/lib/python2.7/site-packages/ansible/modules/system/pamd.pyR_ñs,   c C`sŠtdtdtdddtƒdtdddtdtƒdtdddtƒdtdddtƒd tdddtƒd tddƒd tddƒd tdd ƒdtdddddddddddgƒdtddddƒdtdddtƒƒ dtdddd gfddd gfddd gfddd gfddd gfddd gfddd gfddd gfgƒ}tƒ}tjj|j d|j dƒ}y(t |dƒ}|j ƒ}WdQXWn3t k r}|j dd|t|ƒfƒnXt|ƒ}|j d}d}|dkr“|j|j d|j d|j d|j d |j d |j d |j d ƒ}nÉ|dkrô|j|j d|j d|j d|j d |j d |j d |j d ƒ}nh|dkrU|j|j d|j d|j d|j d |j d |j d |j d ƒ}n|dkr˜|j|j d|j d|j d|j d ƒ}nÄ|dkr#gt|j d ƒD]}|jd ƒr¸|^q¸rì|j dd!ƒn|j|j d|j d|j d|j d ƒ}n9|dkr\|j|j d|j d|j dƒ}n|jƒ\} } | s‡|j d| ƒntd"|dkd#|d$d%ƒ} |j ry| d"ry|j drß|j|ƒ| d$s4   Y{/    lÿ1  i