3 �Xj;�@s"ddlZddlZGdd�d�ZdS)�Nc@s�eZdZGdd�de�Zddd�Zdd�Zdd �Zd d �Zd d �Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zddd�ZdS)�ClPwdc@seZdZdd�ZdS)zClPwd.NoSuchUserExceptioncCstj|d|f�dS)NzNo such user (%s))� Exception�__init__)�self�user�r�/usr/lib/python3.6/clpwd.pyrsz"ClPwd.NoSuchUserException.__init__N)�__name__� __module__� __qualname__rrrrr�NoSuchUserExceptionsr NcCs8i|_i|_i|_i|_|dkr.|jd�|_n||_dS)Ni�)� _user_key_map� _uid_key_map�_user_full_map� _uid_full_map�get_sys_min_uid�_min_uid)rZmin_uidrrrr szClPwd.__init__cCs|j�|jS)N)�_load_passwd_databaser )rrrr� get_user_dictszClPwd.get_user_dictcCs|j�|jS)N)rr)rrrr� get_uid_dictszClPwd.get_uid_dictcCs|j�|jS)N)rr)rrrr�get_user_full_dictszClPwd.get_user_full_dictcCs|j�|jS)N)rr)rrrr�get_uid_full_dictszClPwd.get_uid_full_dictc Cs0y |j�|Stk r*tj|��YnXdS)z* Return pw_entry for user N)r�KeyErrorrr )rrrrr�get_pw_by_name#s zClPwd.get_pw_by_namec Cs0y |j�|Stk r*tj|��YnXdS)z7 Return list of passwd entries for uid N)rrrr )r�uidrrr� get_pw_by_uid,s zClPwd.get_pw_by_uidc Cs2y|j�|jStk r,tj|��YnXdS)z& Returns uid for user N)r�pw_uidrrr )rrrrr�get_uid5sz ClPwd.get_uidc Cs2y|j�|jStk r,tj|��YnXdS)z` Returns homedir for a user @param user: string @return: string N)r�pw_dirrrr )rrrrr� get_homedir>szClPwd.get_homedircCs�|js�x�tj�D]|}||j|j<|j|jkr8g|j|j<|j|jj|�|j|jkr||j|j<|j|j krzg|j |j<|j |jj|�qWdS)zZ Loads the passwd database and fills user_to_uid and user_to_homedir maps N) r�pwdZgetpwallr�pw_namer�appendrr r)r�entryrrrrIs       zClPwd._load_passwd_databasec Cs>y|j�|}Wntk r.tj|��YnXdd�|D�S)zs Return names of users with uid specified @param uid: int @return: list of strings cSsg|] }|j�qSr)r!)�.0r#rrr� dsz#ClPwd.get_names..)rrrr )rrZentriesrrr� get_namesYs zClPwd.get_names��cCsnd}tjj|�rjt|d��J}xB|D]:}|jd�r"yt|jd�dj��Stk rZYq"Xq"WWdQRX|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�rZUID_MIN�N) �os�path�exists�open� startswith�int�split�strip� ValueError)rZ def_min_uidZLOGIN_DEF_FILE�lines�linerrrrgs    zClPwd.get_sys_min_uid)N)r')r r r rr rrrrrrrrrrr&rrrrrrs     r)r r*rrrrr�s