J'ai des utilisateurs non administrateurs qui doivent changer leur mot de passe. Le site passwd
est apparemment limitée aux administrateurs.
Sur le site web du serveur, il y a un lien pour changer le mot de passe, mais il ne fonctionne pas, et les utilisateurs reçoivent une erreur. En interne, Mac OS X enregistre le message suivant :
Jan 21 01:56:02 domain.com collabd[247]: [CSAuthService.m:506 ab93000 +206ms] Could not change password for user 1234 with error Error Domain=com.apple.OpenDirectory Code=4001 "Operation was denied because the current credentials do not have the appropriate privileges." UserInfo=0x1234567890abc {NSLocalizedDescription=Operation was denied because the current credentials do not have the appropriate privileges., NSLocalizedFailureReason=Operation was denied because the current credentials do not have the appropriate privileges.}
Dans le service Web, j'ai coché l'option permettant de modifier les mots de passe. Quelle serait la cause de cette erreur ?
EDIT : Les utilisateurs créés avec l'application Serveur fonctionnent bien, mais le problème se situe au niveau des utilisateurs créés. avec dscl
sur la ligne de commande . Voici les commandes exactes utilisées pour créer un utilisateur de test nommé "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
J'ai ensuite exécuté sudo dscl . read /Users/qwer
et l'a comparé avec sudo dscl . read /Users/uiop
pour un deuxième utilisateur test.
Dans les enregistrements, les clés suivantes sont uniques à l'utilisateur créé avec l'application Serveur :
dsAttrTypeNative:_writers_hint
dsAttrTypeNative:_writers_jpegphoto
dsAttrTypeNative:_writers_passwd
dsAttrTypeNative:_writers_picture
dsAttrTypeNative:_writers_realname
dsAttrTypeNative:_writers_UserCertificate
LastName
RealName
Ils correspondent :
AppleMetaNodeLocation
PasswordPolicyOptions
PrimaryGroupID
RecordType
UserShell
Et celles-ci sont uniques pour chaque utilisateur (ou dans le cas du mot de passe, elles sont masquées) :
dsAttrTypeNative:KerberosKeys
dsAttrTypeNative:ShadowHashData
AuthenticationAuthority
GeneratedUID
GeneratedUID
NFSHomeDirectory
RecordName
UniqueID
Password
J'ai vérifié AuthenticationAuthority mais la seule chose différente est le nom d'utilisateur dans la chaîne de caractères, donc cela pourrait être considéré comme équivalent également.
En outre, groups qwer
y groups uiop
donnent exactement le même résultat.
Rien ne semble empêcher "qwer" de changer son mot de passe, si ce n'est le fait que son compte utilisateur a été créé en ligne de commande ; cependant, la méthode dscl devrait être parfaitement valable.