答は、やってみなくちゃわからない

Sambaドメイン評価環境で
discover samba

日本Sambaユーザ会
太田俊哉

http://wiki.samba.gr.jp

日本Sambaユーザ会

講師紹介
太田俊哉
日本電気株式会社ITプラットフォームソリューション事業部
OSS推進グループ(組織名変わりました)
主に、OSSミドルウェアサポートサービスのとりまとめをやってます
http://www.nec.co.jp/oss
http://www.nec.co.jp/oss/middle_support/

日本Sambaユーザー会スタッフ (発起人)

日本Sambaユーザ会

本日のお品書き
zSambaドメイン評価環境とはz評価環境でできること
zSamba評価環境のインストール
z動作の詳細zまとめ

日本Sambaユーザ会

Sambaドメイン評価環境とは
zSambaのドメイン環境を構築するのは少々手間
いろいろな設定ファイルを準備する必要がある

zあらかじめ設定した環境を準備
すぐに使える設定の例として使えるデバッグにも使える
....その他

z数年にわたりSambaユーザー会が提供

日本Sambaユーザ会

Samba評価環境の利用イメージ
zサーバ（OpenSUSE） にSambaをインストールzクライアント（Windows）の設定はほとんど不要
ファイル、フォルダサーバ(Samba)

ネットワーククライアント(Windows)t
日本Sambaユーザ会

今までのもの(V3まで)
zdebianをベース
zあらかじめ設定ファイルをカスタマイズ
z結構コンパクト
zSambaドメイン構築済み
z....でもSambaドメインがどのようなものかを確認する程度
debianに慣れていないとメンテしづらい

日本Sambaユーザ会

V4では
z思い切ってベースOSを切り替える
z選択時に必要なポイントカスタマイズの容易性
作成した環境の容量
普及度
操作性

日本Sambaユーザ会

V4では
z思い切ってベースOSを切り替える
zベースの選択FreeBSD(*BSD)
OpenSolaris
FedoraVineCentOS
OpenSUSESuSE Studio
日本Sambaユーザ会

評価環境でできること
zSambaドメインの評価
あらかじめ一通りの設定済み
あとはWindowsクライアントをドメインに参加させるだけ初期化スクリプト用意済み。繰り返しテスト可能
VMwareイメージ

zSamba機能のテスト
VFSの例
smb.confの例
などなど
日本Sambaユーザ会

Sambaドメイン環境
z「SAMBADOM」というドメイン
winbindやpamの設定済み
unixパスワードとの同期設定済み
初期ユーザ設定済み

zOpenSUSEの流儀にyastのコマンドラインインタフェースで設定
pam関係の設定ファイルをいじる必要はなし
Red Hat(CentOS)とはかなり異なる

日本Sambaユーザ会

ゴミ箱機能zご存じネットワークドライブ上のゴミ箱機能
zrecycletest 共有に設定済み
zファイルを消すと.recycleに移ります
z一通りのことは出来ます
z掃除するスクリプトは仕込んでいません

日本Sambaユーザ会

アクセス制御zgroupsという共有smb.confパラメータによる制御
read only,write list,read list invalid users

UNIX本来のアクセス制御
owner,group,otherに対してrwx (と t)ACLzこれらを組み合わせた例を設定しています
たとえば......

日本Sambaユーザ会

パズル/home/groups# file: groups# owner: root
# group: users# flags: --tuser::rwx
user:ldap03:rwx
group::rwx
mask::rwx
other::r-x

smb.conf
read only= Yes
write list
= @ldapg1
invalid users = ldap11
read list= ldap12 ldap13

日本Sambaユーザ会

user groupldap01 domusers
ldap02 domusers,ldapg1
ldap03 domusers,ldapg1
ldap11 domusers,ldapg2
ldap12 domusers,ldapg2
ldap13 domusers,ldapg2

答え(1)z ユーザldap01は、このディレクトリを読めますが書き込めません。
# file: groups
user group# owner: root
ldap01 domusers# group: users# flags: --tread only= Yes
user::rwx
write list
= @ldapg1
user:ldap03:rwx invalid users = ldap11
group::rwx
read list= ldap12 ldap13
mask::rwx
other::r-x
日本Sambaユーザ会

答え(2)z ユーザldap02は、ディレクトリのアクセス権にwが無いので書き込めません。
# file: groups
user group# owner: root
ldap02 domusers,ldapg1# group: users# flags: --tread only= Yes
user::rwx
write list
= @ldapg1
user:ldap03:rwx invalid users = ldap11
group::rwx
read list= ldap12 ldap13
mask::rwx
other::r-x
日本Sambaユーザ会

