第19章 Samba

目次

19.1. 用語
19.2. Samba サーバのインストール
19.3. Samba の起動と停止
19.4. Samba サーバの設定
19.5. クライアントの設定
19.6. ログインサーバとしての Samba の利用
19.7. さらなる情報

概要

Samba を利用することで、 Unix マシンを Mac OSX や Windows, OS/2 マシン向けの ファイルサーバ兼印刷サーバとして設定することができます。 Samba はそれ単体で 完結する製品であり、それなりに複雑な仕組みを備えています。 YaST から Samba を設定することができるほか、 SWAT (Web インターフェイス) や設定ファイルを 手作業で編集することでも設定を行なうことができます。

19.1. 用語

Samba のドキュメンテーション内、および YaST のモジュールでは、下記に示す いくつかの用語を使用します。

SMB プロトコル

Samba では、 NetBIOS と呼ばれるサービスを ベースにした SMB (server message block) プロトコルを利用しています。 Microsoft では本プロトコルを公開しているため、他のソフトウエアの製造元から Microsoft のドメインネットワークに接続できるようになっています。 Samba では、 SMB プロトコルは TCP/IP プロトコル上で動作するようになっているため、 全てのクライアントで TCP/IP プロトコルをインストールしなければなりません。

CIFS プロトコル

CIFS (common Internet file system) は Samba でサポートされている もう 1 つのプロトコルです。 CIFS はネットワークを介してリモートの ファイルシステムにアクセスするプロトコルで、ユーザグループ内で共同作業を 行なうことができるほか、ネットワークを介して文書を共有したりすることが できます。

NetBIOS

NetBIOS はマシン間で名前解決サービスを提供するために設計された、通信向け ソフトウエアインターフェイス (API) です。マシンに対してネットワーク内での 名前を予約する機能を持つものです。名前の予約が行なわれると、予約した名前を 通してアクセスできるようになります。 NetBIOS では名前を集中的に管理する マシンが存在するわけではなく、その名前がネットワーク内で使用されていない ことを確認することで、名前の予約を実現しています。また、 NetBIOS の インターフェイスは異なるネットワーク構造でも実装できるような仕組みに なっています。実装は NetBEUI と呼ばれる、 ネットワークハードウエアに近いプロトコル上で動作するように作られていますが、 こちらについても NetBIOS と呼ぶ場合があります。 なお NetBIOS で利用可能なプロトコルとしては、 Novell 社が開発した IPX プロトコルや、 TCP/IP (NetBIOS via TCP/IP) があります。

TCP/IP 上の NetBIOS で利用する名前は、 /etc/hosts で定義したものや DNS で設定したものとは無関係です。 NetBIOS ではこれらの名前 解決方法は利用せず、完全独自の解決方法を利用しています。ただし、管理上の 都合や DNS を併用する都合から、 DNS のホスト名と一致させておくことを お勧めします。 Samba ではこれが既定で設定されています。

Samba サーバ

Samba サーバは、 SMB/CIFS と NetBIOS over IP の名前解決サービスを 提供するサーバです。 Linux では 3 種類のデーモンを利用します: SMB/CIFS サービスには smbd を、名前解決サービスには nmbd を、 認証サービスには winbind をそれぞれ利用します。

Samba クライアント

Samba クライアントは、 SMB プロトコルを利用して Samba サーバにアクセスする システムのことで、 Mac OS X や Windows, OS/2 などが SMB プロトコルに 対応しています。なお、各コンピュータには TCP/IP プロトコルをインストール しておかなければなりません。また Samba では多くの UNIX システムに対応する クライアントを提供しています。 Linux の場合は SMB 向けのカーネルモジュール が存在し、 Linux システムのレベルで SMB 資源を利用することができるように なっています。 Samba クライアントの場合は、デーモンを動作させる必要はありません。

共有

SMB サーバがクライアントに資源を提供する場合、共有と呼ばれる方法で提供を 行ないます。共有はサーバに設定されたプリンタやディレクトリ (サブディレクトリ を含む) を指す言葉で、共有に設定された名前で資源を公開し、クライアントは その名前でアクセスを行ないます。共有名には任意の名前を設定することができ、 ディレクトリを公開するにあたってディレクトリとは別の名前を設定することが できます。プリンタの場合にも名前を設定し、クライアントからはその名前で アクセスを行ないます。

