Class Index [+]

Quicksearch

README.ja

$Id: README.ja 194 2009-09-22 05:27:04Z kou $

名前

ActiveSambaLdap

説明

ActiveSambaLdapはSamba用LDAPエントリを管理するための ActiveRecord風なライブラリです.また,smbldap-toolsのような 管理用コマンドラインツールも提供します.

作者

Kouhei Sutou <kou@clear-code.com>

ライセンス

Ruby’s.

依存ライブラリ

インストール

  % sudo gem install activesambaldap

メーリングリスト

asl-devel-ja@rubyforge.org

rubyforge.org/mailman/listinfo/asl-devel-ja/

リファレンスマニュアル

asl.rubyforge.org/activesambaldap/

使用法

Railsと使う

まず、ActiveSambaLdapのgemを読み込みます。

config/environment.rbに以下を追加してください。

  config.gem "activesambaldap", :lib => "active_samba_ldap"

次に、Rails用ActiveSambaLdap環境を構築します.

  % script/generate scaffold_active_samba_ldap

config/ldap.ymlが生成されるので,環境にあわせて編集します. 指定できるオプションは,以下の「設定ファイルのオプション」の 項を参考にしてください.

初期化

はじめに,Samba + LDAP環境を初期化する必要があります. script/serverなどでRailsを起動し, 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.setup_connectionのオプションと同じ.
host
ActiveLdap::Base.setup_connectionのオプションと同じ.
port
ActiveLdap::Base.setup_connectionのオプションと同じ.
scope
ActiveLdap::Base.setup_connectionのオプションと同じ.
bind_dn
ActiveLdap::Base.setup_connectionのオプションと同じ.
password
ActiveLdap::Base.setup_connectionのオプションと同じ.
method
ActiveLdap::Base.setup_connectionのオプションと同じ.
allow_anonymous
ActiveLdap::Base.setup_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です。

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

デフォルト: :ssha

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権限が無くても実行できるのであれば以下のようにする とよいでしょう.(root権限チェックは必要ないかもしれない)

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

感謝

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.