2016-01-05 138 views
3

鄉親們!如何從Active Directory獲取用戶密碼到期日期?

有一個Active Directory(Windows)和一個Linux samba客戶端。在Active Directory中,策略以這種方式進行了調整,以便用戶需要定期更改密碼(密碼具有到期時間)。

我的問題很簡單:如果我使用Samba在Linux機器上工作,我可以獲得給定用戶的過期時間嗎?

+0

真的沒人知道這個問題的答案嗎? –

回答

4

這取決於域控制器的配置。你可以試試:

net ads user info [email protected] -S DC_SERVER_NAME -U USERNAME 

其中[email protected]是從收集信息的帳戶,DC_SERVER_NAME是您的域控制器的主機名,用戶名是您的用戶名。

系統會提示您輸入您的域名密碼。

現在你得到任何信息到您的帳戶,包括您的密碼的到期日,或者你在這種情況下獲得

ads_pull_uint32 failed 

,您的域控制器未配置爲提供賬戶信息的類UNIX系統。

您可以聯繫您的域管理員說服他安裝和配置Microsoft Windows Services for UNIX,以便該命令爲您提供所需的信息。

這個答案可能令人沮喪。這是對我來說,因爲我處於同樣的情況,並且對這個話題進行了很多研究。

我的解決方法:我設置了日後提醒80天,當我設置域密碼(smbpasswd -U USERNAME -r DC_SERVER_NAME)時,因爲它每90天過期一次。不完美,但可行。

[更新] 我找到了一種方法來確定與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]

+0

謝謝。我遇到了失敗的答案。 –

+0

更新時間:NT_STATUS_NONE_MAPPED –

+0

NT_STATUS_NONE_MAPPED的原因可能在您的smb.conf中。在我的smb.conf中,唯一與default不同的是addde這兩行: idmap uid = 10000-20000 idmap gid = 10000-20000 – mondjunge

0

如果您正在使用Kerberos票據,ADpassword是一個簡單的Python應用程序來檢查密碼過期,並要求用戶去改變它。

ADpassword in GitHub

相關問題