DC

ドメインコントローラ (DC) は、そのドメイン内でのアカウントを処理する サーバです。データの複製を行なうには、追加のドメインコントローラを 用意する必要があります。

19.2. Samba サーバのインストール

Samba サーバソフトウエアをインストールするには、 YaST を起動して ソフトウエア+ソフトウエア管理 を選択してください。ソフトウエア管理のモジュールが起動したら、 フィルタ+パターン を選択してから File Server を選択し、インストールしてください。 最後にインストール処理を完了するため、インストールされるパッケージ内容を確認します。

19.3. Samba の起動と停止

Samba サーバは自動で (システムの起動時に) 起動したり停止したりすることができるほか、 手動で開始したり停止したりすることができます。起動や停止のポリシーについて 設定を行なうには、 YaST の Samba サーバ設定を利用します。 詳しくは 19.4.1項 「YaST を利用した Samba サーバの設定」 をお読みください。

YaST から Samba サービスを起動したり停止したりするには、 YaST から システム+システムサービス (ランレベル) を選択します。そこからそれぞれ winbind, smb, nmb について選択してください。コマンドラインから実施する場合は、 rcsmb stop && rcnmb stop コマンドを実行すると Samba の停止を、 rcnmb start && rcsmb start コマンドを実行すると Samba の起動をそれぞれ行なうことができます。 なお、 rcsmb で winbind の処理を行なうため、 winbind について作業を行なう 必要はありません。

19.4. Samba サーバの設定

openSUSE® では、 Samba サーバを 2 種類の方法で設定することができます。 1 つは YaST を利用した設定、もう 1 つは手作業での設定です。手作業での設定は より細かい設定を行なうことができますが、 YaST の GUI で提供されるような 利便性はありません。

19.4.1. YaST を利用した Samba サーバの設定

Samba サーバを設定するには、 YaST を起動して ネットワークサービス+Sambaサーバ を選択します。

19.4.1.1. 初期の Samba 設定

初回にモジュールを起動したときには Samba インストール のダイアログが起動し、まずはサーバの管理に関していくつかの基本設定を 行ないます。その手順の最後は Samba の root に対してパスワードを設定することで 完了となります。 2 回目以降の起動の場合は、 Samba サーバ設定 ダイアログが開きます。

Samba インストール ダイアログは、以下の 2 つのステップ から構成されます:

ワークグループまたはドメイン名

既存の名前を ワークグループまたはドメイン名 から選択するか、新しい名前を入力して 次へ を押します。

Samba サーバの種類

次のステップでは、お使いのサーバをプライマリドメインコントローラ (PDC) 、もしくはバックアップドメインコントローラ (BDC) 、非ドメイン コントローラのいずれかで動作させるのかを選択します。指定を終えたら 次へ を押します。

詳細なサーバ設定に移動したくない場合は、ここで OK を押してください。あとは最後のポップアップ表示で Samba の管理者 (root) パスワード を入力します。

このダイアログで設定した項目は、 Samba 設定 の ダイアログ内の 起動, 共有, 識別情報, 信頼するドメイン, LDAP の設定 の各タブを利用することで、後から変更する ことができます。

19.4.1.2. 高度な Samba 設定

Samba サーバモジュールを初回に起動すると、 19.4.1.1項 「初期の Samba 設定」 で説明しているとおり、 Samba の設定 ダイアログが表示 され、 2 段階の手順で設定を行ないます。高度な設定は、この作業を終えた後に 設定を調整する場合に利用します。

設定を変更したあとは、 OK を押すと設定を保存することが できます。

19.4.1.2.1. サーバの起動

起動 タブでは、 Samba サーバの起動方法を設定することが できます。お使いのシステムを起動する際にサービスを開始したい場合は、 システム起動時 を選択してください。手作業で開始したい場合は、 手動 を選択してください。 Samba サーバの起動方法について、 詳しくは 19.3項 「Samba の起動と停止」 をお読みください。

また、このタブでは、お使いのファイアウオールでポートを開く設定を行なうことも できます。これを行なうには、 ファイアウオールでポートを開く を選択してください。お使いの環境に複数のネットワークインターフェイスが存在する 場合は、 ファイアウオールの詳細 を押してネットワーク インターフェイスを選択し、 OK を押してください。

