Chapter 2. 手軽な始め方: 短気な方への手引き

John H. Terpstra

Samba Team

Table of Contents

機能と利点
例題サイトの説明
動く例
スタンドアロンサーバー
ドメインメンバーサーバー
ドメインコントローラー

Samba HOWTO文書中に含めるものについての最初に提案を受けた時、 だれかが問い合わせのためのサンプル設定をたくさん書いた。これは、 動いているシステムからたくさんのエッセンスを提示することに由来するたくさんの 価値を失わないで行う事が甚だしく難しい。それがドキュメントに抜けているもので ある。それをカバーする章の内容の中に設定の可能性の広範囲な説明がある。この 章は、要求されたことに対する処方であると思いたい。

この章中の情報は、ほとんど完成したこの本のオリジナルバージョンの後に書かれた Samba-3 by Exampleという本と比較してかなり情報量が少ない。 Samba-3 by Exampleは最初の版の最終稿をレビューした結果を フィードバックしたものである。読者フィードバックが、オリジナルのレビュアによ り反映が行われることを見ることは興味深かった。どの場合にも、経験ある ネットワーク管理者がそこから得るものと同様、何が新しいかをより理解する ための基礎的な調査に1ヶ月半かかった。Samba-3 by Exampleは その調査の結果である。この本のいくつかのページで提供されているものは、より 包括的にSamba-3 by Exampleの第二版でカバーしている。 両者の第二版は同じ時期にリリースされた。

まとめると、公式のSamba-3 HOWTO & リファレンスガイドは 自動車修理工の修理ガイドと同等のものとして意図されている。 Samba-3 by Exampleは、どのように車を運転するかを説明する ドライバー向けのガイドと同等である。もしもネットワークの設定例を完全にしたい のであれば、 Samba-3 by Exampleを参照すること。

機能と利点

基本的な動作するシステムを作成するために、Sambaは最小限の設定しか必要としない。 この節では、簡単なものから複雑なものへ、おのおのを動かすために必要とされる 設定ファイルの変更とすべてのステップを順番に提供する。徹底的に設定された システムは、追加の高機能な機能を使うだろう。それらの追加機能はこの文書の 残りの部分で触れられている。

ここで使っている例は、数多くの人が設定の例のために要求したものに依っている。 すべての識別子は問題がないようにしてあり、非現実的な存在しないサイトへ 何らかの形で似ていることは計画的に行われている。

例題サイトの説明

最初の設定例中では、例外的な、簡単なシステム要求の場合を考えてみる。 ほとんど取り組みを必要としないものを複雑にしようとする真の誘惑がある。

“匿名リードオンリ文書サーバー” はCD-ROMイメージを提供するのに十分かも しれないサーバーのタイプか、ネットワーククライアントが使う用途向けの参考 文書を提供する。この設定は “スタンドアロンサーバー”“参照用文書サーバー” でも取り上げている。この設定の目的は、ゲストも含めて誰でもリードオンリで アクセスできる共有ボリュームを提供することである。

2番目の例は、コンピューター上にインストールされた正しいプリンタードライバーを 持つのと同じくらい長く、誰でも印刷できるプリントサーバーのための最低限の 設定である。これは “スタンドアロンサーバー”, “集中印刷サーバー” で説明されているものと同じである。

次の例は、システム上にアカウントを持つユーザーのみがアクセス可能な、安全な オフィス用ファイル/プリントサーバーである。このサーバーはワークグループの ファイル/プリントサーバーととてもよく似ているが、匿名でアクセスするマシンより はより安全である。このタイプのシステムは、一般的に小さなオフィスの用途に 適合している。サー派はネットワークログオン機能、ドメイン制御を提供しない。 その代わりにネットワーク経由のストレージデバイス(NAS)とプリントサーバーである。

最後の例は存在するMicrosoft Windowsネットワークを統合するか、それを完全に 置き換えるより複雑なシステムである。これらはSambaドメイン制御(PDC/BDC)と 同様なドメインメンバーサーバーとリモートの場所中にあるブランチオフィスでの、 大きな分散ネットワーク中で詳細が説明されるものをカバーする。

動く例

設定の例はSambaが動くために必要なすべてをカバーするためにデザインされている。 それはこのテキストの範囲を明らかに超えている、基本的なOSプラットフォームの 設定をカバーしていない。

また、OSベンダーによって提供されているパッケージにか、他の手段で Sambaが正しくインストールされていることも仮定している。

スタンドアロンサーバー

