From: Kouhei Sutou Date: 2008-06-18T22:00:25+09:00 Subject: [ruby-list:45084] [ANN] ActiveSambaLdap 0.0.6 須藤です。 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, line 178. Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, 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, 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, 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, line 178. Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 135, 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環境を管理するときは役にたつかもしれません。