« 07.01 NetBeansでJspressoコンパイル(画面) | ココ | 07.05 フライテンド・ワーカー・モデル »

2010年7月 3日

xrdp meets LDAP  このエントリーを含むはてなブックマーク 

xrdpで外から接続するのに、LDAPに登録してるアカウントで入れるほうがええよな…なんて思っていたので思い切ってやってみることに。とりあえずnsswitch.confとかの設定をLDAPのアカウントを使うように変える(system-config-authentication使えば簡単に)。そんで、/etc/pam.d/xrdp-sesmanをLDAPで入れるようにちょこっといじる。

いざ。…入れない。なんで。

/var/log/xrdp-sesman.log
[20100703-00:48:55] [INFO ] scp thread on sck 7 started successfully
[20100703-00:48:55] [INFO ] granted TS access to user tada
[20100703-00:48:56] [INFO ] starting Xvnc session...
[20100703-00:48:56] [ERROR] error getting user info for user tada
[20100703-00:48:56] [WARN ] can't read vnc password file -
[20100703-00:48:56] [ERROR] error getting user info for user tada
[20100703-00:48:56] [INFO ] starting xrdp-sessvc - xpid=3399 - wmpid=3398
[20100703-00:48:59] [INFO ] session 3397 - user tada - terminated

/var/log/secure
Jul 3 00:48:55 acubens xrdp-sesman: pam_unix(xrdp-sesman:auth): check pass; user unknown
Jul 3 00:48:55 acubens xrdp-sesman: pam_unix(xrdp-sesman:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
Jul 3 00:48:55 acubens xrdp-sesman: pam_unix(xrdp-sesman:account): could not identify user (from getpwnam(tada))
Jul 3 05:35:47 acubens xrdp-sesman: pam_unix(xrdp-sesman:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=tada

どうしたことかログインしたときのユーザー情報の取得で失敗してる? (ソースコードでも確認済み)
けど、perlでgetpwnam("user")をするとちゃんとLDAPユーザーでも情報を取得できるんよなぁ…。

なんか、ネット上で探し回った挙句、キャッシュが残ってるんじゃね? とかいうかすかな情報を頼りにxrdpを再起動したら、ログインでけた。SSHで確認するときなんてそんなの必要なかったのにぃ。

格闘を始めて早8時間以上…空はすっかり明るくなろうとしていましたとさ。

#%PAM-1.0
auth required pam_unix.so shadow nullok
auth required pam_env.so readenv=1
account required pam_unix.so

↑変更前の/etc/pam.d/xrdp-sesman(オリジナル)、↓変更後のpam.d/xrdp-sesman(LDAPログイン対応、system-authでホームディレクトリの自動生成をするようにした)

#%PAM-1.0
auth required pam_env.so readenv=1
auth sufficient pam_unix.so shadow nullok
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

account [default=bad success=ok user_unknown=ignore] pam_ldap.so use_first_pass
account sufficient pam_unix.so
account required pam_permit.so

session include system-auth


----system-auth:
session optional pam_keyinit.so revoke
session required pam_limits.so
session optional pam_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so

これで、なんとかLDAPのユーザーでログインしても自動的にGUIセッションで繋がるぞー(ただしLDAPのアカウントでposixAccount要素のログインシェルなど必要属性が揃っていないとログインに失敗する)。

By ただ at 06:06 カテゴリー ; プログラミングとか

« 07.01 NetBeansでJspressoコンパイル(画面) | 07月の記事 | 07.05 フライテンド・ワーカー・モデル »




トラックバック

このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1614