19.4.1.2.2. 共有

共有 タブでは、有効化する Samba 共有を設定することが できます。共有の中には、ホームディレクトリやプリンタなど、いくつか事前に設定 されているものが存在します。共有を選択して 状態変更 を押すと、 有効無効 を切り替えることができます。 追加 を押すと新しい共有を追加することができますし、 削除 を押すと選択した共有を削除することができます。

ユーザにディレクトリの共有を許可する を選択すると、 許可するグループ のメンバーが、自分自身の ディレクトリを他のユーザに公開できるようになります。たとえばローカル のグループを設定する場合は users のように、 ドメインのグループを設定する場合は DOMAIN\Users のように指定します。なお、各ユーザはファイルシステム側のパーミッション 設定でも、アクセスを許可していなければならないことに注意してください。 また、 最大共有数 では、作成可能な共有数の上限を 設定することができます。ユーザが作成した共有に対して認証無しでアクセスできる ようにしたい場合は、 ゲストアクセス可能 を選択してください。

19.4.1.2.3. 識別情報

識別情報 タブでは、そのホストに対して関連づけるドメインを 設定することができます (基本設定 内) 。また、ネットワーク 内で代替のホスト名を利用したい場合も、ここで設定を行ないます (NetBIOS ホスト名) 。このタブでは、名前解決に Microsoft Windows Internet Name Service (WINS) を利用するかどうかを設定することもできます。 これを利用する場合は、 ホスト名の解決に WINS を使用する を選択し、必要に応じて DHCP で WINS サーバのアドレスを取得 を選択してください。より高度なグローバル設定やユーザ認証ソースを設定したい場合 は、詳細設定 を押してください。

19.4.1.2.4. 信頼するドメイン

他のドメインのユーザに対してお使いのドメインにアクセスできるようにするには、 信頼するドメイン タブ内で必要な設定を行ないます。 新しいドメインを追加するには 追加 ボタンを、選択した ドメインを削除するには 削除 ボタンを押します。

19.4.1.2.5. LDAP の設定

LDAP の設定 タブでは、認証に使用する LDAP サーバについて 設定を行なうことができます。 LDAP サーバとの接続をテストするには、 接続のテスト ボタンを押してください。高度な LDAP 設定を 行なう場合や、既定の値を使用したい場合は、 詳細設定 を押してください。

LDAP の設定について、詳しくは 第4章 ディレクトリサービス LDAP (↑セキュリティガイド) を お読みください。

19.4.2. SWAT を利用した Web 管理

Samba サーバを管理するための代替ツールとして、 SWAT (Samba Web Administration Tool) があります。 SWAT はシンプルな Web インターフェイスを提供するもので、 Samba サーバを設定する機能を提供します。 SWAT を利用するには、 root ユーザになっている状態で Web ブラウザから http://localhost:901 を Web ブラウザで 開いてください。 Samba 用の root アカウントを設定していない場合は、システムの root アカウントをお使いください。

[Note]SWAT の有効化

初期段階の Samba サーバインストールを完了しても、 SWAT は有効化されません。 SWAT を有効化するには、 YaST から ネットワークサービス+ネットワークサービス (xinetd) を開き、 ネットワークサービスの設定を開いてください。その状態から一覧内にある swat を選択し、 状態を変更する (オン/オフ) を押して切り替えてください。

19.4.3. 手作業でのサーバ設定

Samba をサーバとして利用したい場合は、 samba パッケージをインストールしてください。 Samba で中心となる設定ファイルは /etc/samba/smb.conf で、このファイルは大きく分けて 2 つのパートから構成されています。 [global] セクション にはサーバ全体の設定が含まれ、 [share] セクションでは 個別のファイルまたはプリンタ共有に関する設定が含まれています。この設定の 仕組みにより、共有に関する詳細設定と [global] セクションの 設定はそれぞれ別々に行なうことができるため、設定ファイルの構造的な透過性が 保たれるようになっています。

19.4.3.1. グローバルセクション

[global] セクション内の下記のパラメータは、 お使いのネットワーク環境に合わせて変更すべき箇所で、 Windows 環境の 他のマシンからお使いの Samba サーバにアクセスするため、必要な項目です。