答え(3)z ユーザldap03は書き込み可能です。
# file: groups
user group# owner: root
ldap03 domusers,ldapg1# group: users# flags: --tread only= Yes
user::rwx
write list
= @ldapg1
user:ldap03:rwx invalid users = ldap11
group::rwx
read list= ldap12 ldap13
mask::rwx
other::r-x
日本Sambaユーザ会

答え(4)z ユーザldap11はアクセスできません。
# file: groups
user group# owner: root
ldap11 domusers,ldapg2# group: users# flags: --tread only= Yes
user::rwx
write list
= @ldapg1
user:ldap03:rwx invalid users = ldap11
group::rwx
read list= ldap12 ldap13
mask::rwx
other::r-x
日本Sambaユーザ会

答え(5)z ユーザldap12,ldap13は読み込み可能です。
# file: groups
user group# owner: root
ldap12 domusers,ldapg2
ldap13 domusers,ldapg2# group: users# flags: --tread only= Yes
user::rwx
write list
= @ldapg1
user:ldap03:rwx invalid users = ldap11
group::rwx
read list= ldap12 ldap13
mask::rwx
other::r-x
日本Sambaユーザ会

監査機能
zvfstestという共有
zvfsモジュールauditextd_audit
full_audit

今回はこれを使用

z粒度が違うzsyslogに出るので後でログインして確認

日本Sambaユーザ会ログの例
[2010/09/05 22:17:30, 1, pid=30946, effective(50001, 50000), real(0, 0)]
modules/vfs_extd_audit.c:174(audit_opendir)
vfs_extd_audit: opendir ./[2010/09/05 22:17:30, 2, pid=30946, effective(50001, 50000), real(0, 0)]
modules/vfs_extd_audit.c:235(audit_open)
vfs_extd_audit: open newtext.txt[2010/09/05 22:17:30, 2, pid=30946, effective(50001, 50000), real(0, 0)]smbd/open.c:580(open_file)
ldap01 opened file newtext.txt read=Yes write=No (numopen=2)[2010/09/05 22:17:30, 1, pid=30946, effective(50001, 50000), real(0, 0)]
modules/vfs_extd_audit.c:174(audit_opendir)
vfs_extd_audit: opendir ./[2010/09/05 22:17:30, 1, pid=30946, effective(50001, 50000), real(0, 0)]
modules/vfs_extd_audit.c:174(audit_opendir)
vfs_extd_audit: opendir ./[2010/09/05 22:17:30, 1, pid=30946, effective(50001, 50000), real(0, 0)]
modules/vfs_extd_audit.c:174(audit_opendir)
vfs_extd_audit: opendir . 日本Sambaユーザ会

username map 機能
z2つのマッピング方法
username map (static)
username map script (dynamic)z同時共存は可能ですz「ldapuser」を「ldap01」と透過になるstaticな設定がなされています。

日本Sambaユーザ会

その他
z日本語マニュアル
3.4系列の最終版
3.4.3とはほとんど差はない(翻訳の)バグ修正程度

zOpenSUSEの場合、二つ以上選択可能なものについては、manコマンド実行時に1アクション増えるので注意

日本Sambaユーザ会

オプションzソースファイルの閲覧
samba 3.4.3 を globalで処理したもの
webアクセス経由
量が大きいので別パッケージapache起動済み、ファイルをインストールするだけ
cgiは設定していません

日本Sambaユーザ会

Samba評価環境のインストールz用意するもの
VMware Workstation(たぶん5.5以降)
Vmware Player(たぶん3以降)
2Gぐらいのディスク容量(MAX 8G)
VMイメージのZIPファイル(samba.gr.jpから)

zZIPファイルを解凍するだけ
zWebページを読んで、rootのパスワードやその他の設定情報を確認

日本Sambaユーザ会

最初にやること
zネットワーク設定ファイルの初期化
VMパラメータの調整
/etc/udev/rules.d/70-persistent-net.rules
ファイルを削除。その後再起動。
 rootでログイン。/root/sambasetup.sh を実行 。
これで、設定が初期化されます。

日本Sambaユーザ会

使用法
zすでにドメインの設定が終わっています。
zWindows クライアントから、ドメインに参加してください。
zWindows XP、Windows 7で確認済みです。
zそのほか、各機能はWindowsから、あるいはログインしてから使えます。

日本Sambaユーザ会

動作の詳細z初期化スクリプトz設定の要点z各共有毎の設定
zオプション

日本Sambaユーザ会

