Tengo usuarios que no son administradores que necesitan cambiar su contraseña. Aparentemente, el comando passwd
está limitado a administradores.
En el sitio web del servidor, hay un enlace para cambiar la contraseña, pero no funciona y los usuarios reciben un error. Internamente, Mac OS X registra el siguiente mensaje:
Jan 21 01:56:02 domain.com collabd[247]: [CSAuthService.m:506 ab93000 +206ms] No se pudo cambiar la contraseña del usuario 1234 con el error Error Domain=com.apple.OpenDirectory Code=4001 "La operación fue denegada porque las credenciales actuales no tienen los privilegios adecuados." UserInfo=0x1234567890abc {NSLocalizedDescription=La operación fue denegada porque las credenciales actuales no tienen los privilegios adecuados., NSLocalizedFailureReason=La operación fue denegada porque las credenciales actuales no tienen los privilegios adecuados.}
Tengo marcada la opción en el servicio del sitio web para permitir cambiar contraseñas. ¿Qué podría estar causando este error?
EDICIÓN: Los usuarios creados con la aplicación del servidor funcionan bien, pero el problema está con los usuarios creados con dscl
en la línea de comandos. Aquí están los comandos exactos utilizados para crear un usuario de prueba llamado "qwer":
sudo dscl . create /Users/qwer UniqueID 507
sudo dscl . create /Users/qwer PrimaryGroupID 20
sudo dscl . create /Users/qwer UserShell /bin/bash
sudo dscl . create /Users/qwer NFSHomeDirectory /Users/qwer
sudo mkdir /Users/qwer
sudo chown qwer:staff /Users/qwer
sudo passwd qwer
Luego ejecuté sudo dscl . read /Users/qwer
y lo comparé con sudo dscl . read /Users/uiop
para un segundo usuario de prueba.
En los registros, las siguientes claves son únicas para el usuario creado con la aplicación del servidor:
dsAttrTypeNative:_writers_hint
dsAttrTypeNative:_writers_jpegphoto
dsAttrTypeNative:_writers_passwd
dsAttrTypeNative:_writers_picture
dsAttrTypeNative:_writers_realname
LastName
RealName
Estas coinciden:
AppleMetaNodeLocation
PasswordPolicyOptions
PrimaryGroupID
RecordType
UserShell
Y estas son únicas para cada usuario (o en el caso de Password están enmascaradas):
dsAttrTypeNative:KerberosKeys
dsAttrTypeNative:ShadowHashData
AuthenticationAuthority
GeneratedUID
GeneratedUID
NFSHomeDirectory
RecordName
UniqueID
Password
Revisé AuthenticationAuthority pero lo único diferente es el nombre de usuario en la cadena, por lo que también podría considerarse equivalente.
Además, groups qwer
y groups uiop
dan exactamente la misma salida.
No parece haber nada que impida que "qwer" cambie su contraseña excepto el hecho de que su cuenta de usuario fue creada en la línea de comandos; sin embargo, el método dscl debería ser perfectamente válido.