3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(Linux)EcoLinux10.04でActiveDirectory連携してもドメインユーザでログインできない

(Linux)ログイン時にActiveDirectoryのユーザ名・パスワードで認証できるようにするLinuxとActiveDirecotoryの認証統合を実現しました。

しかし、EcoLinuxではドメインユーザログインしようとしてもできません。

試しに SSH でコンソールログインしてやるとログインできます。wbinfo -u や id ドメインユーザ名 でもちゃんと情報の取得はできています。

Ubuntu10.04で連携したところ、これはうまく行きました。

ということで、EcoLinux10.04で使っているディスプレイマネージャが臭いんじゃないかなと判断しました。

(ディスプレイマネージャについては、(Linux)X WindowにおけるXディスプレイマネージャとXウィンドウマネージャを参考)

試しに、GNOMEのディスプレイマネージャGDM をインストールしたところ、ドメインユーザでログインできました。XDMやKDM,WDMでもOKでした。

で、ググってみると、http://sourceforge.net/tracker/index.php?func=detail&atid=894872&aid=3031824&group_id=180858で winbind での認証にバグがあるということでトラッカーにが追加されてます。

EcoLinux 10.04 で使っている LXDM を確認してみます。

# dpkg -l | grep lxdm

ii lxdm 0.2.0~svn2307+git20100408-0ubuntu1 LXDE display manager

バージョン 0.2.0 。まさにこのバグを踏んだようです。

現時点で LXDM のサイトを見ると新バージョン 0.3.0 が提供されています。

もしやバグが修正されているのでは?と思い最新化を試みました。

ソースから入れるのは面倒なので、Ubuntuリポジトリからのパッケージインストールを試みます。

Ubuntu のパッケージサイトを見ると11.04としてリリース予定のコードネーム natty には LXDM 0.3.0 のパッケージが公開されていました。

ということで、EcoLinuxリポジトリを一時的に natty を参照するようにして、LXDM のアップグレードを試みました。

まず、現在のリポジトリのバックアップを取ります。

# cp /etc/apt/sources.list /etc/apt/sources.list.bk

後は、/etc/apt/sources.list内の lucid の表記を natty に置換し下記コマンドを実行します。

# apt-get update ←情報取得

# apt-get install lxdm ←lxdmのみアップグレード

依存関係のエラーが表示されたら、apt-get -f install を実行すると無事に入りました。

# dpkg -l | grep lxdm

ii lxdm 0.3.0-0ubuntu1 GUI login manager for LXDE

# mv /etc/apt/sources.list.bk /etc/apt/sources.list

リポジトリを元に戻す

# apt-update

これで再起動すると下記のようになりました。

バージョンが 0.3.0 になってからユーザリストの機能が追加されたようです。

"その他"を選択し、ドメインのユーザ名とパスワードで認証すると、見事ログインできました。

どうやら0.3.0でバグは解決されたようです。

しかし、ログイン画面のユーザリストに、syslog とか usbmux とか saned とかシステムがらみのユーザが出てきてますね。

まず、このユーザリストの機能の有効無効の設定ですが、/etc/lxdm/lxdm.conf にて下記のようにするようです。(lxdm.confに関する設定が現時点はまだ出てないので実験した結果です。)

ユーザリスト機能を無効にする(従来のバージョンと同じくユーザ名手入力)

[userlist]

disable=0

ユーザリスト機能を有効にする

[userlist]

disable=1

/etc/lxdm/lxdm.conf の [userlist] 項目には white とか black とかの指定もあるんで、どのように設定するかを調べるため、LXDMソースを見て解析してみました。

lxdm.c の GKeyFile *lxdm_user_list(void) 関数でユーザリストに表示するしないの処理をしてるっぽいです。

white が許可リストのようで、black が拒否リストのようです。

基本的に getpwent() 関数で /etc/passwd ファイルからユーザ一覧を取得し、ホームのパスが /home/ ならレコードの先頭から3件を表示するようです。

で、white , black のはスペースでユーザ名を区切って指定するようですね。

whiteリストに載せているユーザは、ホームパスが /home/ じゃなくても表示されるようになるようです。

syslog , usbmux , saned はホームディレクトリが /home/ になってしまっているのでユーザリストに表示されたんですね。

なので、black リストで明示的に表示しないようしてやる必要があります。

下記はsyslog , usbmux , saned のユーザリスト表示を拒否し、rootを表示するようにした時の設定です。

[userlist]

disable=0

black=syslog usbmux saned

white=root

SambaとwinbindでActiveDirectoryと連携している場合はActiveDirectoryのユーザ情報も取得してくれるようです。

ただし、新規に作成したユーザ順です。。

GNOMEで使ってるGDMのように、過去のログイン履歴からユーザリストを表示してくれるような機能だったらよかったのですが、作成順となっては余り意味が無いので結局、ユーザリスト機能を無効にして使うこととしました。

この問題解決するのにかなりの時間費やしちゃいましたよ。。。

参考:

リポジトリの追加と鍵の追加