
    gZ"                     .   S SK Jr  S SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKrS SKJr  S SKrS SKJr  S S	KJ r J!r!J"r"J#r#   " S
 S\ 5      r$ " S S\$5      r% " S S\$5      r& " S S\$5      r' " S S\"5      r(g)    N)sd_utils)security)SamDB)
ndr_unpackndr_pack)GUID_DRS_ALLOCATE_RIDSGUID_DRS_CHANGE_DOMAIN_MASTERGUID_DRS_CHANGE_INFR_MASTERGUID_DRS_CHANGE_PDCGUID_DRS_CHANGE_RID_MASTERGUID_DRS_CHANGE_SCHEMA_MASTERGUID_DRS_GET_CHANGESGUID_DRS_GET_ALL_CHANGES GUID_DRS_GET_FILTERED_ATTRIBUTESGUID_DRS_MANAGE_TOPOLOGYGUID_DRS_MONITOR_TOPOLOGYGUID_DRS_REPL_SYNCRONIZEGUID_DRS_RO_REPL_SECRET_SYNC)
SCOPE_BASE)system_session)CommandCommandErrorSuperCommandOptionc                   n    \ rS rSrSrSr\R                  \R                  \R                  S.r
SS jrSrg)	cmd_dsacl_base.   zBase class for DSACL commands.z%prog [options])	sambaoptscredoptsversionoptsc                     UR                  U5      nU R                  R                  U< SU< S35        U R                  R                  US-   5        g )Nzdescriptor for z:

)get_sd_as_sddloutfwrite)self	sd_helper	object_dnprefix	desc_sddls        4/usr/lib/python3/dist-packages/samba/netcmd/dsacl.py	print_aclcmd_dsacl_base.print_acl9   s<    ,,Y7			FIFG			D()     N) )__name__
__module____qualname____firstlineno____doc__synopsisoptionsSambaOptionsCredentialsOptionsVersionOptionstakes_optiongroupsr,   __static_attributes__r/   r.   r+   r   r   .   s4    ( H ))..--*r.   r   c                       \ rS rSrSrSr\" SSS\SSS	9\" S
S/ SQ\S9\" SSSS/SS9\" SSSS9\" SSSS9\" SSSS9/rS r	S r
 SS jrSrg) cmd_dsacl_set?   z)Modify access list on a directory object.z+ The access control right to allow or deny -H--URL%LDB URL for database or target serverURLHhelptypemetavardestz--carchoicez
change-ridz
change-pdczchange-infrastructurezchange-schemazchange-namingallocate_ridszget-changeszget-changes-allzget-changes-filteredztopology-manageztopology-monitorz	repl-synczro-repl-secret-sync)rG   choicesrF   z--actionallowdenyzDeny or allow access
--objectdn#DN of the object whose SD to modifystringrF   rG   z--trusteednz!DN of the entity that gets access--sddlz1An ACE or group of ACEs to be added on the objectc                     UR                  US[        S9n[        U5      S:X  d   e[        [        R
                  US   S   S   5      $ )Nz(objectClass=*))base
expressionscope   r   	objectSid)searchr   lenr   r   dom_sid)r&   samdb	trusteednress       r+   find_trustee_sidcmd_dsacl_set.find_trustee_sid_   sN    ll	6G!+  -3x1}}(**CF;,?,BCCr.   c                 2   UR                  X#5      u  pEU H<  nUR                  UR                  5      nU R                  R	                  SU-  5        M>     U H<  nUR                  UR                  5      nU R                  R	                  SU-  5        M>     g)zAdd new ace explicitly.%WARNING: ignored INHERITED_ACE (%s).
zDWARNING: (%s) was already found in the current security descriptor.
N)dacl_prepend_acesas_sddl
domain_sidr$   r%   )r&   r'   r(   new_aceaiiiacesddls           r+   add_acecmd_dsacl_set.add_acee   s    ++I?C;;y334DIIOODtKL  C;;y334DIIOOcfjjk r.   Nc
                    UR                  5       n