スタンドアロンサーバーであるということは、それがドメインコントローラーでないこと、 ドメイン制御下に参加していないと言う事実以上のことを何も暗示しない。これは 単純で、ワークグループ風のサーバーであるか、ドメインセキュリティ管理下のメンバー であることができる。

例題が作成されている間、真のビジネスオフィスが、そのオフィスの大きさが 増えたり必要に応じて変わるようなことが起こると思うかもしれないのと同じ ように、システムが、そのすばらしい能力に向かって進歩するすべての試みが行 われた。

匿名リードオンリ文書サーバー

このタイプのサーバーの目的は、共有リソース上にある任意の文書やファイルを 任意のユーザーに有効にさせることである。共有リソースはCD-ROMでもファイル 領域でも可能である。

  • ファイルシステムの共有位置は/exportである。

  • すべてのファイルはJack Baumbachと呼ばれるユーザーが所有している。 Jackのログイン名はjackbである。そのパス ワードはm0r3pa1nである。 もちろんこれは例として使っているものである。すべての、この 文書の読者がこのことを知っているため、実環境でこれを使っては いけない。

Procedure 2.1. インストール手順: リードオンリサーバー

Example 2.1. 匿名リードオンリサーバー設定

# グローバルパラメーター
[global]
workgroup = MIDEARTH
netbios name = HOBBIT
security = user
map to guest = bad user
[data]
comment = Data
path = /export
read only = Yes
guest ok = Yes

  1. ユーザーをシステムに登録する(ユーザーのホームディレクトリも作る):

    root# useradd -c "Jack Baumbach" -m -g users -p m0r3pa1n jackb
    

  2. ディレクトリを作りパーミッションと所有者を設定する:

    root# mkdir /export
    root# chmod u+rwx,g+rx,o+rx /export
    root# chown jackb.users /export
    

  3. /exportディレクトリに共有したいファイルをコピーする。

  4. 匿名リードオンリサーバー設定で 表示されているSamba設定ファイル(/etc/samba/smb.conf)を インストールする。

  5. 以下のコマンドを実行して設定ファイルをテストする:

    root# testparm
    

    代替として、smb.conf.masterと呼ばれるマスター 設定ファイルから操作している場合、以下のコマンドシーケンスの方が より適切である:

    root#  cd /etc/samba
    root#  testparm -s smb.conf.master > smb.conf
    root#  testparm
    

    何らかのエラーメッセージが出力されるかもしれないことに注意。 エラー出力がない場合にのみ先に進むこと。上記の設定ファイルで 生成される典型的な出力の例は以下の通り:

    Load smb config files from /etc/samba/smb.conf
    Processing section "[data]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions
    [Press enter]
    
    # Global parameters
    [global]
    	workgroup = MIDEARTH
    	netbios name = HOBBIT
    	security = user
    	map to guest = bad user
    
    [data]
    	comment = Data
    	path = /export
    	read only = Yes
    	guest only = Yes
    

  6. OSプラットフォームに適した方法でSambaを起動する。その方法は プラットフォーム依存である。Sambaを起動することに関するそれ 以上の情報は、Starting Samba を参照のこと。

  7. Microsoft Windowsクライアントをワークグループ MIDEARTHに設定し、コンピューター名を ROBBINSに設定し再起動し、数分待ち、Windowsエクスプローラー を開いてマイネットワークをクリックする。そこにマシンHOBBIT がある。このマシンアイコンをクリックすると、 data共有が現れる。共有をクリック後、 /exportディレクトリ中にある、以前に そこにおいたファイルが現れる。

