使用されているアカウントはコンピュータアカウントです

以下は Snow Leopard Server の Open Directory で Samba を使って Windows のログオン認証をするときの話. しかし, Samba+LDAP環境に共通するものがあると思う.

特定のユーザだけが, Windows

使用されているアカウントはコンピュータアカウントです。このサーバーにアクセスするにはグローバルユーザーアカウント又はローカルユーザーアカウントを使用して下さい。

と言われてログオンできない. Mac や, LDAP 経由では正しく認証される.

このメッセージの解釈だが, 最初は, ユーザ名と同一, またはユーザ名$ のようなコンピュータアカウントが重複して存在する, のような意味かと漠然と思っていたが, そうではなくて, このユーザの LDAP のデータに

acctFlags: [W ]

があって(最新のバージョンのSambaではSambaAcctFlagsだそう). W はworkstation=コンピュータアカウント, だということだった. 通常のユーザアカウントには acctFlags は含まれない.

この状況を確認,修正するのは, GUIではたぶんできなくて, 確認にはターミナルで slapcat を使えばいい. このユーザの acctFlags を消去して正常な状態に戻すには, ldapmodify を使えばいい.

つまり

root@ldapserver # cat /tmp/ldapmods
dn: uid=問題のユーザの指定
changetype: modify
delete: acctFlags

root@ldapserver # ldapmodify -x -h localhost  -W -D '管理ユーザの指定' -f /tmp/ldapmods 
Enter LDAP Password:********
modifying entry "問題のユーザの指定"