UR                  U
5      nUc  Ub	  Ub  Ub  Uc  U R                  5       $ [        U[	        5       XS9n[
        R                  " U5      n[        [        [        [        [        [        [        [        [        [         ["        [$        [&        S.nU R)                  X5      nU(       a  UnOHUS:X  a  SX   < S[+        U5      < S3nO+US:X  a  SX   < S[+        U5      < S3nO[-        S	U-  5      eU R/                  XS
S9  U R1                  XU5        U R/                  XSS9  g )Nurlsession_infocredentialslprK   rN   z(OA;;CR;z;;)rO   z(OD;;CR;zWrong argument '%s'!old r)   new )get_loadparmget_credentialsusager   r   r   SDUtilsr   r   r
   r   r	   r   r   r   r   r   r   r   r   ra   strr   r,   rm   )r&   caractionobjectdnr_   rl   rD   r   r   r    rt   credsr^   r'   carssidrh   s                    r+   runcmd_dsacl_set.runo   s   ##%((,<S[FN ( 0I4E::<!.*:"'0$$U+	81)D!>!>!73#;(H#;$=5'C ##E5Gw+/9c#h?Gv+/9c#h?G5>??y6:Y'2y6:r.   r/   NNNN)r1   r2   r3   r4   r5   car_helpr   r}   takes_optionsra   rm   r   r<   r/   r.   r+   r>   r>   ?   s    3@H 	tW#JS	2wX 0G 	 	z7F2C.	0|"G	}#F	xQ	/M6Dl @D&;r.   r>   c            	       J    \ rS rSrSr\" SSS\SSS9\" S	S
SS9/r SS jrSr	g)cmd_dsacl_get   z(Print access list on a directory object.r@   rA   rB   rC   rD   rE   rP   rQ   rR   rS   Nc                     UR                  5       nUR                  U5      n[        U[        5       XvS9n[        R
                  " U5      n	U R                  X5        g )Nrp   )ry   rz   r   r   r   r|   r,   )
r&   r   rD   r   r   r    rt   r   r^   r'   s
             r+   r   cmd_dsacl_get.run   sP    ##%((,!.*:&$$U+	y+r.   r/   r   )
r1   r2   r3   r4   r5   r   r}   r   r   r<   r/   r.   r+   r   r      s@    2 	tW#JS	2|"G	
M @D,r.   r   c            	       \    \ rS rSrSr\" SSS\SSS9\" S	S
SS9\" SSSS9/rSS jrS r	Sr
g)cmd_dsacl_delete   z2Delete an access list entry on a directory object.r@   rA   rB   rC   rD   rE   rP   rQ   rR   rS   rT   z5An ACE or group of ACEs to be deleted from the objectNc                 (   UR                  5       nUR                  U5      nUb  Uc  U R                  5       $ [        U[	        5       XS9n	[
        R                  " U	5      n
U R                  XSS9  U R                  XU5        U R                  XSS9  g )Nrp   rv   rw   rx   )	ry   rz   r{   r   r   r   r|   r,   
delete_ace)r&   r   rl   rD   r   r   r    rt   r   r^   r'   s              r+   r   cmd_dsacl_delete.run   s    ##%((,<8+::<!.*:"'0$$U+	y6:	T2y6:r.   c                 2   UR                  X#5      u  pEU H<  nUR                  UR                  5      nU R                  R	                  SU-  5        M>     U H<  nUR                  UR                  5      nU R                  R	                  SU-  5        M>     g)zDelete ace explicitly.rd   z@WARNING: (%s) was not found in the current security descriptor.
N)dacl_delete_acesrf   rg   r$   r%   )r&   r'   r(   delete_acesdirj   rk   rl   s           r+   r   cmd_dsacl_delete.delete_ace   s    **9BC;;y334DIIOODtKL  C;;y334DIIOO_bffg r.   r/   r   )r1   r2   r3   r4   r5   r   r}   r   r   r   r<   r/   r.   r+   r   r      sO    < 	tW#JS	2|"G	xU	
M;hr.   r   c                   X    \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)	cmd_dsacl   zDS ACLs manipulation.setgetdeleter/   N)
r1   r2   r3   r4   r5   subcommandsr>   r   r   r<   r/   r.   r+   r   r      s/    K&K&K,.Kr.   r   ))samba.getoptgetoptr7   sambar   samba.dcerpcr   samba.samdbr   	samba.ndrr   r   samba.dcerpc.securityr   r	   r
   r   r   r   r   r   r   r   r   r   r   ldbr   re
samba.authr   samba.netcmdr   r   r   r   r   r>   r   r   r   r/   r.   r+   <module>r      s   &   !  *" " " "   	 % *W *"V;N V;r,N ,*#h~ #hL/ /r.   