![Samba 成员服务器 - 用户是否被禁用?](https://linux22.com/image/701151/Samba%20%E6%88%90%E5%91%98%E6%9C%8D%E5%8A%A1%E5%99%A8%20-%20%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E8%A2%AB%E7%A6%81%E7%94%A8%EF%BC%9F.png)
我有一个 Debian Samba 文件服务器作为成员服务器绑定到 Active Directory。
我们在此服务器上为每个员工创建一个与其用户名匹配的员工文件夹。
当员工辞职时,他们的 Active Directory 用户帐户将被停用并移至已停用的用户 OU。
我想通过编程删除已离职员工的员工文件夹,但找不到可以区分在职员工和停职员工的工具。我尝试过:“wbinfo --verbose -i”和“id”命令。
是否有人知道一个 Linux 命令,我可以使用它来确定员工是处于活跃状态还是停用状态,或者说明用户帐户所在的 OU。
答案1
您应该坚持使用 openldapldapsearch
实用程序,它将为您提供所需的信息。启动它时使用的开关和其他参数取决于您的 AD 配置,例如域名、LDAP 根内的 OU 坐标等。
答案2
建议 1
使用 LDAP,您可以检查 userAccountControl 属性来验证 AD 帐户状态。
此标志是以十进制表示的二进制数据,因此您需要确保计算和检查正确的十进制值
例如:
UF_NORMAL_ACCOUNT = 512
UF_ACCOUNT_DISABLE = 2 +
---
514
因此,被禁用的用户帐户将具有userAccountControl = 514
。
所有用户帐户都是“正常”帐户(512) - 非正常帐户包括域信任帐户(2048)等。
还有许多其他与此属性相关的标志,但有些标志尽管看起来如此,但实际上并无效。但是,对于标准用户帐户来说,512 = 活动和 514 = 禁用是可靠的。
SelfADSI.org 上汇编了这些标志的有用列表:http://www.selfadsi.org/ads-attributes/user-userAccountControl.htm
建议 2
或者,根据您的情况,更简单的 LDAP 方法可能是查看帐户路径是否位于“非活动”OU 中。如果您将搜索根设置为非活动 OU,然后获取其中存在的帐户列表,则可以将这些列表与您拥有的现有用户主驱动器列表进行比较。
答案3
您可以解析“帐户标志”输出来pdbedit
检索此信息。
此示例将向您展示如何执行此操作的机制:
root@dc:~# { pdbedit -v -u Disabled.UserName | \
grep '^Account Flags.*D' >/dev/null; } && echo disabled
disabled