SambaとLDAP

さて前回のエントリでSamba側の設定は出来ましたが。LDAPのデータをSamba用に修正するところがまだでした。今日はここをメモ。
かなり右往左往したので不確かなところがあるかも・・・。

前回書いたとおりLDAPへの登録はsmbldap-toolというperlプログラムのツール軍で行います。本にはソースでインストールしても入るような事が書いてありましたが、どうやらSambaの開発用のレポジトリから外れたようです。展開したディレクトリをあさってこんな文章をみつけました。

samba-3.2.0/examples/LDAP/READMEいわく


The smbldap-tools have been removed from the samba svn
tree. The latest version will continue to be included
in Samba releases.

The smbldap-tools package can be downloaded individually from
https://gna.org/projects/smbldap-tools/

だそうです。ということで上記のURLからダウンロードしてインストールするところからですね。簡単に何をしないといけないか順に言うと。

  • smbldap-toolsインストール
  • 頑張って使えるように設定とかいじる
  • LDAPデータ初期化
  • Samba用LDAPデータ追加

Samba用LDAPデータの初期データはsmpldap-populateコマンドでいっぱつで入ります。そのあといくつかのコマンドを使ってユーザアカウントを追加となります。ではまずインストールから。CPANのモジュールとかいくつかいれる必要がありました。手順自体はDLしたファイルの中にあるINSTALLファイルに従いました。


$ wget http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5.tgz
$ tar zxvf mbldap-tools-0.9.5.tgz

  • /etc/yum.repos.d/DAG.repoに追加


[dag]
name=DAG Repository
baseurl = http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
gpgcheck=1
enabled=0


# yum --enablerepo=dag install perl-Crypt-SmbHash perl-Unicode-MapUTF8
# yum install perl-Digest-SHA1 perl-LDAP perl-IO-Socket-SSL

yumリポジトリを追加してperlのモジュールをいくつかいれています。後は各コマンドと設定ファイルを適当なディレクトリに移動するだけ。


# mkdir /etc/smbldap-tools
# mv *.conf /etc/smbldap-tools/
# mv smbldap* /usr/local/services/samba/sbin

さてここからはひたすら設定変更です。/etc/smbldap-toolsにおいたconfig2つとコマンド自体の中身もいくらかいじらないとダメでした。まずはconfigから。1つ目はsmbldap_bind.confです。ldapの管理ユーザの情報をいれるだけみたいです。設定方法の詳細みたいなのはなかったのでこの辺からは勘で戦いました・・・orz

  • /etc/smbldap-tools/smbldap_bind.conf


////////////////////
slaveDN="cn=Manager,dc=home"
slavePw="XXXXXXXX"
masterDN="cn=Manager,dc=home"
masterPw="XXXXXXXX"
////////////////////

slaveはたぶん設定しなくても良いと思います。(´・ω・`)

つづいてsmbldap.conf。長いので元ファイルとdiffした結果だけ。今動いているLDAPデーモンのID?見たいなのが必要となります。これはnetコマンドで取得できます。

  • SID取得


# net getlocalsid
SID for domain XXXXXX is: S-1-5-21-XXXXXXXX-XXXXXXXX-XXXXXXXX

  • /etc/smbldap-tools/smbldap.conf diffの結果


< SID="S-1-5-21-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX"

    • -

> SID="S-1-5-21-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX"
61c61< slaveLDAP="ldap.iallanis.info"

    • -

> slaveLDAP="127.0.0.1"
70c70< masterLDAP="ldap.iallanis.info"

    • -

> masterLDAP="127.0.0.1"
81c81< ldapTLS="1"

    • -

> ldapTLS="0"

後々見るとそんなに変更したとこないな・・・・。残念ながら細かい設定項目までは終えてません。これで設定自体はできたのでつづいてコマンドの修正をします。まずはsmbldap-populateから。例によってdiffです。smb.confで指定したSambaからLDAPを操作する際の管理用アカウントの設定を行います。

  • /usr/local/services/samba/sbin/smbldap-populate


100c100< $adminName = "root";

    • -

> $adminName = "Administrator";
111c111< $adminUidNumber = "0";

    • -

> $adminUidNumber = "998";
124c124< $adminGidNumber = "0";

    • -

> $adminGidNumber = "998";

続いてsmbldap_tools.pm。sambaをprefix変えてインストールしたためsmb.confのパスが違ってました。orz

  • /usr/local/services/samba/sbin/smbldap_tools.pm


50c50< $samba_conf = "/usr/local/samba/lib/smb.conf";

    • -

> $samba_conf = "/usr/local/services/samba/lib/smb.conf";

さてここまで来たら初期化->新アカウント追加です。まずはLDAPのデータを初期化します。(せっかく頑張っていれたのでちょっと悲しいですが)


# /etc/init.d/slapd stop
# rm /usr/local/services/ldap/var/openldap-data/*
# /etc/init.d/slapd start

LDAPのデータを直接消しています。データの置き場所はslapd.confのdirectoryで指定した場所となります。これでデータが初期化されたはずなのでsmpldap-populateコマンドで初期データをつっこみます。ついでに管理者のパスワードも設定しておきます。こんな感じ。


# smbldap-populate
# smbldap-passwd Administrator

実際データが入ったかどうかはgetentで調べれます。LDAPの設定したときにでたやつですね。


# getent passwd

Administrator:x:998:998:Netbios Domain Administrator:/home/Administrator:/bin/false

こんな感じ。ここまで来たら後は各ユーザのアカウントを追加するだけです。この辺は細かい事は割愛します。一点だけいっておくと-aオプションをつけることでSamba(Windows用)のデータも付加されるそうな。


# smbldap-groupadd -a -g 1001 admin
# smbldap-groupadd -a -g 1002 share
# smbldap-useradd -a -g 1001 -u 1001 admin
# smbldap-useradd -a -g 1002 -u 1002 share
# smbldap-passwd admin
# smbldap-passwd share

こんな感じ。ちなみに今回はuid,gidかえちゃったのでホームディレクトリの所有者権限を変えておきました。


# chown -R amind:admin /home/admin
# chown -R share:share /home/share

ふぅ・・・・長かった・・・・。駆け足で書いたからなんかいっぱい間違ってるかも。怪しいとことか気になるとことかあったら言ってもらえると幸いです。

ちなみにここまで来て言うのもなんですが、正直LDAP認証にせずSambaのアカウントでさくっと認証だけにとどめておけば良かったと思う限り。アカウント数少ないのに無駄に管理コストがあがるだけだよ。ワァァ━━━━━。゚(゚´Д`゚)゚。━━━━━ン!!!!
まあどっかの誰かのヒントくらいになるのを願うばかりです・・・。