$Id: README.ja 145 2008-06-14 14:30:20Z kou $
ActiveSambaLdap
ActiveSambaLdapはSamba用LDAPエントリを管理するための ActiveRecord風なライブラリです.また,smbldap-toolsのような 管理用コマンドラインツールも提供します.
Kouhei Sutou <kou@cozmixng.org>
Ruby's.
asl-devel-ja@rubyforge.org
<URL:http://rubyforge.org/mailman/listinfo/asl-devel-ja/>
<URL:http://asl.rubyforge.org/activesambaldap/>
まず,Rails用プラグインをインストールします.以下のURLは trunk用ですので,環境にあわせて変更してください.
% script/plugin install svn://rubyforge.org/var/svn/asl/trunk/rails/plugin/active_samba_ldap
次に,Rails用ActiveSambaLdap環境を構築します.
% script/generate scaffold_active_samba_ldap
config/ldap.ymlが生成されるので,環境にあわせて編集します. 指定できるオプションは,以下の「設定ファイルのオプション」の 項を参考にしてください.
はじめに,Samba + LDAP環境を初期化する必要があります. script/serverなどでRailsを起動し, http://localhost:3000/sambaにアクセスしてください. 「Populate Samba + LDAP environment」というリンクがあるので, それを使ってSamba + LDAP環境を初期化します.
あとは,ActiveRecordを利用した開発と同じように, User/Computer/Groupクラスなどを使用して開発してください.
asl-*というコマンドを使います.asl-samba-*はsmb.confに設定す るためのコマンドで,ターミナルから使うことはありません.
まず,あなたの環境にあわせて設定ファイルを編集します.デフォ ルトで読み込まれるファイルは--helpオプションをつけて起動する と確認できます.asl-*のどのコマンドでも表示されます.例えば, asl-populateを使うとこうなります.
% asl-populate --help
...
--config=CONFIG Specify configuration file
Default configuration files:
/etc/activesambaldap/config.yaml
/etc/activesambaldap/bind.yaml
/home/kou/.activesambaldap.conf
/home/kou/.activesambaldap.bind
...
設定ファイルは上から順に読み込まれていきます.設定内容は後の ファイルで上書きされます.上記の例だと,以下の順序で読み込ま れていきます.
config.yamlや*.confの後にbind.yamlや*.bindを読み込んでいるの はセキュリティ上の配慮です.ホスト名などの見られてもよい情報 はconfig.yamlや*.confに書き,認証情報など見られてはまずい情 報はbind.yamlや*.bindに書き,適切なパーミッションを設定する とよいでしょう.
YAMLで記述します.三つのセクションからなります.
update: # LDAPエントリを更新する時の設定 ... reference: # LDAPエントリを参照する時の設定 ... common: # 更新時/参照時で共有の設定 ...
例えば,以下のようになります.
common: sid: S-1-5-21-915876905-2926214379-2876160357 base: dc=samba,dc=local,dc=net host: localhost method: :tls update: bind_dn: cn=admin,dc=local,dc=net password: admin reference: allow_anonymous: true
passwordはbind.yamlや*.bindに記述するとよいでしょう.
baseは必ず設定してください.また,sidも設定しておくとよいで しょう.sidの値は以下のコマンドで確認できます.
% sudo net getlocalsid
sidを設定しておかないと,毎回net getlocalsidをするため,効率 が悪くなります.
設定可能なオプションは以下の通りです.
LDAP上のパスワードをハッシュ化する時に使用するアルゴリズ ム.指定できるのは:crypt, :md5, :smd5, :sha, :sshaで,デ フォルトは:sshaです.
LDAP上のパスワードはSambaの認証時ではなく,UNIX上のユーザ の認証時に利用されます.
asl-*を用いてSamba + LDAP環境を管理する前に,一度だけ asl-populateを起動してLDAPサーバに基本的なエントリを追加しま す.
% sudo asl-populate
もし,root権限が無くても実行できるのであれば以下のようにする とよいでしょう*1.
% fakeroot asl-populate
コマンドラインからはasl-user*, asl-group*, asl-populate, asl-purge, asl-passwordを使って管理してください.各コマンド の使いかたは--helpオプションを参考にしてください.
Srvtoolsを 使ってWindowsからユーザ管理を行いたい場合は,また,Sambaをド メインコントローラとして動作させたい場合は,以下のように smb.confを設定します.ここでは,asl-samba-*を使います.
(ドメインコントローラとして動作させるけど,Srvtools でユー ザ管理を行わない場合はadd machine script以外のなんとかscript は設定しなくてもよい気がする.)
passdb backend = ldapsam:ldap://127.0.0.0 ldap admin dn = cn=admin,dc=local,dc=net ldap suffix = dc=samba,dc=local,dc=net ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap passwd sync = yes admin users = "@Domain Admins" add user script = /.../asl-samba-useradd "%u" delete user script = /.../asl-samba-userdel "%u" add group script = /.../asl-samba-groupadd "%g" delete group script = /.../asl-samba-groupdel "%g" add user to group script = /.../asl-samba-groupmod "%g" --add-members "%u" delete user from group script = /.../asl-samba-groupmod "%g" --delete-members "%u" set primary group script = /.../asl-samba-usermod "%u" --gid "%g" add machine script = /.../asl-samba-computeradd "%u"
Sambaを起動する前に,以下を実行してldap admin dnで指定した LDAP管理ユーザのパスワードを設定しておく必要があります.
% sudo /usr/bin/smbpasswd -W
以下のコマンドでグループ一覧を表示する事ができます。
% net rpc group list --user=USER_NAME
もし、asl-populateした後なのに上記のコマンドでひとつもグルー プがでない場合は以下のことを確認してください。
samba.schemaが古くないか
sambaSIDのエントリに以下の設定がない場合は古い samba.schemaである可能性があります。最新のものに更新して ください。
SUBSTR caseExactIA5SubstringsMatch
*1root権限チェックは必要ないかもしれない