初期化スクリプトzオリジナルは 堀田@net-newbieさんが作られたもの
z大幅に手直しOpenSUSE(SuSE Studio)対応
全部スクリプトないで処理しない(一部は別ファイル)メッセージの英文化(world wide対応?)
機能追加、繰り返し初期化可能、エラーチェック等

日本Sambaユーザ会

スクリプト内のPAM設定z昔
手で直す(/etc/pam.d/system-authなど)
z堀田さんのスクリプトRed Hat(CentOS)の設定コマンド
zSamba評価環境(V3)あらかじめ設定済み
zSamba評価環境(V4)YASTによる設定

日本Sambaユーザ会

スクリプト内のLDAPの設定
zslapd.confはOpenSUSEのものを流用
Samba用にいくつか修正

zスキーマが大問題
Red Hat(CentOS)とOpenSUSEではスキーマが違うRFC2307とRFC2307bis
posixGroupがstructual ではなくなったそのままではSambaのスキーマ利用時にエラー
結局Sambaにパッチ当て評価環境にはパッチ当てたものが入ってます
日本Sambaユーザ会

RFC2307bisについてもうちょっとz詳しくは日本LDAPユーザ会の技術情報をhttp://www.ldap.jp/_media/doc/rfc2307diff.xls
z一番大きな違いposixGroup STRUCTURALから AUXILIARY
ldapsam:editposix に影響net sam provision コマンド内で既定値のエントリを作成出来ないBugID #4597で報告あり
結論は出ていない(未クローズ)

日本Sambaユーザ会

ソースの当該箇所
d_printf(_("Adding the Domain Users group.¥n"));/* 略 */
uname = talloc_strdup(tc, "domusers");
wname = talloc_strdup(tc, "Domain Users");
dn = talloc_asprintf(tc, "cn=%s,%s", "domusers", lp_ldap_group_suffix());
gidstr = talloc_asprintf(tc, "%u", (unsigned int)domusers_gid);
gtype = talloc_asprintf(tc, "%d", SID_NAME_DOM_GRP);/* 略 */
smbldap_set_mod(&mods, LDAP_MOD_ADD, "objectClass", LDAP_OBJ_POSIXGROUP);
smbldap_set_mod(&mods, LDAP_MOD_ADD, "objectClass", LDAP_OBJ_GROUPMAP);
smbldap_set_mod(&mods, LDAP_MOD_ADD, "cn", uname);smbldap_set_mod(&mods, LDAP_MOD_ADD, "displayName", wname);smbldap_set_mod(&mods, LDAP_MOD_ADD, "gidNumber", gidstr);smbldap_set_mod(&mods, LDAP_MOD_ADD, "sambaSid",sid_string_talloc(tc, &gsid));smbldap_set_mod(&mods, LDAP_MOD_ADD, "sambaGroupType", gtype);
talloc_autofree_ldapmod(tc, mods);
rc = smbldap_add(ls, dn, mods);
日本Sambaユーザ会

OpenSUSE固有の問題
zOpenLDAPのスキーマをどうするか世の中一般的なスキーマ
core.schemaとかnis.schemaとかアプリケーション固有のスキーマ
samba.schema

RFCで定義
RFC2307とRFC2307bis
RFC2307bisの方が機能が多い
先走り
結局失効
日本Sambaユーザ会

V4での解決策
zスキーマを変えるか、ソースを変えるか
zsmb.confに対するパラメータの追加
editposix_rfc2307bis
namedObject と groupOfNames が選べる
両者ともSTRUCTUALなオブジェクトクラス
副作用が(たぶん)ない(MUSTが少ない)

z変更は意外と簡単
smb.conf中のパラメータを評価する関数
ソース中ほぼどこでも使える
日本Sambaユーザ会

smb.conf
z機能に応じた共有を設定
[groups]
read only,write list,invalid users,read list等

［recycletest］
recycle:repository = .recycleなど

［vfstest］
vfs objects = extd_auditそのほかに、profiles,homesも定義済み

日本Sambaユーザ会

まとめ
zとりあえず使うための環境
zテストしたり、デバッグしたりz繰り返し使える
zSambaはいろいろな機能を持っていますだから、答は、やってみなくちゃわからない
Sambaドメイン評価環境で日本Sambaユーザ会

リソース
zドメイン評価環境のページ
http://wiki.samba.gr.jp からプロジェクト->Sambaドメイン評価環境プロジェクト

zメーリングリスト
samba-jp ML(http://cgi.samba.gr.jp/mailman/listinfo/samba-jp)

zSuSE Studiohttp://susestudio.com/

日本Sambaユーザ会

ご静聴ありがとうごさいました

http://wiki.samba.gr.jp

日本Sambaユーザ会