type
status
date
slug
summary
tags
category
icon
password
Active Directory(AD)是微软推出的一种企业级目录服务,它提供了集中化管理网络资源、用户账户和权限的能力。在一个大型网络环境中,通常有成千上万的用户账户和计算机,其中每个用户都属于一个或多个用户组。因此,了解用户组的信息对网络管理非常重要。幸运的是,Python提供了一些库和API,可以方便地获取AD域用户组的信息。
pyad 是一个Python库,用于管理Microsoft Active Directory(AD)。它提供了一组API来对用户、组、计算机等对象进行操作,并与AD交互。
Python官方文档:pyad · PyPI
安装:
我们可以去这个地址下载pyad · PyPI的安装包,也可以通过pip在线安装
pyad在github上有介绍,pyad的gitbub地址,还需要配合pywin32进行使用
基本操作-连接域控
如果我们的电脑已经加入了AD域,使用如下代码可直接连接到AD域查询用户:
我们也可以传入
LDAP服务器、用户名和密码
来连接特定的域控制器和备用凭据,set_defaults中可设置的选项如下:ldap_server、gc_server、ldap_port、gc_port、用户名、密码和 ssl(True/False)如上代码中,ldap_server填写你的Active Directory(AD)域控服务器的主机名或IP地址,username和password应该填写一个具有查询AD权限的用户的凭据,这个用户可以是一个专门用于程序连接AD的服务账号。
在连接查询特定用户时,也可以传入选项。options参数,传递一些额外的设置或配置给ADUser.from_cn方法,以便根据你的需求来定制查询的行为。
基本对象操作-查询账号
Active Directory 中不同类型的对象有一阶 Python 类,ADUser 表示用户对象,ADGroup 表示组。所有对象都是 ADObject 的子类。大多数方法都在 ADObject 中定义,但子类通常提供额外的帮助程序方法(例如,ADUser 具有 set_password,ADGroup 具有 add_member)。
如果您已经知道对象的类型,则可以按可分辨名称、CN、UPN 和 GUID 连接到对象。
GUID是什么呢?
在Active Directory中,每个对象都有一个全局唯一标识符(GUID),用于唯一标识该对象。GUID是一个128位(16个字节)的数字,通常以十六进制表示。在上述代码中,user3 = aduser.ADUser.from_guid("XXX-XXX-XXX") 中的GUID就是指代Active Directory中特定对象的全局唯一标识符。
要查询特定对象的GUID,可以通过Active Directory管理工具来获取。下面是一种获取AD对象GUID的方法:
- 使用Active Directory Users and Computers(ADUC)工具来查找对象的GUID。打开ADUC,找到你要查询的对象,右键点击属性,然后在属性窗口中找到Object属性,其中包含了该对象的GUID。
- 使用PowerShell命令来查询对象的GUID。可以使用类似以下的PowerShell命令来获取对象的GUID:
其中username是你要查询的用户名。
一旦你获得了特定对象的GUID,就可以将其用于查找该对象或执行其他操作,就像上述代码中的user3 = aduser.ADUser.from_guid("XXX-XXX-XXX") 一样。
还可以将 pyad 工厂与任意 Active Directory 对象一起使用,并接收适当分类的 Python 对象:
创建账号
pyad库提供了pyad.aduser.ADUser类来表示域控中的用户账号。我们可以通过创建ADUser对象并设置相应的属性来创建新的用户账号。
下面是一个示例,演示如何创建一个新的用户账号:
输出:
这里可能出现用户创建成功,new_user.update_attribute 方法没有成功更新用户属性,大概有以下几种原因:
- 权限问题:确保你的账号具有足够的权限来修改AD域控用户的属性。如果权限不足,就无法成功更新用户属性。
- 属性名错误:确保你使用的属性名是正确的,要根据AD中的属性名来更新用户属性。
- AD域控设置:有些属性可能受到AD域控设置的限制,例如只读属性或者禁止修改的属性。
- 连接问题:如果连接到AD域控的过程中出现了问题,也会导致更新用户属性失败。
在使用 pyad 创建完 AD 域用户之后,还可以使用以下方法来更改用户的属性:
- update_attribute(attribute_name, value): 这个方法用于更新指定属性的值。
- update_password(new_password): 用于更改用户的密码。
- move_to(ou): 用于将用户移动到指定的组织单位(OU)下。
- unlock_account(): 用于解锁用户账户。
- disable_account() 和 enable_account(): 用于禁用和启用用户账户。
- delete(): 用于删除用户账户。
除了上述方法之外,你还可以获取用户的属性信息,如获取用户的名称、邮箱、部门等信息。
需要注意的是,具体可以更改的用户属性取决于你的 AD 域环境的设置和用户对象的属性。一般来说,常见的属性包括用户名、密码、显示名称、描述、邮箱、部门、电话等。通过这些方法,你可以对用户的各种属性进行增删改查的操作。
查询账号
输出:
完整代码
实现效果
- 作者:胡凯
- 链接:https://hukai.fun/article/4bccba57-4901-4bd5-907e-810267e66ff0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。