README.ja

$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と使う

まず,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をするため,効率 が悪くなります.

設定ファイルのオプション

設定可能なオプションは以下の通りです.

base
ActiveLdap::Base.establish_connectionのオプションと同じ.
host
ActiveLdap::Base.establish_connectionのオプションと同じ.
port
ActiveLdap::Base.establish_connectionのオプションと同じ.
scope
ActiveLdap::Base.establish_connectionのオプションと同じ.
bind_dn
ActiveLdap::Base.establish_connectionのオプションと同じ.
password
ActiveLdap::Base.establish_connectionのオプションと同じ.
method
ActiveLdap::Base.establish_connectionのオプションと同じ.
allow_anonymous
ActiveLdap::Base.establish_connectionのオプションと同じ.
sid
SambaサーバのSID(Security Identifier).
smb_conf
Sambaの設定ファイルsmb.confがあるパス.
samba_domain
Sambaサーバのドメイン
samba_netbios_name
SambaサーバのNetBIOS名
password_hash_type

LDAP上のパスワードをハッシュ化する時に使用するアルゴリズ ム.指定できるのは:crypt, :md5, :smd5, :sha, :sshaで,デ フォルトは:sshaです.

LDAP上のパスワードはSambaの認証時ではなく,UNIX上のユーザ の認証時に利用されます.

users_suffix
LDAP上のユーザエントリを格納するツリー.baseからの相対パ スを指定する.例: ou=Users
groups_suffix
LDAP上のグループエントリを格納するツリー.baseからの相対パ スを指定する.例: ou=Groups
computers_suffix
LDAP上のコンピュータエントリを格納するツリー.baseからの相対パ スを指定する.例: ou=Computers
idmap_suffix
LDAP上のidmapエントリを格納するツリー.baseからの相対パ スを指定する.例: ou=Idmap
start_uid
新しいユーザを作ったときに,はじめに使用するUID(User Identifier).以降のUIDは1ずつ増えていく.デフォルトは 10000.
start_gid
新しいユーザを作ったときに,はじめに使用するGID(Group Identifier).以降のGIDは1ずつ増えていく.デフォルトは 10000.
user_login_shell
新しく作成したユーザのログインシェル.デフォルトは /bin/false.
user_home_directory
新しく作成したユーザのホームディレクトリ.%Uはユーザ名に 置換される.デフォルトは/home/%U.
user_home_directory_mode
ユーザのホームディレクトリを作成する際に設定するパーミッ ション用のモード.デフォルトは0755(8進数).
user_gecos
ユーザのGECOSフィールドの値.%Uはユーザ名に置換される.
user_home_unc
Windowsから見たときのユーザのホームへのパス. UNC(Universal Naming Convention)で記述する.%Uはユーザ名 に置換される.デフォルトは\\SambaサーバのNetBIOS名\%U.
user_profile
ユーザプロファイルへのパス. UNC(Universal Naming Convention)で記述する.%Uはユーザ名 に置換される.デフォルトは\\SambaサーバのNetBIOS名\profiles\%U.
user_home_drive
ユーザのホームを割り当てるドライブ名.デフォルトはH:.
user_logon_script
ユーザがログオンしたときに実行するスクリプトファイル名. デフォルトはlogon.bat.
skeleton_directory
ユーザのホームディレクトリを作成する時に雛型とするディレ クトリ.デフォルトは/etc/skel.
default_user_gid
デフォルトでユーザが所属するグループ.デフォルトはDomain Usersグループ.
default_computer_gid
デフォルトでコンピュータが所属するグループ.デフォルトは Domain Computersグループ.

初期化

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オプションを参考にしてください.

smb.confの設定

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した後なのに上記のコマンドでひとつもグルー プがでない場合は以下のことを確認してください。

感謝


*1root権限チェックは必要ないかもしれない