3 0Q=j;ã@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