workgroup = TUX-NET

この行では、 Samba サーバに対してワークグループを設定しています。 お使いの環境にあわせて TUX-NET を適切な文字列に 変更してください。その名前が別のマシンに割り当てられていない限り、 ご利用の Samba サーバは DNS に登録した名前で現われるようになります。 DNS に名前を登録することができない場合は、 netbiosname=名前 の書式でサーバ名を設定してください。このパラメータについて、詳しくは smb.conf のマニュアルページをお読みください。

os level = 20

このパラメータは、お使いの Samba サーバがワークグループ内の LMB (ローカルマスターブラウザ) になるかどうかを指定するものです。 Samba バージョン 3 シリーズでは、既定の値 (20) を上書き する必要はほとんどありません。また、誤った Samba サーバの設定によって 既存の Windows ネットワークが混乱することを防ぐため、 2 のようなとても低い値に設定しておいてください。この話題について、詳しくは Samba 3 Howto 内の Network Browsing (ネットワークブラウズ) 関連の章を お読みください。 Samba 3 Howto については 19.7項 「さらなる情報」 をお読みください。

お使いのネットワーク内に他の SMB サーバ (Windows 2000 Server など) が 存在しない場合や、ローカル環境の全システムの一覧を Samba サーバで管理したい 場合は、 os level の値をより高い値に設定してください (たとえば 65 など) 。これによりお使いの Samba サーバは、 ローカルネットワーク内での LMB として動作するようになります。

なお、この設定を変更する場合は、既存の Windows ネットワーク環境にどのような 影響があるのかをよく確かめてから行なってください。まずは本番の環境とは 切り離されたネットワークやそれほど重要ではないネットワークで、設定を試して みてください。

wins supportwins server

お使いの Samba サーバを WINS サーバの存在する既存の Windows ネットワークに 追加する場合は、 wins server オプションを有効に設定し、 WINS サーバの IP アドレスを設定してください。

お使いの Windows マシンが別のサブネットに接続されていて、 Samba サーバとは 互いに存在を通知しあいたい場合は、 WINS サーバを設定する必要があります。 Samba サーバで WINS サーバの機能を動作させるには、 wins support = Yes のオプションを設定してください。 なお、同じネットワーク内では 1 台までの Samba サーバで有効に設定してください。 また、 smb.conf ファイルでは wins serverwins support の両方をいっぺんに設定してはなりません。

19.4.3.2. 共有

下記の例では、 CD-ROM ドライブとユーザディレクトリ (homes) を SMB クライアントに公開する場合を想定し、設定例を示しています。

[cdrom]

CD-ROM ドライブを誤って共有してしまうことを防ぐため、下記の行はコメント マークを利用して無効化してあります (この設定ファイルの場合はセミコロン を書きます) 。 CD-ROM ドライブを Samba で共有する場合は、各行の冒頭に あるセミコロンを取り除いてください。

例19.1 CD-ROM 共有 (無効化)

;[cdrom]
;       comment = Linux CD-ROM
;       path = /media/cdrom
;       locking = No

[cdrom]comment

[cdrom] の項目は、ネットワーク上から SMB クライアントが参照する名前です。 comment 行を 利用することで、さらに細かい説明を追加することができます。

path = /media/cdrom

path オプションでは、 /media/cdrom ディレクトリを公開するよう指定しています。

なお、既定の設定は安全性を第一に考えられたものであるため、これらの共有は このシステムに存在するユーザに対してのみ公開されます。この共有を誰にでも 利用できるようにするには、設定内に guest ok = yes という行を追加してください。この設定を行なうことで、ネットワーク内の 誰にでも読み取りアクセスを許可するようになります。なお、このパラメータを 利用するにあたっては、 [global] セクションでの設定 よりも優先して動作することにご注意ください。

[homes]

[homes] 共有は特別な意味を持つ共有です。 Linux の ファイルサーバ内に有効なアカウントとパスワードが存在し、かつそのユーザが ホームディレクトリを持っていれば、この共有にアクセスできるようになります。

例19.2 [homes] 共有

[homes]
	comment = Home Directories
	valid users = %S
	browseable = No
	read only = No
	create mask = 0640
	directory mask = 0750

