@banderas20 Buenas,
En el ldif la password la he configurado como tu lo tenías en tu fichero para menor confusión, pero ni idea, yo lo que tenia en mi script declarado para resetear passwords, o para ponerle una aleatoria al crear un user era declarar una función que ejecutaba esto:
SeleccionarCopiartr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 8 ; echo
Que no hace falta declarar una función, pero bueno como iba a ser llamado en varios procesos dentro del script... entonces cuando daba de alta un usuario nuevo, en el campo de password del ldif daba un valor a la variable $PW con PW=`getpasswd` donde getpasswd es una función que ejecutaba la línea de arriba, así con cada campo que iba preguntado el script por ejemplo al crear usuario nuevo metía eso en un ficheto temporal .ldif para ese usuario... el username, grupos a los que pertenece, otros como el uid lo generaba de forma automática dependiendo de los grupos a los que pertenecía, y luego imprimía todos los datos, passwd incluída por pantalla para mandársela al usuario en cuestión, así que quedaría en el LDIF despues de llamar a esa función para declarar el valor para $PW, te dejo un fragmento de donde se construía el .ldif en un alta por ejemplo, no le hagas caso al resto de variables porque son variables que iban siendo declaradas al ejecutar el script, quedate con la de passwd para comprender el ejemplo, pero ahi puedes poner si quieres una passwd en claro al hacer el .ldif a mano:
SeleccionarCopiarecho "${DN}
cn: ${USER}
gidNumber: ${GROUPID}
homeDirectory: ${HOMEDIR}
loginShell: ${TSHELL}
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowInactive: 30
shadowLastChange: ${LC}
shadowMax: 90
shadowWarning: 30
sn: ${USER}
uid: ${USER}
uidNumber: ${UIDNUMBER}
userPassword: ${PW}
givenName: ${NOMBREYAP}
mail: ${MAIL}" > ${TMPDIR}/ldapadduser.${PID}tmp
Te dejo un ejemplo muy chorra de lo que te digo más arriba de la función:
SeleccionarCopiarroot@flsanti:/scripts/bin# ./ldappasswd.sh
NpoQbto$
root@flsanti:/scripts/bin# ./ldappasswd.sh
8-i@xL7X
root@flsanti:/scripts/bin# ./ldappasswd.sh
52{["".&
root@flsanti:/scripts/bin# cat ldappasswd.sh
getpasswd ()
{
tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 8 ; echo
}
PW=`getpasswd`
echo $PW
Sobre el tema de usuarios locales/ldap, lo suyo es que los usuarios de ldap no existan localmente, si existe localmente en un servidor que tiene configurado el cliente para la autenticación contra un ldap bien configurado, pam, nsswitch, ldap.conf, etc..., por ejemplo en el fichero /etc/nsswitch.conf tu declaras en el campo passwd el orden, si primero tienes files, luego ldap, etc... si tu tienes en el fichero declarado así "passwd: files ldap", primero mira ficheros locales (/etc/passwd) y luego ldap, si tienes un usuario pepe en ldap pero también lo creas localmente, con el que va autenticar es con el local en ese caso porque files está delante.
Saludos.