Attribut für Passwortgültigkeit

german

#1

Guten Tag zusammen,

mich würde es interessieren welches Attribut zuständig ist für die Gültigkeitsdauer des Passwortes.

Beim Windows AD ist es ja wie folgt:

[code]‘userAccountControl’

512 Enabled Account
514 Disabled Account
544 Enabled, Password Not Required
546 Disabled, Password Not Required
66048 Enabled, Password Doesn’t Expire
66050 Disabled, Password Doesn’t Expire
66080 Enabled, Password Doesn’t Expire & Not Required
66082 Disabled, Password Doesn’t Expire & Not Required
262656 Enabled, Smartcard Required
262658 Disabled, Smartcard Required
262688 Enabled, Smartcard Required, Password Not Required
262690 Disabled, Smartcard Required, Password Not Required
328192 Enabled, Smartcard Required, Password Doesn’t Expire
328194 Disabled, Smartcard Required, Password Doesn’t Expire
328224 Enabled, Smartcard Required, Password Doesn’t Expire & Not Required
328226 Disabled, Smartcard Required, Password Doesn’t Expire & Not Required[/code]

Bei UCS scheint dieses Attribut nur 2 Werte zu besitzen 512 und 514. Jedenfalls habe ich bei uns noch keine anderen Werte feststellen können. Mein User z.B (Aktiv und Passwort unbegrenzt Gültig) hat den Wert 512.
Ein anderer User (Aktiv und Passwort 180 Tage Gültig) ebenfalls wert 512.
Deaktivierter User 514.

Also muss ein anderes Attribut für die Passwortgültigkeit zuständig sein.

Danke im Voraus.

VG


#2

Hallo,

wenn ich mir die Doku zu userAccountControl (z.B. How to use the UserAccountControl flags to manipulate user account properties so ansehe, wird dort sowieso nur der Zustand des Kontos als Bitmap, nicht aber die Gültigkeitsdauer des Kennwortes gespeichert.
Insofern denke ich schon, dass das, was univention-s4search oder auch ldbsearch liefert, dem im AD Üblichen entspricht. Wobei ich jetzt keine Versuche unternommen habe, hier gezielte Werte mit Windows-Methoden zu setzen und dann das Resultat zu prüfen. Das, was ich bei einer kurzen Recherche gefunden habe, sieht erstmal nicht nach einer Einschränkung im Samba aus.

Viele Grüße,
Dirk Ahrnke


#3

[quote=“ahrnke”]Hallo,

wenn ich mir die Doku zu userAccountControl (z.B. How to use the UserAccountControl flags to manipulate user account properties so ansehe, wird dort sowieso nur der Zustand des Kontos als Bitmap, nicht aber die Gültigkeitsdauer des Kennwortes gespeichert.
Insofern denke ich schon, dass das, was univention-s4search oder auch ldbsearch liefert, dem im AD Üblichen entspricht. Wobei ich jetzt keine Versuche unternommen habe, hier gezielte Werte mit Windows-Methoden zu setzen und dann das Resultat zu prüfen. Das, was ich bei einer kurzen Recherche gefunden habe, sieht erstmal nicht nach einer Einschränkung im Samba aus.

Viele Grüße,
Dirk Ahrnke[/quote]

Guten Tag,

Danke erstmal für die Antwort.

Ich habe mich hier möglicherweise falsch ausgedrückt. Es geht mir nicht darum heraus zu finden wie lange das Passwort Gültig ist sondern den Zustand (NORMAL_USER oder DONT_EXPIRE_PASSWORD)wie von Ihnen beschrieben.

Hintergrund ist folgender:
Wir wollen zukünftig auf unseren OS X Systemen ein Tool verwenden, welches im Hintergrund die verbleibenden Tage anzeigt die einem User bleiben bevor sein Passwort geändert werden muss.
Das Tool funktioniert soweit Problemlos, ist jedoch auf ein Windows AD zugeschnitten.
Wir haben hier jedoch bestimmte Nutzer, dessen Passwort nicht abläuft, das führt in diesem Tool dazu, dass einem als Wert “10523598 Tage” zurück gibt - Eigentlich sollte das Tool jedoch bei dem Zustand “DONT_EXPIRE_PASSWORD” einen String bspw: “Nie” ausgeben.

Das Script was diese Abfrage macht sieht in etwa so aus:

[code]#!/bin/bash

Try & get the AD Node

userNode=$(dscl . -read /Users/$USER | awk ‘/OriginalNodeName:/{ getline; print substr($0,2,length()-1); }’)

If the above does not return anything, then presuming local account

if [[ -z $userNode ]];then
# Set userNode to localhost
userNode=“localhost”
fi

Get domain mac bound to

myDomain=$(dsconfigad -show | awk ‘/Active Directory Domain/{ print $NF }’)

Return 1st LDAP server from dig result

myLDAP=$(dig -t srv _ldap._tcp.${myDomain} | awk ‘/^_ldap/{ print $NF; exit }’)

Return the LDAP search base

mySearchBase=$(ldapsearch -LLL -Q -s base -H ldap://${myLDAP} defaultNamingContext | awk ‘/defaultNamingContext/{print $2}’)

#Get userAccountControl value from AD
uAC=$(dscl “$userNode” -read /Users/$USER dsAttrTypeNative:userAccountControl | awk ‘{ print $NF }’)

Check value of uAC & make sure that the account expires

if [[ $uAC =~ ^6 ]]; then
passExpires=“no”
else
passExpires=“yes”
fi

Get domains password expiry

expireAgeDays=$(ldapsearch -LLL -Q -s base -H ldap://${myLDAP} -b $mySearchBase maxPwdAge | awk -F- ‘/maxPwdAge/{print $2/10000000/86400}’)

Get date when local accounts password was last set

pwdSetDateRaw=$(dscl “$userNode” -read /Users/$USER SMBPasswordLastSet | awk ‘{ print $NF }’)

Convert to a UNIX epoch time stamp

pwdSetDateUnix=$(echo “$pwdSetDateRaw / 10000000 - 11644473600” | bc -l)

Convert to seconds

pwdSetDate=$(echo “$pwdSetDateUnix / 86400” | bc -l)

Get todays date

todayUnix=$(date +%s)

Convert to seconds

today=$(echo “$todayUnix / 86400” | bc -l)

Calculate days until expiry

daysUntilExp=$(echo “$expireAgeDays - ($today - $pwdSetDate)” | bc -l)

Get days until expiry in days

daysUntilExpNice=$(echo “$daysUntilExp” | awk -F. ‘{print $1}’)

Summary

echo “userNode: $userNode”
echo “myDomain: $myDomain”
echo “myLDAP: $myLDAP”
echo “mySearchBase: $mySearchBase”
echo “uAC: $uAC”
echo “passExpires: $passExpires”
echo “expireAgeDays: $expireAgeDays”
echo “pwdSetDateRaw: $pwdSetDateRaw”
echo “pwdSetDateUnix: $pwdSetDateUnix”
echo “pwdSetDate: $pwdSetDate”
echo “todayUnix: $todayUnix”
echo “today: $today”
echo “daysUntilExp: $daysUntilExp”
echo “daysUntilExpNice: $daysUntilExpNice”[/code]

Ich stehe bereits mit dem Entwickler dieses Tools in Kontakt, er würde das Gerne für Univention anpassen, findet jedoch genau so wie ich in der Dokumentation keinen Anhaltspunkt, welches Attribut den Zustand des Kontos liefert.

Viele Grüße.