[homes]

SMB サーバに対して接続しているユーザと同じ名前の共有が存在しない限り、 [homes] 共有の設定で共有が動的に生成されます。 共有の名前はユーザ名と同じです。

valid users = %S

%S は接続が正しく行なわれたときに実際の共有名に 置き換えられる部分で、 [homes] の共有では常に ユーザ名に置き換えられます。そのため、ユーザ名の共有はそのユーザに 対してだけ許可される仕組みになっています。

browseable = No

この設定を行なうと、ネットワーク環境から参照することができない ようになります。

read only = No

既定では Samba は read only = Yes の設定が有効に なっていて、いかなる共有に対する書き込みアクセスも禁止される仕組みに なっています。共有に書き込みできるようにするには、 read only = No を設定してください。 writable = Yes でも同じ設定になります。

create mask = 0640

MS Windows NT をベースにしていないシステムでは UNIX のパーミッション を解釈することができないため、ファイルを作成する際に割り当てる パーミッションを設定しておく必要があります。 create mask のパラメータでは、新しく作成するファイルに対して 設定するパーミッションを設定します。なお、この設定は書き込み可能な 共有に対してのみ効果がある項目です。上記の設定では、所有者自身は読み込み および書き込みの権限を持ち、所有者のプライマリグループのメンバーは 読み込みの権限だけを持ちます。ただし、 valid users = %S の設定が存在するため、グループに対して読み込み権限があるものの、その 権限は実際には有効になりません。グループに対して読み込みや書き込みの 権限を与えるには、 valid users = %S の行を 無効化する必要があります。

19.4.3.3. セキュリティレベル

セキュリティを改善するため、それぞれの共有にはパスワードを設定する ことができます。 SMB では下記の方法で許可をチェックすることができます:

共有レベルセキュリティ (security = share)

共有に対してパスワードを設定します。このパスワードを知っている ユーザだけが、この共有にアクセスできます。

ユーザレベルセキュリティ (security = user)

この設定は SMB のユーザに対する考え方を提供するものです。この設定では、 あらかじめ各ユーザをサーバに登録し、パスワードを設定しなければなりません。 登録後、サーバはそのユーザ名に対して許可した共有にアクセスできるように なります。

サーバレベルセキュリティ (security = server)

クライアントに対しては、 Samba はユーザレベルと同じ振る舞いを見せます。 ただしユーザレベルセキュリティとは異なり、入力されたパスワードは他の サーバに転送され、そこで認証を行ないます。この設定の場合、追加の password server パラメータを設定する必要があります。

ADS レベルセキュリティ (security = ADS)

このモードでは、 Samba は Active Directory 環境のドメインメンバーとして 動作します。このモードで動作するには、 Samba の動作するマシンに Kerberos をインストールし、設定しておかなければなりません。また、そのマシンは Samba を利用して ADS の領域に参加しなければなりません。これらの設定は、 YaST Windows ドメインメンバーシップ モジュールから 行なうことができます。

ドメインレベルセキュリティ (security = domain)

このモードは、そのマシンが Windows NT ドメインに参加している場合にのみ 動作します。この設定で Samba は、ユーザ名とパスワードを Windows NT の プライマリまたはバックアップのドメインコントローラに送信し、検証を 行ないます。これは Windows NT Server が行なう方法と同じです。 なお、暗号化パスワードを指定するパラメータについて、 yes に設定する必要があります。

共有/ユーザ/サーバ/ドメインの各レベルのセキュリティは、サーバ全体に 適用されます。共有レベルのセキュリティとユーザレベルのセキュリティを混在させた 共有を設定してサーバ設定を行なうことはできません。ただし、システムに設定した 各 IP アドレスに対し、別々の Samba サーバを設定して起動することは可能です。

この種類の話題について、より詳しい情報は Samba 3 HOWTO に書いてあります。 1 つのシステムで複数のサーバを立ち上げる場合は、 interfacesbind interfaces only の 各オプションについて注意して設定してください。

19.5. クライアントの設定

Samba クライアントでは、 TCP/IP で提供される Samba サーバにのみアクセスする ことができます。 NetBEUI や IPX 上の NetBIOS ではアクセスできません。

19.5.1. YaST を利用した Samba クライアントの設定

