O campo "unicodePwd" ou atributo pode conter somente a senha sob o formato unicode e codificado com base64:
Senha para definir: MyNewPassw0rd Codificar esta senha para inseri-la no atributo "unicodePwd" é feito assim:
echo -n '"MyNewPassw0rd"' | iconv -f utf8 -t utf16le | base64 -w 0
Observe as aspas simples entre aspas duplas: as aspas simples estão aqui para as aspas duplas não são interpretadas pelo shell. A string em unicodePwd deve conter a senha e as aspas duplas.
Este comando nos dá:
IgBNAHkATgBlAHcAUABhAHMAcwB3ADAAcgBkACIA
Decodificando esse valor:
echo IgBNAHkATgBlAHcAUABhAHMAcwB3ADAAcgBkACIA | base64 -d
Este comando nos dá:
"MyNewPassw0rd"
Aplicado ao seu exemplo:
echo '"Temporal2"' | iconv -f utf8 -t utf16le | base64 -w 0 IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA
E o novo conteúdo do LDIF é:
dn: ........ changetype: modify delete: unicodePwd - add: unicodePwd unicodePwd:: IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA
Observe os pontos duplos duplos depois de unicodePwd: isso significa que os dados são codificados em base64.
Usar o LDIF através do ldapmodify agora está funcionando aqui para modificar qualquer senha de usuário quando o ldapmodify é executado usando a identidade de um usuário específico para quem nós delegamos os direitos de modificar todos os usuários.
Desde que eu estava tentando usar "replace: unicodePwd" como no LDIF a seguir, recebi um erro sobre direitos insuficientes.
dn: ........ changetype: modify replace: unicodePwd unicodePwd:: IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA
Usando duas ações ("delete: unicodePwd" e "add: unicodePwd") o problema de direitos insuficientes desapareceu. Obrigado :)
Felicidades,
mathias