人们!
有一个Active Directory(Windows)和一个Linux samba客户端。在Active Directory中,策略已经过调整,因此用户需要定期更改密码(密码有到期时间)。
我的问题非常简单:如果我在使用Samba的Linux机器上工作,我可以获得给定用户的到期时间吗?
答案 0 :(得分:4)
这取决于域控制器的配置。你可以尝试:
net ads user info USERNAME@DOMAIN.COM -S DC_SERVER_NAME -U USERNAME
其中USERNAME @ DOMAIN.COM是收集信息的帐户,DC_SERVER_NAME是您的域名控制器的主机名,USERNAME是您的用户名。
系统将提示您输入域密码。
现在您可以获得任何信息,包括您的密码到期日或
ads_pull_uint32 failed
在这种情况下,您的域控制器未配置为向UNIX系统提供帐户信息。
您可以与您的域管理员联系,说服他安装和配置Microsoft Windows Services for UNIX,以便此命令为您提供所需的信息。
这个答案可能令人沮丧。对我来说,因为我处于同样的情况,并且对这个话题进行了很多研究。
我的解决方法:当我设置域密码(smbpasswd -U USERNAME -r DC_SERVER_NAME)时,我将在未来80天设置日历提醒,因为它每90天到期一次。不完美,但可行。
<强> [UPDATE] 强> 我找到了一种用rpcclient确定域密码到期日期的方法,这是我的脚本:
#!/bin/bash
# author: Tim Wahrendorff 2016
# licence: Public Domain - https://wiki.creativecommons.org/wiki/Public_domain
#
# To use this script you need at least:
# sudo apt-get install libnotify-bin rpcclient
#
# Please set your account, password and domaincontroller to use this script
USER="username" # Domain accountname
PASS="Pa$$W0rd" # Domain password
DC="vmdc01" # Domaincontroller
### START RPCCLIENT query
if [ "x$USERDCID" == "x" ]; then
RPCLOOKUPID=$(rpcclient -U $USER%$PASS -c "lookupnames $USER" $DC 2> ./rpc_errFile)
USERDCID=$(echo "$RPCLOOKUPID" | grep -e '[0-9]\{4,9\} ' -o)
fi
QUERYUSER=$(rpcclient -U $USER%$PASS -c "queryuser $USERDCID" $DC 2> ./rpc_errFile)
EXPDATE=$(echo "$QUERYUSER" | grep 'Password must change Time' | grep -e '[a-Z]\{2\}, [0-9]\{2\} [a-Z]\{3\} [0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}' -o)
## Load rpc error Message
RPCERR=$(<./rpc_errFile)
## send notifications to Unity Desktop
if [ "x$RPCERR" != "x" ]; then
notify-send -i /usr/share/icons/gnome/48x48/status/dialog-error.png "Error while fetching expiration date of your domain password" "$RPCERR"
else
notify-send -i /usr/share/icons/gnome/48x48/status/dialog-information.png "your domain password expires at " "$EXPDATE h"
fi
### END RPCCLIENT query
我将此脚本配置为在自动启动时运行,当我的域密码在Unity通知中过期时,我会告诉我。随意扩展,改进和重新发布此脚本,它是公共领域。
[/ UPDATE]
答案 1 :(得分:0)
如果您使用的是kerberos票证, ADpassword 是一个简单的python应用程序,用于检查密码过期并要求用户进行更改。
答案 2 :(得分:0)
在Linux上,您可以使用pdbedit
pdbedit -L -v -u <username>
然后查找以下行:密码必须更改