平台 | *inux |
pwd可以访问Unix用户帐户和密码数据库。
密码数据库项由结构体passwd(类似元组)表示,参见pwd.h:
属性 | 含义 |
pw_name | Login name |
pw_passwd | Optional encrypted password |
pw_uid | Numerical user ID |
pw_gid | Numerical group ID |
pw_gecos | User name or comment field |
pw_dir | User home directory |
pw_shell | User command interpreter |
除了pw_uid和pw_gid是整数外,其他都是字符串。
pwd.getpwuid(uid) | Return the password database entry for the given numeric user ID. |
pwd.getpwnam(name) | Return the password database entry for the given user name. |
pwd.getpwall() | Return a list of all available password database entries, in arbitrary order. |
简单示例:
In [4]: import pwd In [5]: pwd.getpwuid(os.getuid()) Out[5]: pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash') In [6]: pwd.getpwnam('root') Out[6]: pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash') In [7]: pwd.getpwall() Out[7]: [pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash'), pwd.struct_passwd(pw_name='adm', pw_passwd='x', pw_uid=3, pw_gid=4, pw_gecos='adm', pw_dir='/var/adm', pw_shell='/sbin/nologin'), ... pwd.struct_passwd(pw_name='dockerroot', pw_passwd='x', pw_uid=992, pw_gid=986, pw_gecos='Docker User', pw_dir='/var/lib/docker', pw_shell='/sbin/nologin')]
这种方式通常已经看不到密码,因为密码大多存在/etc/shadows,建议使用spwd。
平台 | *inux |
版本 | 2.5以上 |
spwd可以访问Unix shadow密码数据库。通常需要root权限。
密码数据库项由结构体spwd(类似元组)表示,参见shadow.h:
属性 | 含义 |
sp_pwd | Encrypted password |
sp_lstchg | Date of last change |
sp_min | Minimal number of days between changes |
sp_max | Maximum number of days between changes |
sp_warn | Number of days before password expires to warn user about it |
sp_inact | Number of days after password expires until account is blocked |
sp_expire | Number of days since 1970-01-01 until account is disabled |
sp_flag | Reserved |
除了sp_nam和sp_pwd是字符串外,其他都是整数。
spwd.getspnam(name) | Return the shadow password database entry for the given user name. |
spwd.getspall() | Return a list of all available shadow password database entries, in arbitrary order. |
简单示例:
In [1]: import spwd In [2]: spwd.getspnam('root') Out[2]: spwd.struct_spwd(sp_nam='root', sp_pwd='$6$heqCVK0U$MDsVT5qoyhgFnE2vlzK4geQzjS/nEVuQfQslhsYX.prJUpqP8SlZbFF6vOZjdgzpnA2YgOx/Hc461mHFSOaLm0', sp_lstchg=16548, sp_min=0, sp_max=99999, sp_warn=7, sp_inact=-1, sp_expire=-1, sp_flag=-1) In [3]: spwd.getspall() Out[3]: [spwd.struct_spwd(sp_nam='root', sp_pwd='$6$heqCVK0U$MDsVT5qoyhgFnE2vlzK4geQzjS/nEVuQfQslhsYX.prJUpqP8SlZbFF6vOZjdgzpnA2YgOx/Hc461mHFSOaLm0', sp_lstchg=16548, sp_min=0, sp_max=99999, sp_warn=7, sp_inact=-1, sp_expire=-1, sp_flag=-1), ... spwd.struct_spwd(sp_nam='dockerroot', sp_pwd='!!', sp_lstchg=16555, sp_min=-1, sp_max=-1, sp_warn=-1, sp_inact=-1, sp_expire=-1, sp_flag=-1)]
平台 | *inux |
spwd可以访问Unix组数据库。
密码数据库项由结构体group(类似元组)表示,参见pwd.h:
属性 | 含义 | 类型 |
gr_name | the name of the group | 字符串 |
gr_passwd | the (encrypted) group password; often empty | 字符串 |
gr_gid | the numerical group ID | integer |
gr_mem | all the group member’s user names | 字符串列表 |
注意gr_mem可能不完整
grp.getgrgid(gid) | Return the group database entry for the given numeric group ID. KeyError is raised if the entry asked for cannot be found. |
grp.getgrnam(name) | Return the group database entry for the given group name. KeyError is raised if the entry asked for cannot be found. |
grp.getgrall() | Return a list of all available group entries, in arbitrary order. |
简单示例:
In [1]: import grp In [2]: grp.getgrgid(72) Out[2]: grp.struct_group(gr_name='tcpdump', gr_passwd='x', gr_gid=72, gr_mem=[]) In [3]: grp.getgrnam('tmux') Out[3]: grp.struct_group(gr_name='tmux', gr_passwd='x', gr_gid=1009, gr_mem=['tmux', 'test']) In [4]: grp.getgrall() Out[4]: [grp.struct_group(gr_name='root', gr_passwd='x', gr_gid=0, gr_mem=[]), ... grp.struct_group(gr_name='dockerroot', gr_passwd='x', gr_gid=986, gr_mem=[])]
注意一些用户没有在/etc/group中注明所属组,另外以+或-开头的组名可能也不适用。
python2 pwd 英文文档
作者博客:http://my.oschina.net/u/1433482
python2 spwd英文文档
python2 grp英文文档