上記の情報(#グローバルパラメーター以下)は /etc/samba/smb.confファイルの完全な内容を提供 する。

匿名の読み書き可能な文書サーバー

以前の例からこの設定を発展系と見なすべきである。違いは、共有アクセスが jackbというユーザーIDに、プライマリグループがjackbに強制的に設定されると いうことである。その他1つの改善点は、ユーザーjackbを smbpasswdに追加することが出来るということである。 これを行うのには以下を実行する:

root# smbpasswd -a jackb
New SMB password: m0r3pa1n
Retype new SMB password: m0r3pa1n
Added user jackb.

smbpasswdファイルへのこのユーザーの追加は、エクス プローラのプロパティにおいて所有者がUser Unknown の代わりにjackbが表示されると言うことである。

完全な変更後のsmb.confファイルは“変更後の匿名の読み書き可能な設定の smb.conf”である。

Example 2.2. 変更後の匿名の読み書き可能な設定の smb.conf

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = HOBBIT
security = USER
map to guest = bad user
[data]
comment = Data
path = /export
force user = jackb
force group = users
read only = No
guest ok = Yes

匿名プリントサーバー

匿名プリントサーバーは2つの目的で提供される:

  • 1つの所から、すべてのプリンターに印刷を許可する。

  • 制限された数のプリンターに対するアクセスのため、たくさんの ユーザーのためにネットワークのトラフィックの輻輳を減らす。

最も単純な匿名印刷サーバー中で、Windowsワークステーション上での正しい プリンタードライバーのインストール要求は共通である。この場合、プリント サーバーはスプーラに対して印刷ジョブを単に渡すだけに設定され、 スプーラはプリンターに対して素通しになるように設定される。別の言い方 をすると、プリントスプーラはプリンターに対して渡されたデータストリーム をフィルタリングもなんらかの処理もしない。

この設定中で、プリンターの追加ウィザードを使うのは好ましくなく、 また、自動ドライバーダウンロードを行うのも望まない。そのため、 以下の設定でそれを無効にする。 “匿名プリントサーバーのsmb.conf”は結果の smb.confファイルである。

Example 2.3. 匿名プリントサーバーのsmb.conf

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = LUTHIEN
security = user
printing = cups
[printers]
comment = All Printers
path = /var/spool/samba
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = No

上記の設定は理想的なものではない。よりよい機能を使っておらず、 故意にエレガントではない解決方法を提示している。しかし、これは 基本であり、これで印刷は出来る。SambaはCUPSによって提供される 直接印刷APIを使える。CUPSライブラリを、Sambaコンパイル時に指定 してリンクした場合、既定値の印刷システムはCUPSになる。princap name がCUPSを指定した場合、Sambaはすべての印刷機能のためにCUPSに直接 通信を行うため、CUPSライブラリAPIを使う。 printingの値をSYSVかBSDに設定して外部印刷 コマンドを強制的に使うことが可能で、パラメーター printcap nameの値はCUPS以外の何かに設定 しなければならない。この場合、Windowsクライアントに対して有効に させるためのプリンターの一覧が含まれている任意のファイルの名前を設定 する。

Note

Windowsユーザーはローカルプリンターのインストールが必要で、ドライバーの インストール後に通常使うプリンターを切り替える。通常使うプリンターは そのマシン上のネットワークプリンターに設定できる。

ディレクトリ/var/spool/sambaが使えるように なっていることを確かめておくこと。以下の手順はこれを達成するため に行わなければならない:

  • ディレクトリはスーパーユーザー(root)のユーザーとグループに属さねば ならない:

    root# chown root.root /var/spool/samba
    

  • ディレクトリのパーミッションは以下のようにスティッキービット を設定して「その他」をRWに設定しなければならない:

    root# chmod a+twrx /var/spool/samba
    

    スティッキービット設定の目的は、一時印刷ファイルを所有していない ユーザーが誤用で制御を得てしまう可能性を防止するためである。

Note

CUPSが有効になっているシステムで、中間のCUPSプリントフィルター処理なしで、 直接プリンターに生データを渡す機能がある。このモードの操作を使うことが 要求される場合、生データを印刷するデバイスを設定することが必要である。 また、/etc/mime.conv/etc/mime.typesファイル中のraw mime ハンドラーを 有効にする必要もある。“application/octet-streamのためのraw印刷を明示的に有効にする”を参照のこと。

セキュアな読み書き可能ファイルと印刷サーバー

続いて、簡単なシステムからやや複雑なサーバーの例に説明を進めよう。

新しいサーバーは認証されたユーザーのみ(すなわち、ローカルアカウントを持つ)が、 ホームディレクトリと同様にファイルを保存できる共用データ領域を必要とする。 また、誰でも使える1つのプリンターも提供する。

この仮想の環境(このデータを入手するための盗聴は無いものとする)中で、 使うのに難しくない、十分な安全性を持つ簡単な環境に サイトは依存する。

サイトユーザーは Jack Baumbach, Mary Orvilleと Amed Sehkahである。おのおのは パスワード(これ以降の例では表示しない)を持つ。Maryはプリンター管理者で、 共通の共有中のファイルの所有者である。

この設定は既定値であるユーザーレベルのセキュリティを ベースとしていて、/etc/samba/smbpasswd中に Windows互換の暗号化パスワードを格納している。この設定にするための既定値 のsmb.confエントリは passdb backend = smbpasswdである。 これが既定値になっているので、設定ファイルにこれを記述する必要はない。

Procedure 2.2. セキュアなオフィスサーバーのインストール

Example 2.4. セキュアなオフィスサーバーのsmb.conf

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = OLORIN
show add printer wizard = No
printing = cups
[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
[public]
comment = Data
path = /export
force user = maryo
force group = users
read only = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0600
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = No

  1. すべてのユーザーをOSに追加する:

    root# useradd -c "Jack Baumbach" -m -g users -p m0r3pa1n jackb
    root# useradd -c "Mary Orville" -m -g users -p secret maryo
    root# useradd -c "Amed Sehkah" -m -g users -p secret ameds
    

  2. “セキュアなオフィスサーバーのsmb.conf”中で示されているようにSambaの smb.confを設定する。

  3. Microsoft Windowsパスワードデータベースに新規ユーザーを追加する:

    root# smbpasswd -a root
    New SMB password: bigsecret
    Reenter smb password: bigsecret
    Added user root.
    
    root# smbpasswd -a jackb
    New SMB password: m0r3pa1n
    Retype new SMB password: m0r3pa1n
    Added user jackb.
    
    root# smbpasswd -a maryo
    New SMB password: secret
    Reenter smb password: secret
    Added user maryo.
    
    root# smbpasswd -a ameds
    New SMB password: mysecret
    Reenter smb password: mysecret
    Added user ameds.
    

  4. CUPS Webインタフェースを使ってプリンターをインストールする。生データを 印刷するデバイスとしてMicrosoft Windowsクライアントで共有するプリンター をインストールするようにすること。

  5. OSの管理インタフェースを使ってSambaを起動する。それは以下の方法でも 手動で可能である:

    root#  nmbd; smbd;
    

    両方のアプリケーションは自動的にdaemonとして動く。daemonモードで開始 することを強制する、パラノイド的な-Dフラグを追加 することも可能である。

  6. /exportディレクトリを設定する:

    root# mkdir /export
    root# chown maryo.users /export
    root# chmod u=rwx,g=rwx,o-rwx /export
    

  7. Sambaが正しく動いているかを調べる:

    root# smbclient -L localhost -U%
    Domain=[MIDEARTH] OS=[UNIX] Server=[Samba-3.0.20]
    
    Sharename      Type      Comment
    ---------      ----      -------
    public         Disk      Data
    IPC$           IPC       IPC Service (Samba-3.0.20)
    ADMIN$         IPC       IPC Service (Samba-3.0.20)
    hplj4          Printer   hplj4
    
    Server               Comment
    ---------            -------
    OLORIN               Samba-3.0.20
    
    Workgroup            Master
    ---------            -------
    MIDEARTH             OLORIN
    

    以下のエラーメッセージはSambaが動作していないことを示している:

    root#  smbclient -L olorin -U%
    Error connecting to 192.168.1.40 (Connection refused)
    Connection to olorin failed
    

  8. ユーザーmaryoでOLORINに接続する:

    root# smbclient //olorin/maryo -Umaryo%secret
    OS=[UNIX] Server=[Samba-3.0.20]
    smb: \> dir
    .                              D        0  Sat Jun 21 10:58:16 2003
    ..                             D        0  Sat Jun 21 10:54:32 2003
    Documents                      D        0  Fri Apr 25 13:23:58 2003
    DOCWORK                        D        0  Sat Jun 14 15:40:34 2003
    OpenOffice.org                 D        0  Fri Apr 25 13:55:16 2003
    .bashrc                        H     1286  Fri Apr 25 13:23:58 2003
    .netscape6                    DH        0  Fri Apr 25 13:55:13 2003
    .mozilla                      DH        0  Wed Mar  5 11:50:50 2003
    .kermrc                        H      164  Fri Apr 25 13:23:58 2003
    .acrobat                      DH        0  Fri Apr 25 15:41:02 2003
    
    		55817 blocks of size 524288. 34725 blocks available
    smb: \> q
    

ここまでのことで、設定の基礎を会得したかと思う。これからはより複雑な 例を見ていく。この節の残りの部分は、いままでの例で説明した手順の部分 は省略する。

ドメインメンバーサーバー

ここでは、経理部門が幸せにできるような、最も簡単なサーバー設定を題材にする。ユーザーは 会計担当で、小難しい要求をしてくることに注意しよう。この部門のために1台のサーバー予算 がある。

ネットワークは社内情報サービスグループ(Information Services Group (ISG))で管理され、そこ に所属しているものとする。内部の製作は典型的な中規模の組織である。いつでもユーザーの追加削 除を行っているという理由でISGを運営しているのがHuman Resources is of the opinion。 また、スタッフのために基本的なネットワークリソースアクセスを得るために、部門の管理者は 死力を尽くして戦わなければならない。けれども経理部門は違い、彼らは正確に彼らがほしい ものを手に入れる。そのため、これは場面を設定すべきである。

ここでは最後の例からのユーザーを使うことにする。経理部門にはその部門のユーザーが使える 汎用プリンターがある。また、小切手を印刷するための権限を持つ人のそばにその人だけが 使える小切手印刷プリンターもある。最高会計責任者(CFO)はオフィス内の個人用収納場所 中に配置して完全にそのプリンターの使用を制限したいと望んでいる。そのため、それは ネットワークプリンターである必要がある。

経理部門は中央のアプリケーションサーバーから動かさなければならない SpytFullという会計アプリケーションを使っている。ソフトウェア は1台のサーバーだけで動かすようにライセンスされていて、底にはワークステーション コンポーネントがなく、マップされた共有で動く。データはUNIXベースのSQLバックエンド にある。UNIXの専門家はそれをみて、それはUNIX屋の問題ではないと言う。

経理部門のマネージャ(maryo)はフォームレター(いやなメール)のために分離したファイル 格納領域と同じような汎用ファイリングシステムを希望している。フォームレター領域は マネージャを除いてすべての経理スタッフにはリードオンリにすべきである。汎用ファイ リングシステムは、経理のチームのメンバーの、その人固有の階層構造ファイル領域を持つ 必要があるが、マネージャにはすべての領域にアクセスできることを希望している。各 ユーザーは、個人に関連したファイルのための固有のホーム領域を持つが、それは部門の 作業に関連しない。

設定例

サーバーvalinorは会社のドメインのメンバーサーバーである。 経理部門はローカルサーバーのみを持つ。ユーザーのアカウントはドメインコント ローラ上にあり、そこにはデスクトッププロファイルとすべてのネットワーク ポリシファイルがある。

Example 2.5. メンバーサーバーのsmb.conf (Globals)

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = VALINOR
security = DOMAIN
printcap name = cups
disable spoolss = Yes
show add printer wizard = No
idmap uid = 15000-20000
idmap gid = 15000-20000
winbind use default domain = Yes
printing = cups

Example 2.6. メンバーサーバーのsmb.conf (Shares and Services)

[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
[spytfull]
comment = Accounting Application Only
path = /export/spytfull
valid users = @Accounts
admin users = maryo
read only = Yes
[public]
comment = Data
path = /export/public
read only = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0600
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = No

  1. UNIX/Linuxサーバーにユーザーを追加してはならない。すべては中央の ドメインで行う。

  2. メンバーサーバーのsmb.conf (globals)メンバーサーバーのsmb.conf (shares and services)と一致するようにsmb.confを設定する。

  3. ドメインに参加する。注意:このステップが終わるまでSambaを起動してはいけない!

    root# net rpc join -Uroot%'bigsecret'
    Joined domain MIDEARTH.
    

  4. winbindが設定されて動いている任意のシステム上で nscd daemonを停止する(シャットダウンする)ことを必ず行うこと。

  5. OSプラットフォームの通常の方法で、Sambaを起動する。 手動で動かしたい場合は、rootになって以下の手順で起動する:

    root# nmbd; smbd; winbindd;
    

  6. winbind経由でユーザーとグループ名を解決するために、システム上にあるネーム サービススイッチ(NSS)制御ファイルを設定する。 /etc/nsswitch.conf中の以下の行を編集する。

    passwd: files winbind
    group:  files winbind
    hosts:  files dns winbind
    

  7. wbinfoに対するパスワードを以下の方法で設定する:

    root# wbinfo --set-auth-user=root%'bigsecret'
    

  8. ドメインユーザーとグループの認証が以下を実行することで正しく解決されるかを 検証すること:

    root# wbinfo -u
    MIDEARTH\maryo
    MIDEARTH\jackb
    MIDEARTH\ameds
    ...
    MIDEARTH\root
    
    root# wbinfo -g
    MIDEARTH\Domain Users
    MIDEARTH\Domain Admins
    MIDEARTH\Domain Guests
    ...
    MIDEARTH\Accounts
    

  9. winbindが動作しているかをチェックすること。以下は、 getentシステムユーティリティ経由で正しいユーザー名の 解決を行っている例である:

    root# getent passwd maryo
    maryo:x:15000:15003:Mary Orville:/home/MIDEARTH/maryo:/bin/false
    

  10. A final test that we have this under control might be reassuring:

    root# touch /export/a_file
    root# chown maryo /export/a_file
    root# ls -al /export/a_file
    ...
    -rw-r--r--    1 maryo    users       11234 Jun 21 15:32 a_file
    ...
    
    root# rm /export/a_file
    

  11. ここまでで設定はほぼ終わり、この後、このサイト用にディレクトリ 構造を設定する:

    root# mkdir -p /export/{spytfull,public}
    root# chmod ug=rwxS,o=x /export/{spytfull,public}
    root# chown maryo.Accounts /export/{spytfull,public}
    

ドメインコントローラー

この節の残りの部分は、ドメイン制御の設定に焦点を当てる。以下は2つの実装方法の例である。 ここでの例は、簡単に作れるが、ちゃんと動くものを提示するのが目的であることを思い出して ほしい。この本の残りではより大きな機能性とそれに付随する複雑性に注目する機会を手助け するべきである。

ドメインコントローラーの設定は新しいtdbsamパスワードバックエンドを使う簡単な設定 で達成できる。このタイプの設定は小さなオフィスに適しているが、拡張性が制限され ていて(複製が出来ない)、ドメインの大きさと複雑さが増大するとパフォーマンスが 下がることが予想される。

tdbsamの使用は、PDC以外の必要性がないサイトにのみ最適である。ドメインが大きく なると、追加のドメインコントローラーが必要となるのは必定である。Microsoftネット ワーク環境に過小なリソースを提供しようと試みてはいけない;ドメインコントローラーは 基本的な認証サービスを提供する。以下は過小なリソースでのドメインコントロール 環境の症状である:

  • ドメインログオンが断続的に失敗する。

  • ドメインメンバーサーバー上のファイルアクセスが断続的に失敗し、 パーミッション拒否エラーメッセージが出る。

より拡張性のあるドメインコントロール認証バックエンドオプションは、 Microsoft Active Directory か LDAP ベースのバックエンドを使うことである。 Samba はドメインメンバーサーバーとして両方のオプションを提供する。PDC として、Samba はActive Directory で有効な機能の完全な代替を提供でき ない。Samba は拡張性のある LDAP ベースの PDC/BDC ソリューションを提供 できる。

tdbsam 認証バックエンドは、外部手段を除いて、データベースの内容を複製 する機能は提供していない(すなわち、独立した Samba のための SAM 複製 手順はない)。

Note

もしも1つ以上のドメインコントローラーが必要ならば、tdbsam 認証バックエンドは 使えない。

例: エンジニアリングオフィス

ここで提供するエンジニアリングオフィスのネットワークサーバーは、新しい tdbsam パスワードバックエンドの使い方をデモするように設計されている。 tdbsam 機能は Samba で取り入れられた。Microsoft Windows NT4 で可能な 多くのユーザーとマシンアカウント制御を提供するように設計された。 小さなネットワーク中で使うのには、これは安全である。

Example 2.7. エンジニアリングオフィスのsmb.conf (globals)

[global]
workgroup = MIDEARTH
netbios name = FRODO
passdb backend = tdbsam
printcap name = cups
add user script = /usr/sbin/useradd -m %u
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/groupmod -A %u %g
delete user from group script = /usr/sbin/groupmod -R %u %g
add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody %u
# 注意: 以下は既定値のログオンスクリプトを指定する。
# ユーザー単位のログオンスクリプトは、pdbeditを使って、ユーザーアカウント中で指定できる。
logon script = scripts\logon.bat
# This sets the default profile path. Set per user paths with pdbedit
logon path = \\%L\Profiles\%U
logon drive = H:
logon home = \\%L\%U
domain logons = Yes
os level = 35
preferred master = Yes
domain master = Yes
idmap uid = 15000-20000
idmap gid = 15000-20000
printing = cups

Example 2.8. エンジニアリングオフィスのOffice smb.conf (shares and services)

[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
# Printing auto-share (makes printers available thru CUPS)
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0600
guest ok = Yes
printable = Yes
browseable = No
[print$]
comment = Printer Drivers Share
path = /var/lib/samba/drivers
write list = maryo, root
printer admin = maryo, root
# Needed to support domain logons
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
admin users = root, maryo
guest ok = Yes
browseable = No
# For profiles to work, create a user directory under the path
# shown. i.e., mkdir -p /var/lib/samba/profiles/maryo
[Profiles]
comment = Roaming Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
# Other resource (share/printer) definitions would follow below.

  1. tdbsamパスワードバックエンドを使う動作するPDCの設定は、 エンジニアリングオフィスのsmb.conf (globals)エンジニアリングオフィスのsmb.conf (shares and services)にある:

  2. OSで提供されているツールを使って、必要に応じUNIXグループを作成する:

    root# groupadd ntadmins
    root# groupadd designers
    root# groupadd engineers
    root# groupadd qateam
    

  3. OSで提供されている適当なツールを使ってシステム上にユーザーアカウントを 作成する。同時にユーザー毎のホームディレクトリを作っておくこと。Samba 環境で使うときに要求されるグループのファイル、ディレクトリ、プリンター のアクセス制御に対し、ユーザーを追加する。

  4. このシェルスクリプトを動かしてNTグループにおのおののUNIXグループを割り当 てる(スクリプトの名前はinitGroups.shとする)。

    #!/bin/bash
    #### Keep this as a shell script for future re-use
    			
    # First assign well known groups
    net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d
    net groupmap add ntgroup="Domain Users"  unixgroup=users rid=513 type=
    net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d
    
    # Now for our added Domain Groups
    net groupmap add ntgroup="Designers" unixgroup=designers type=d
    net groupmap add ntgroup="Engineers" unixgroup=engineers type=d
    net groupmap add ntgroup="QA Team"   unixgroup=qateam    type=d
    

  5. [NETLOGON] 共有中で使うための scriptsディレクトリを作成する:

    root# mkdir -p /var/lib/samba/netlogon/scripts
    

    使用するログオンスクリプト(バッチまたはcmdスクリプト)をこの ディレクトリに配置する。

上記の設定で、ファイル共有とプリンター共有を必要に応じて追加しなければ ならない、基本的なPDCシステムが提供される。

大きな組織の場合

この節では、LDAP ベースの認証バックエンドを使う Samba の設定の簡単な 紹介を行う。このことを行う主旨は、より高次のレベルのスケーラビリティ に適合するのを可能にするための、とても分散した環境と同じように、 PDC/BDC ホストを可能にすることを提供することである。

プライマリドメインコントローラー

これは、LDAP 認証バックエンドを使う Samba PDCを動かすための 最小限の設定例である。OS が正しく設定されていることを仮定して いる。

Idealx スクリプト(か同等のもの)が、LDAPベースのPOSIXとSambaSamAccount を管理するのに必要である。Idealxスクリプトはサイト Idealxからダウンロードする ことが出来る。また、Sambaのリリースtarファイルから得ることも出来る。 Linuxディストリビューションは、Idealxスクリプトを /usr/share/doc/packages/sambaXXXXXX/examples/LDAP/smbldap-tools ディレクトリにインストールする傾向がある。 Idealxスクリプトバージョンsmbldap-tools-0.9.1は よく動作することが知られている。

Example 2.9. PDC用のLDAPバックエンドを使うsmb.conf

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = FRODO
passdb backend = ldapsam:ldap://localhost
username map = /etc/samba/smbusers
printcap name = cups
add user script = /usr/local/sbin/smbldap-useradd -m '%u'
delete user script = /usr/local/sbin/smbldap-userdel %u
add group script = /usr/local/sbin/smbldap-groupadd -p '%g'
delete group script = /usr/local/sbin/smbldap-groupdel '%g'
add user to group script = /usr/local/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/local/sbin/smbldap-groupmod -x '%u' '%g'
set primary group script = /usr/local/sbin/smbldap-usermod -g '%g' '%u'
add machine script = /usr/local/sbin/smbldap-useradd -w '%u'
logon script = scripts\logon.bat
logon path = \\%L\Profiles\%U
logon drive = H:
logon home = \\%L\%U
domain logons = Yes
os level = 35
preferred master = Yes
domain master = Yes
ldap suffix = dc=quenya,dc=org
ldap machine suffix = ou=People
ldap user suffix = ou=People
ldap group suffix = ou=People
ldap idmap suffix = ou=People
ldap admin dn = cn=Manager
ldap ssl = no
ldap passwd sync = Yes
idmap uid = 15000-20000
idmap gid = 15000-20000
printing = cups

  1. Sambaのソース~/examples/LDAP/samba.schema から入手し、/etc/openldap/schema/ ディレクトリにそれをコピーする。

  2. LDAPサーバーを設定する。この例はOpenLDAP 2.1.xに対応している。 The /etc/openldap/slapd.conf file. <title>Example slapd.conf File</title>

    # Note commented out lines have been removed
    include         /etc/openldap/schema/core.schema
    include         /etc/openldap/schema/cosine.schema
    include         /etc/openldap/schema/inetorgperson.schema
    include         /etc/openldap/schema/nis.schema
    include         /etc/openldap/schema/samba.schema
    
    pidfile         /var/run/slapd/slapd.pid
    argsfile        /var/run/slapd/slapd.args
    
    database        bdb
    suffix          "dc=quenya,dc=org"
    rootdn          "cn=Manager,dc=quenya,dc=org"
    rootpw          {SSHA}06qDkonA8hk6W6SSnRzWj0/pBcU3m0/P
    # The password for the above is 'nastyon3'
    
    directory     /var/lib/ldap
    
    index   objectClass     eq
    index cn                      pres,sub,eq
    index sn                      pres,sub,eq
    index uid                     pres,sub,eq
    index displayName             pres,sub,eq
    index uidNumber               eq
    index gidNumber               eq
    index memberUid               eq
    index   sambaSID              eq
    index   sambaPrimaryGroupSID  eq
    index   sambaDomainName       eq
    index   default               sub
    

  3. initdb.ldifファイルを作成する:

    # Organization for SambaXP Demo
    dn: dc=quenya,dc=org
    objectclass: dcObject
    objectclass: organization
    dc: quenya
    o: SambaXP Demo
    description: The SambaXP Demo LDAP Tree
    
    # Organizational Role for Directory Management
    dn: cn=Manager,dc=quenya,dc=org
    objectclass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    # Setting up the container for users
    dn: ou=People, dc=quenya, dc=org
    objectclass: top
    objectclass: organizationalUnit
    ou: People
    
    # Set up an admin handle for People OU
    dn: cn=admin, ou=People, dc=quenya, dc=org
    cn: admin
    objectclass: top
    objectclass: organizationalRole
    objectclass: simpleSecurityObject
    userPassword: {SSHA}0jBHgQ1vp4EDX2rEMMfIudvRMJoGwjVb
    # The password for above is 'mordonL8'
    

  4. LDAPデータベース中に初期データを投入する:

    root# slapadd -v -l initdb.ldif
    

  5. OSにインストールされている方法か適当なツールを使ってLDAP サーバーを起動する。

  6. /usr/local/sbinディレクトリ中にIdealx スクリプトファイルをインストールし、システム設定に合わせて、 smbldap_conf.pmを設定する。

  7. このバックエンドを制御するsmb.confファイルの例は PDC用のLDAPバックエンドを使うsmb.conf にある。必要に応じて追加する。

  8. secrets.tdbファイルにLDAPパスワードを 追加すると、SambaはLDAPデータベースを更新できるようになる:

    root# smbpasswd -w mordonL8
    

  9. 必要に応じてユーザーとグループを追加する。Sambaツールを使った ユーザーとグループの追加は必要に応じて、自動的にLDAPバックエ ンドとOSに追加される。

バックアップドメインコントローラー

“リモートのLDAPを使うBDCのsmb.conf” ではBDCの設定例を示している。smb.conf ファイルがBDC上で必要でないsmbldap-toolsスクリプトを 指定していないことに注意。必要に応じて追加の共有とプリンターを 追加する。

Example 2.10. リモートのLDAPを使うBDCのsmb.conf

# Global parameters
[global]
workgroup = MIDEARTH
netbios name = GANDALF
passdb backend = ldapsam:ldap://frodo.quenya.org
username map = /etc/samba/smbusers
printcap name = cups
logon script = scripts\logon.bat
logon path = \\%L\Profiles\%U
logon drive = H:
logon home = \\%L\%U
domain logons = Yes
os level = 33
preferred master = Yes
domain master = No
ldap suffix = dc=quenya,dc=org
ldap machine suffix = ou=People
ldap user suffix = ou=People
ldap group suffix = ou=People
ldap idmap suffix = ou=People
ldap admin dn = cn=Manager
ldap ssl = no
ldap passwd sync = Yes
idmap uid = 15000-20000
idmap gid = 15000-20000
printing = cups

  1. BDCが固有のLDAPサーバーを持つかどうかを決める。もしもBDCが LDAPサーバーであるならば、以下のsmb.confを示されたように 変更する。既定値の リモートのLDAPを使うBDCのsmb.conf 中の設定は、中央のLDAPサーバーを使う。

  2. “リモートのLDAPを使うBDCのsmb.conf”中にあるようにNETLOGONとPROFILES ディレクトリを設定する。