£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
۔*j;                 @   s"   d dl Z d dlZG dd dZdS )    Nc               @   s   e Zd ZG dd deZd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dZdS )ClPwdc               @   s   e Zd Zdd ZdS )zClPwd.NoSuchUserExceptionc             C   s   t j| d|f  d S )NzNo such user (%s))	Exception__init__)selfuser r   /usr/lib/python3.6/clpwd.pyr      s    z"ClPwd.NoSuchUserException.__init__N)__name__
__module____qualname__r   r   r   r   r   NoSuchUserException   s   r   Nc             C   s8   i | _ i | _i | _i | _|d kr.| jd| _n|| _d S )Ni  )_user_key_map_uid_key_map_user_full_map_uid_full_mapget_sys_min_uid_min_uid)r   Zmin_uidr   r   r   r   	   s    zClPwd.__init__c             C   s   | j   | jS )N)_load_passwd_databaser   )r   r   r   r   get_user_dict   s    zClPwd.get_user_dictc             C   s   | j   | jS )N)r   r   )r   r   r   r   get_uid_dict   s    zClPwd.get_uid_dictc             C   s   | j   | jS )N)r   r   )r   r   r   r   get_user_full_dict   s    zClPwd.get_user_full_dictc             C   s   | j   | jS )N)r   r   )r   r   r   r   get_uid_full_dict   s    zClPwd.get_uid_full_dictc             C   s0   y| j  | S  tk
r*   tj|Y nX dS )z*
        Return pw_entry for user
        N)r   KeyErrorr   r   )r   r   r   r   r   get_pw_by_name#   s    zClPwd.get_pw_by_namec             C   s0   y| j  | S  tk
r*   tj|Y nX dS )z7
        Return list of passwd entries for uid
        N)r   r   r   r   )r   uidr   r   r   get_pw_by_uid,   s    zClPwd.get_pw_by_uidc             C   s2   y| j  | jS  tk
r,   tj|Y nX dS )z&
        Returns uid for user
        N)r   pw_uidr   r   r   )r   r   r   r   r   get_uid5   s    zClPwd.get_uidc             C   s2   y| j  | jS  tk
r,   tj|Y nX dS )z`
        Returns homedir for a user
        @param user: string
        @return: string
        N)r   pw_dirr   r   r   )r   r   r   r   r   get_homedir>   s    zClPwd.get_homedirc             C   s   | j sxtj D ]|}|| j|j< |j| j kr8g | j |j< | j |j j| |j| jkr|| j|j< |j| j	krzg | j	|j< | j	|j j| qW dS )zZ
        Loads the passwd database and fills user_to_uid and user_to_homedir maps
        N)
r   pwdZgetpwallr   pw_namer   appendr   r   r   )r   entryr   r   r   r   I   s    zClPwd._load_passwd_databasec             C   s>   y| j  | }W n tk
r.   tj|Y nX dd |D S )zs
        Return names of users with uid specified
        @param uid: int
        @return: list of strings
        c             S   s   g | ]
}|j qS r   )r!   ).0r#   r   r   r   
<listcomp>d   s    z#ClPwd.get_names.<locals>.<listcomp>)r   r   r   r   )r   r   Zentriesr   r   r   	get_namesY   s
    zClPwd.get_names  c             C   sn   d}t jj|rjt|dJ}xB|D ]:}|jdr"yt|jdd j S  tk
rZ   Y q"X q"W W dQ R X |S )z
        Return system defined MIN_UID from /etc/login.def or def_min_uid
        @param def_min_uid: int
        @return: MIN_UID: int
        z/etc/login.defsrZUID_MIN   N)	ospathexistsopen
startswithintsplitstrip
ValueError)r   Zdef_min_uidZLOGIN_DEF_FILElinesliner   r   r   r   g   s    

zClPwd.get_sys_min_uid)N)r'   )r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r   r   r   r   r   r      s   

			r   )r    r*   r   r   r   r   r   <module>   s   