須藤です。
ActiveSambaLdap 0.0.6をリリースしました。
http://asl.rubyforge.org/
% sudo gem install activesambaldap
ActiveSambaLdapはActiveLdap(*)上に実装されたSambaで使用する
LDAPエントリを操作するためのライブラリです。ActiveLdap上に実
装されているため、各エントリ(ユーザ、グループ、コンピュータ
など)をオブジェクトとして操作することができます。
(*): http://ruby-activeldap.rubyforge.org/
同様のソフトウェアにPerlで実装されたsmbldap-toolsがあります。
ActiveSambaLdapはsmbldap-toolsが提供するコマンド群と同じ機能
のコマンド群を提供しているため、smbldap-toolsの代わりに使う
ことができます。
設定例(smb.confの設定のところ):
http://asl.rubyforge.org/readme.html.ja
ActiveSambaLdapは、smbldap-toolsは以下のような問題を解決する
ために作られています。
* 設定エラーがあった場合に問題を発見しづらい
* 設定ファイルの場所が固定のため、テスト用の設定ファイル・
本番用の設定ファイルなどというように切り替えるのが面倒
* ライブラリとして作成されていないため、プログラム中で
smbldap-tools相当の機能を実現することが困難
* Rubyで実装されていない
例えば、以下はLDAPサーバにsamba.schemaがincludeされていない
ときに初期データを投入したときのエラーメッセージです。
smbldap-populate:
% sudo /usr/sbin/smbldap-populate
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, <CONFIGFILE> line 178.
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, <CONFIGFILE> line 180.
Populating LDAP directory for domain TestDomain (S-1-5-21-XXX)
(using builtin directory structure)
adding new entry: dc=samba,dc=example,dc=com
adding new entry: ou=Users,dc=samba,dc=example,dc=com
adding new entry: ou=Groups,dc=samba,dc=example,dc=com
adding new entry: ou=Computers,dc=samba,dc=example,dc=com
adding new entry: ou=Idmap,dc=samba,dc=example,dc=com
adding new entry: uid=root,ou=Users,dc=samba,dc=example,dc=com
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 499, <GEN1> line 58.
adding new entry: uid=nobody,ou=Users,dc=samba,dc=example,dc=com
failed to add entry: objectClass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 499, <GEN1> line 89.
...
Please provide a password for the domain root:
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, <CONFIGFILE> line 178.
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, <CONFIGFILE> line 180.
/usr/sbin/smbldap-passwd: user root doesn't exist
4番目のobjectClassの値がおかしくてエラーが起こったようなメッ
セージがでています。
failed to add entry: objectClass: value #4 invalid ...
しかし、その後もデータ投入処理を続けて、最後に管理ユーザを追
加して、それもエラーになっています。
/usr/sbin/smbldap-passwd: user root doesn't exist
smbldap-populateに相当するのがasl-populateで、以下のようにな
ります。
asl-populate:
% sudo ../asl-populate
/.../lib/active_ldap/object_class.rb:69:in `assert_valid_object_class_value': LDAPサーバが知らないobjectClassです: sambaGroupMapping (ActiveLdap::ObjectClassError)
from /.../lib/active_ldap/object_class.rb:44:in `assert_object_classes'
from /.../lib/active_ldap/object_class.rb:29:in `classes='
...
途中で例外が起きてそのまま死んでいるのですが、
LDAPサーバにsambaGroupMappingというobjectClassが登録されてい
ないということが分かります。これを見れば、samba.schemaを
includeすることを忘れているのに気づくかもしれません。
もし、Samba + LDAP環境を管理するときは役にたつかもしれません。