Samba サーバや Windows サーバ上に存在する資源 (ファイルやプリンタ) にアクセスするには、 Samba クライアントを設定します。 ネットワークサービス+Windows ドメインメンバーシップ で表示される ダイアログで、それぞれ NT ドメインや Active Directory ドメイン、または ワークグループ名を入力してください。 Linux の認証にも SMB の情報を使用する を選択すると、ユーザ認証を Samba や NT 、または Kerberos サーバ上で行なうようになります。

高度な設定オプションを表示するには、 熟練者向け設定 を押します。たとえば認証時にサーバのホームディレクトリを自動でマウントしたい 場合は、 サーバディレクトリのマウント を選択します。 この方法を利用することで、ユーザは CIFS 経由で提供されたホームディレクトリに アクセスすることができるようになります。詳しくは pam_mount のマニュアルページをお読みください。

全ての設定を終えたら、 完了 を押して設定を完了してください。

19.6. ログインサーバとしての Samba の利用

主として Windows クライアントが多く存在するネットワークでは、有効なアカウント とパスワードだけを登録しておくことが望まれます。 Windows ベースのネットワーク では、これはプライマリドメインコントローラ (PDC) を利用して行ないます。 PDC として設定済みの Windows NT server を利用して設定することもできますが、 Samba サーバを利用することでもこの作業を行なうことができます。なお、 smb.conf ファイル内の [global] セクションに対し、 例19.3「smb.conf のグローバルセクション」 で示される ような設定を行なっておかなければなりません。

例19.3 smb.conf のグローバルセクション

[global]
    workgroup = TUX-NET
    domain logons = Yes
    domain master = Yes

ユーザ認証時に暗号化パスワードを利用する場合、 Samba サーバでもこれを有効に 設定しなければなりません。 [global] セクション内で encrypt passwords = yes を設定することでこれを実現する ことができます (Samba バージョン 3 では、これが既定値になっています) 。 また Windows の慣習に従うため、ユーザアカウントとパスワードの情報についても 暗号化した書式が必要になります。これを行なうには、 smbpasswd -a name を実行してください。また、 Windows のドメインの 考え方で必要となる、ドメイン内のコンピュータアカウントを作成するには、下記の コマンドを実行します:

useradd hostname\$
smbpasswd -a -m hostname

なお、 useradd コマンドにドル記号が追加されていることに注意 してください。 smbpasswd コマンドについては、 -m パラメータを指定することで自動的にドル記号が追加されます。 設定例 (/usr/share/doc/packages/samba/examples/smb.conf.SUSE) のコメント内に、この処理を自動化するための設定が書かれています。

add machine script = /usr/sbin/useradd -g nogroup -c "NT Machine Account" \
-s /bin/false %m\$
     

Samba サーバで上記のスクリプトを正しく実行できるようにするため、 Samba ユーザに 対して必要な管理者権限と ntadmin グループへの追加を行なってください。これを行なったあと、この Linux グループに属する 全ユーザを Domain Admins に割り当てるため、下記のコマンドを 実行します:

net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin

この種類の話題について詳しい情報は、 Samba 3 HOWTO 内の第 12 章に書かれています。 /usr/share/doc/packages/samba/Samba3-HOWTO.pdf を お読みください。

19.7. さらなる情報

Samba に関する詳細な情報は、デジタル文書で提供されています。 コマンドラインから apropos samba を実行して 複数のマニュアルページを参照するか、 Samba のドキュメンテーションがインストール されている場合は、 /usr/share/doc/packages/samba ディレクトリ内をお読みのうえ、オンライン文書と設定例を参照してください。 examples サブディレクトリ内には、コメントの付けられた設定例 ファイル (smb.conf.SUSE) があります。

また、 Samba チーム提供の Samba 3 HOWTO には、トラブルシューティングに関する章が あります。これに加え、文書の Part V には設定を確認するための手順が書かれています。 Samba 3 HOWTO は samba-doc パッケージに含まれ、 /usr/share/doc/packages/samba/Samba3-HOWTO.pdf ファイル からアクセスすることができます。

また、 openSUSE wiki の Samba ページ http://ja.openSUSE.org/Samba についてもお読みください。


openSUSE リファレンス 13.1