3 g;@s"ddlZddlZGdddZdS)Nc@seZdZGdddeZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZdddZdS)ClPwdc@seZdZddZdS)zClPwd.NoSuchUserExceptioncCstj|d|fdS)NzNo such user (%s)) Exception__init__)selfuserr/usr/lib/python3.6/clpwd.pyrsz"ClPwd.NoSuchUserException.__init__N)__name__ __module__ __qualname__rrrrrNoSuchUserExceptionsr NcCs8i|_i|_i|_i|_|dkr.|jd|_n||_dS)Ni) _user_key_map _uid_key_map_user_full_map _uid_full_mapget_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)rrrrget_user_full_dictszClPwd.get_user_full_dictcCs|j|jS)N)rr)rrrrget_uid_full_dictszClPwd.get_uid_full_dictc Cs0y |j|Stk r*tj|YnXdS)z* Return pw_entry for user N)rKeyErrorrr )rrrrrget_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 )ruidrrr get_pw_by_uid,s zClPwd.get_pw_by_uidc Cs2y|j|jStk r,tj|YnXdS)z& Returns uid for user N)rpw_uidrrr )rrrrrget_uid5sz ClPwd.get_uidc Cs2y|j|jStk r,tj|YnXdS)z` Returns homedir for a user @param user: string @return: string N)rpw_dirrrr )rrrrr get_homedir>szClPwd.get_homedircCs|jsxtjD]|}||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) rpwdZgetpwallrpw_namerappendrr r)rentryrrrrIs       zClPwd._load_passwd_databasec Cs>y|j|}Wntk r.tj|YnXdd|DS)zs Return names of users with uid specified @param uid: int @return: list of strings cSsg|] }|jqSr)r!).0r#rrr dsz#ClPwd.get_names..)rrrr )rrZentriesrrr get_namesYs zClPwd.get_namescCsnd}tjj|rjt|dJ}xB|D]:}|jdr"yt|jddjStk 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.defsrZUID_MINN) ospathexistsopen startswithintsplitstrip ValueError)rZ def_min_uidZLOGIN_DEF_FILElineslinerrrrgs    zClPwd.get_sys_min_uid)N)r')r r r rr rrrrrrrrrrr&rrrrrrs     r)r r*rrrrrs