2011/5/9 Ferran <fer...@fompi.net>:
> On 05/09/11 10:43, muzzol wrote:
>> tens els atributs shadow als usuaris?
>
> És això, oi? ;)
>
> shadowExpire: -1
> shadowInactive: -1
> shadowLastChange: -1
> shadowMax: -1
> shadowMin: -1
> shadowWarning: -1
>

si


> (els -1 els he possat manualment per no-expirartzar l'account)
> No se si algún dels altres objects fan mal...
>
> objectClass: sambaSamAccount
> objectClass: shadowAccount
> objectClass: posixAccount
> objectClass: inetOrgPerson
> objectClass: MailAccount
>

mal no fan :)

>> hi ha vàries implementacions de polítiques de password amb LDAP.
>
> Alguna bona referència? Tot el que he vist està molt dispersat, o són
> únicament descripcions dels objectes i grups de tal especificació ldap.
>


struct spwd {
        char *sp_namp; /* user login name */            uid
        char *sp_pwdp; /* encrypted password */         userpassword
        long sp_lstchg; /* last password change */      shadowLastChange
        int  sp_min; /* days until change allowed. */   shadowMin
        int  sp_max; /* days before change required */  shadowMax
        int  sp_warn; /* days warning for expiration */ shadowWarning
        int  sp_inact; /* days before account inactive */       shadowInactive
        int  sp_expire; /* date when account expires */ shadowExpire
        int  sp_flag; /* reserved for future use */     shadowFlag
  }
El significat:
The meanings of each field are:

       ·  sp_namp - pointer to null-terminated user name

       ·  sp_pwdp - pointer to null-terminated password

       ·  sp_lstchg - days since Jan 1, 1970 password was last changed

       ·  sp_min - days before which password may not be changed

       ·  sp_max - days after which password must be changed

       ·  sp_warn - days before password is to expire that user is
warned of pending
          password expiration

       ·  sp_inact - days after password expires that account is
considered inactive and
          disabled

       ·  sp_expire - days since Jan 1, 1970 when account will be disabled

       ·  sp_flag - reserved for future use



i el RHDS (389 DS) també implementa aquesta:

http://directory.fedoraproject.org/wiki/Account_Policy_Design

jo la vaig provar i vaig tenir problemes de compatibilitat, així que
me vaig quedar amb els atributs shadow, que tot i ser una mica
limitats són més estàndard.

vaig fer un script per comprovar l'estat del compte:

#############################################################################


#!/bin/bash

USUARI="$1"

[ -z "$USUARI" ] && echo "ERROR: has d'especificar un usuari" && exit 1

BASE_USUARIS="ou=Users,dc=exemple.com,dc=global"

# cercam el valor del darrer canvi de pass de l'usuari especificat.
# el valor de retorn és el número de dies des de l'1 de gener del 1970
SHADOWLASTCHANGE=`ldapsearch -x -LLL -b "$BASE_USUARIS"
"(uid=$USUARI)" shadowLastChange | grep "^shadowLastChange: " | cut
-d" " -f2-`

# valors fixos de proves
# SHADOWLASTCHANGE="14763"
# SHADOWLASTCHANGE="15000"
# SHADOWLASTCHANGE="14993"
# SHADOWLASTCHANGE="14990"

# si no trobam el valor tornam un error i informam als administradors :P
if [ -z "$SHADOWLASTCHANGE" ]; then
    echo "ERROR: No s'ha trobat l'usuari $USUARI"
    exit 1
fi

# cercam els valors de les polítiques de l'usuari
SHADOWMAX=`ldapsearch -x -LLL -b "$BASE_USUARIS" "(uid=$USUARI)"
shadowmax | grep "^shadowmax: " | cut -d" " -f2-`
SHADOWWARNING=`ldapsearch -x -LLL -b "$BASE_USUARIS" "(uid=$USUARI)"
shadowwarning | grep "^shadowwarning: " | cut -d" " -f2-`
SHADOWINACTIVE=`ldapsearch -x -LLL -b "$BASE_USUARIS" "(uid=$USUARI)"
shadowinactive | grep "^shadowinactive: " | cut -d" " -f2-`

