Python 中的 spwd 模块详解

Python 中的 ***spwd 模块*** 让我们能够访问 Unix 影子密码数据库。在这个数据库中,条目被存储为类似于元组的对象,其属性与 头文件中定义的 spwd 结构体 的成员非常相似。

下表列出了这个类似于元组的对象的属性,它们代表了存储在 Unix 影子密码数据库 中的条目信息:

索引

属性

含义 —

— 0

sp_namp

登录名 1

sp_pwdp

加密后的密码 2

sp_lstchg

最后一次更改的日期 3

sp_min

两次更改间隔的最小天数 4

sp_max

两次更改间隔的最大天数 5

sp_warn

密码过期前警告用户的天数 6

sp_inact

密码过期后账户被禁用前的天数 7

sp_expire

自 1970-01-01 起账户过期的天数 8

sp_flag

保留字段

Python 中的 ***spwd 模块*** 为我们定义了以下两个方法:

  • ***spwd.getspnam() 方法***
  • ***spwd.getspall() 方法***

注意: ***spwd*** 模块是 UNIX 特有的服务。因此,该模块的所有方法仅在 UNIX 版本的系统上可用。


## `*spwd.getspnam() 方法 -*`

Python 中的 `***spwd.getspnam()***` 方法主要用于获取指定用户名在 Unix 影子密码数据库中存储的条目。
使用此方法需要用户拥有足够的权限来访问影子密码数据库。如果用户没有足够的权限,将会引发 *PermissionError* 异常。

> **语法:** spwd.getspnam(name)
> 
> **参数:** 
> **name:** 一个字符串值,表示需要查询影子密码数据库条目的用户名。
> 
> **返回类型:** 该方法返回一个类 ‘spwd.struct_spwd‘ 的元组式对象,表示与指定用户名关联的影子密码数据库条目。

**代码:** 使用` spwd.getspnam()` 方法

            Python3 1==

    `

Python 程序解释 spwd.getspnam() 方法

导入 spwd 模块

import spwd

用户名

name = "ihritik"

使用 spwd.getspnam() 方法

获取指定用户名的

影子密码数据库条目

entry = spwd.getspnam(name)

打印获取到的条目

print("Shadow password database entry for the user name ‘%s‘:" %name)

print(entry)

用户名

name = "root"

使用 spwd.getspnam() 方法

获取指定用户名的

影子密码数据库条目

entry = spwd.getspnam(name)

打印获取到的条目

print("

Shadow password database entry for the user name ‘%s‘:" %name)

print(entry)

`

**输出:**
![os.getspnam() method output](https://media.geeksforgeeks.org/wp-content/uploads/20190713095518/getspnam.png)

*spwd.getspall() 方法 -*

Python 中的 ***spwd.getspall()*** 方法主要用于获取影子密码数据库中所有可用的条目。该方法同样要求用户拥有足够的权限来访问影子密码数据库。

> 语法: spwd.getspall()

>

> 参数: 不需要参数。

>

> 返回类型: 该方法返回一个类 ‘spwd.struct_spwd‘ 的元组式对象列表,其元素代表影子密码数据库的各个条目。

代码: 使用 spwd.getspall() 方法

Python3 1==


CODEBLOCK_c7e8168e

输出:

> Shadow password database entries:

> spwd.structspwd(spnamp=‘root‘, sppwdp=‘!‘, splstchg=17677, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘daemon‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘bin‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘sys‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘sync‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘games‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘man‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘lp‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘mail‘, sppwdp=‘*‘, splstchg=17536, spmin=0, spmax=99999, spwarn=7, spinact=-1, spexpire=-1, spflag=-1)

> spwd.structspwd(spnamp=‘news‘, sp_st

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43603.html
点赞
0.00 平均评分 (0% 分数) - 0