Open Source Solution Technology Samba 4 で構築する Active Directory 環境 ~ インストールから UID/GID の話まで ~ オープンソース ソリューション テクノロジ株式会社 2014/09/05 亀井裕
自己紹介 亀井裕 ( かめいゆたか ) オープンソース ソリューション テクノロジ株式会社所属 Samba と OpenLDAP の製品開発を行っています Samba 4 の書籍も執筆しました
内容 Samba 4 の紹介 Samba 4 で Active Directory ドメインを構築 Samba 4 の UID/GID について 運用後の話
Samba 4 の紹介 (1) Samba は Windows サーバー互換の機能を提供するオープンソース ソフトウェアです 主な機能は次のとおりです ファイルサーバー ドメインコントローラー ドメインメンバー 他にも WINS サーバー プリントサーバー DNS サーバー KDC サーバーなどがあります
Samba 4 の紹介 (2) そもそも なぜ Samba? コストを抑えたい オープンソースなのでクライアント アクセス ライセンス (CAL) が不要 サーバーは UNIX や Linux にしたい ベンダーロックインを避けたい
Samba 4 の紹介 (3) 2012 年 12 月にメジャーバージョンが 4 の Samba がリリース Active Directory (AD) ドメインにてドメインコントローラーとしての機能をサポート リモートサーバー管理ツール (RSAT) で操作できる SMB3 やサーバーサイドコピーもサポート
Samba 4 で Active Directory ドメインを構築 (1) デモ環境について ホスト名 : sv1 DNS 名 : sv1.example.com NT ドメイン名 : EXAMPLE Administrator パスワード : Password-123
Samba 4 で Active Directory ドメインを構築 (2) Samba 4 のインストール 事前に必要なライブラリ等をインストールしたうえでソースからビルドしてインストールします ビルドに必要なパッケージは https://wiki.samba.org/index.php/os_requirements を参照 # curl -O ftp://ftp.samba.org/pub/samba/stable/samba-4.1.11.tar.gz # tar xzf samba-4.1.11.tar.gz # cd samba-4.1.11 < ビルドに必要なパッケージをインストール > #./configure # make # make install
Samba 4 で Active Directory ドメインを構築 (3) 次のコマンドで AD 環境の構築は完了です # samba-tool domain provision --realm=example.com \ --domain=example \ --host-name=sv1 \ --adminpass=password-123 \ --use-rfc2307 \ --server-role dc
Samba 4 で Active Directory ドメインを構築 (4) 環境構築後次のような出力が得られます Server Role: Hostname: NetBIOS Domain: DNS Domain: DOMAIN SID: active directory domain controller sv1 EXAMPLE example.com S-1-5-21-871698246-2010901038-889881753
Samba 4 で Active Directory ドメインを構築 (5) あとはプログラムを実行するだけで AD ドメインコントローラーが起動します OS の再起動は不要です Windows Server とは違い 関連するファイルを消せば何度でもやり直しができます # samba ( 関連ファイルを消すコマンド ) # rm -f /ur/local/samba/etc/smb.conf # find /usr/local/samba/{var,private} -not -type d xargs rm
Samba 4 で Active Directory ドメインを構築 (6) ここまでの作業のデモ
余談 Samba 4 のデーモンプログラムについて (1) Samba 4 には samba というプログラムが追加され デーモンプログラムが 4 つになりました samba: AD DC として使用 smbd: ファイルサーバーや NT DC として使用 nmbd: ブラウジングや WINS サーバーとして使用 winbindd: AD ドメインのメンバーサーバーとして使用
余談 Samba 4 のデーモンプログラムについて (2) samba プログラムは機能ごとにプロセスをフォークします フォークしたプロセスは AD DC として動作させるために必要な仕事をします samba プログラムは Samba 4 で登場しました
余談 Samba 4 のデーモンプログラムについて (3) その他のプログラムはそれぞれ独立したプログラムです たとえば 単にファイルサーバーとして利用したければ smbd だけを起動します samba プログラムとの併用はできません
Samba 4 の UID/GID について (1) 運用の中で特に UID/GID について話す理由 まだあまり情報がない あってもそれが本当に正しいのか確信が持てない これまで Samba 3 を利用してきた方が特にハマりやすい罠がある
Samba 4 の UID/GID について (2) どのようにしてユーザーやグループ等を識別するのか Windows の場合 : SID で識別 UNIX/Linux の場合 : UID/GID で識別 Samba はこの異なる識別方式をカバーしなければならない
Samba 4 の UID/GID について (3) 方法 1: xidnumber 属性を利用 ( デフォルト ) Samba 内部で xidnumber という属性と SID を紐付けてマッピング 方法 2: uidnumber/gidnumber 属性を利用 アカウントのエントリに uidnumber/gidnumber を追加することでマッピング xidnumber 関連ファイル idmap.ldb sam.ldb 複製されないされる uidnumber/gidnumber
Samba 4 の UID/GID について (4) xidnumber による UID/GID 割り当て idmap.ldb で SID と xidnumber を紐付け dn: CN=S-1-5-21-871698246-2010901038-889881753-1103 cn: S-1-5-21-871698246-2010901038-889881753-1103 objectclass: sidmap objectsid: S-1-5-21-871698246-2010901038-889881753-1103 type: ID_TYPE_BOTH xidnumber: 3000017 distinguishedname: CN=S-1-5-21-871698246-2010901038-889881753-1103
Samba 4 の UID/GID について (5) xidnumber による UID/GID 割り当ての問題 xidnumber は idmap.ldb に生成されますが idmap.ldb 自体が複製されません そのため ドメインコントローラーごとに UID/GID 値が異なります
Samba 4 の UID/GID について (6) xidnumber による UID/GID 割り当てデモ
Samba 4 の UID/GID について (7) uidnumber/gidnumber による UID/GID 割り当て sam.ldb で SID と uidnumber/gidnumber を紐付け dn: CN=user1,CN=Users,DC=example,DC=com uidnumber: 1234 dn: CN=Domain Users,CN=Users,DC=example,DC=com gidnumber: 513
Samba 4 の UID/GID について (8) uidnumber/gidnumber を利用するために smb.conf に idmap_ldb:use rfc2307 = yes が設定されている必要があります ユーザー属性に uidnumber/gidnumber が存在しなければいけません 現在の実装では Samba 自身が uidnumber/gidnumber を付与することはありません idmap_ldb:use rfc2307 = yes は samba-tool domain provision に use-rfc2307 を指定すれば自動で設定されます
Samba 4 の UID/GID について (9) uidnumber/gidnumber による UID/GID 割り当てデモ
Samba 4 の UID/GID について (10) UID/GID に関するまとめ UID/GID のマッピングは xidnumber か uidnumber/gidnumber を利用している xidnumber はレプリケーションされないので DC ごとに UID/GID が異なる uidnumber/gidnumber を使えば各 DC で同一の UID/GID を使える Samba 3 winbindd の idmap_ad バックエンドのような動き
余談 idmap_rid を使えば統一管理できるのでは? Samba 4 でも idmap_rid は使用できますが あくまでもメンバーサーバーのときしか使用できません 以下の idmap config 設定は AD DC では無効 [global] workgroup = EXAMPLE realm = example.com netbios name = SV1 server role = active directory domain controller dns forwarder = 192.168.12.254 idmap_ldb:use rfc2307 = yes idmap config *: backend = rid idmap config *: range = 10000-50000
Samba 4 の今後 AD DC で winbindd をデフォルトで動かす (Samba 4.2) Samba4.1 までは winbindd ではなく winbind winbindd は Samba 3 の実装を引き継いだもの winbindd の idmap_rid があれば xidnumber に悩まされなくてすむ と思っていましたが winbindd は自分で管理するドメインに関しては passdb という特殊なバックエンドを利用するため設定をしても idmap_rid は機能しません もちろん メンバーサーバーとしてはしっかり機能します
Open Source Solution Technology ご清聴ありがとうございました ご質問があればどうぞ