# echo "DEBUG SHADOW: SHADOWMAX [$SHADOWMAX] SHADOWWARNING
[$SHADOWWARNING] SHADOWINACTIVE [$SHADOWINACTIVE]"

# si falta algun d'aquests valors tornam un error i avisam als administradors
if [ -z "$SHADOWMAX" ] || [ -z "$SHADOWINACTIVE" ] || [ -z
"$SHADOWWARNING" ]; then
    echo "falta valor SHADOWINACTIVE"
    exit 0
fi


# càlculs

# segons diaris = 86400
# segons unix = date +%s
# avaluam el dia actual en format unix
SEGONSUNIX=`date +%s`
DIESACTUAL=`expr $SEGONSUNIX / 86400`

# dies que fa que ha canviat el pass
VIGENCIA=`expr $DIESACTUAL - $SHADOWLASTCHANGE`

# periode correcte de l'usuari (no esta ni expirat ni en gracia)
PERIODEACTIU=`expr $SHADOWMAX - $SHADOWWARNING`


echo "DEBUG: SHADOWLASTCHANGE [$SHADOWLASTCHANGE] VIGENCIA [$VIGENCIA]
PERIODEACTIU [$PERIODEACTIU] DIESACTUAL [$DIESACTUAL]"

# comprovacions del password
############################
if [ "$VIGENCIA" -gt "$SHADOWINACTIVE" ]; then
    # no se deixa entrar a l'usuari
    ESTAT="INACTIU"
elif [ "$VIGENCIA" -gt "$SHADOWMAX" ]; then
    # ser força el canvi de pass i no se deixa entrar l'usuari
    ESTAT="EXPIRAT"
elif [ "$VIGENCIA" -gt "$PERIODEACTIU" ]; then
    # se suggereix el canvi de pass i se deixa entrar l'usuari
    ESTAT="GRACIA"
else
    # tot OK, se deixa entrar l'usuari
    ESTAT="ACTIU"
fi

echo "ESTAT: $ESTAT"


#############################################################################


has de jugar amb el valor shadowLastChange de l'usuari. amb el
phpldapadmin ja t'apareix directament un calendari quan modifiques
aquest valor.


> El pam.d/chage és:
>
> auth       include      system-auth
> account    include      system-auth
> password   include      system-auth
>
> (l'he copiat vilment del passwd)
>
> system-auth is:
>
> auth       required     pam_env.so
> auth       sufficient   pam_unix.so try_first_pass likeauth nullok
> auth       sufficient   pam_ldap.so use_first_pass
> auth       required     pam_deny.so
>
> account    sufficient   pam_ldap.so
> account    required     pam_unix.so
>
> password   required     pam_cracklib.so difok=2 minlen=8 dcredit=2
> ocredit=2 try_first_pass retry=3
> password   sufficient   pam_unix.so try_first_pass use_authtok nullok
> ssha md5 shadow
> password   sufficient   pam_ldap.so use_authtok use_first_pass
> password   required     pam_deny.so
>
> session    required     pam_limits.so
> session    required     pam_unix.so
> session    optional     pam_ldap.so
>

no veig res estrany aquí, però fent una petita cerca no estic segur
que el chage pugui xerrar amb LDAP, igual te podries fer tu mateix un
script que modifiqui els paràmetres del LDAP.


o prova de jugar amb els valors shadow a veure si canvia res.

fins ara,

muzzol


-- 
========================
     ^ ^
     O O
    (_ _)
muzzol(a)muzzol.com
========================
jabber id: muzzol(a)jabber.dk
========================
No atribueixis qualitats humanes als ordinadors.
No els hi agrada.
========================
"El gobierno español sólo habla con terroristas, homosexuales y
catalanes, a ver cuando se decide a hablar con gente normal"
Jiménez Losantos
========================
--
_______________________________________________
Comandob mailing list
Comandob@badopi.org
http://lists.badopi.org/mailman/listinfo/comandob

Responder a