▼Courier-IMAP + authldap で UNIXの追加グループ権限が有効にならない

Keywords: authldap, supplementary group, Courier-IMAP, Filesystem permissions-based shared folders

$Id$


仕様のようです。

▽状況

IMAP 共有フォルダ を chmod・chgrp 属性で制御している場合、 通常であれば initgroups(uid,gid) にて /etc/group での追加グループが設定されるので問題ないのですが、

authldap でとってきた uid# や gid# というのは、一般には UNIXローカル側で意味があるわけでないためか、 initgroups() するのではなく、 setgid()とsetuid()だけ するように なっています。

従って、authldap で認証されたユーザは追加グループが有効になりません。

authldapを使うのはUNIXアカウントがLDAP上にある場合ばかりではなく、 全ユーザ同一uid#,gid#でバーチャル郵便箱を作る場合も多いので、 この仕様はある意味正しい。

▽解決方法

▽デバッグ出力

imap/imaplogin.c に パッチ を当てて認証後の情報を見ると、UNIX (PAM) 認証と LDAP 認証での違いが出ます。

LDAP認証 (authldap)
Jun  2 17:34:02 mail imapd: login_callback: sysusername=(null),sysuserid=1234,sysgroupid=10,homedir=/home/kabe,address=kabe,options=(null)
UNIX認証 (authpam)
Jun  2 17:38:19 mail imapd: login_callback: sysusername=kabe,sysuserid=(null),sysgroupid=567,homedir=/home/kabe,address=kabe,options=(NULL)

auth_callback_default() で以下のような動作をするので、 LDAP認証では追加グループが使えません。


▼凡例

authldap, authpam
courier-authlib用語
supplementary group / 追加グループ
/etc/passwd の書かれているプライマリグループではなく、 各ユーザに /etc/group に追加で付与するUNIXグループ。 initgroups(3) しないと権限はつかない。
共有フォルダ
IMAPには各自の「受信トレイ」("INBOX")の他に、 他ユーザの公開フォルダをアクセスできるようにする 共有フォルダ機能がある。 Courier-IMAP では "shared.user.folder" として見える。

かべ@sra-tohoku.co.jp