Sambaを使用すると、Mac OS X、Windows、OS/2マシンに対するファイルサーバおよびプリントサーバをUnixマシン上に構築できます。Sambaは、今や成熟の域に達したかなり複雑な製品です。YaSTで、または環境設定ファイルを手動で編集することで、Sambaを設定します。
ここでは、SambaのマニュアルやYaSTモジュールで使用される用語について説明します。
SambaはSMB(サーバメッセージブロック)プロトコルを使用します。SMBはNetBIOSサービスを基にしています。Microsoftがこのプロトコルをリリースしたので、他のソフトウェアメーカはMicrosoftドメインネットワークに接続できるようになりました。Sambaでは、SMBプロトコルがTCP/IPプロトコルの上で動作するので、すべてのクライアントにTCP/IPプロトコルをインストールする必要があります。
CIFS (common Internet file system)プロトコルは、Sambaがサポートしているプロトコルです。CIFSは、ネットワーク上で使用する標準のリモートファイルシステムで、ユーザグループによる共同作業およびネットワーク間でのドキュメントの共有ができるようにします。
NetBIOSは、マシン間通信用に設計された、ネームサービスを提供するソフトウェアインタフェース(API)です。これにより、ネットワークに接続されたマシンが、それ自体の名前を維持できます。予約を行えば、これらのマシンを名前によって指定できます。名前を確認する一元的なプロセスはありません。ネットワーク上のマシンでは、すでに使用済みの名前でない限り、名前をいくつでも予約できます。NetBIOSインタフェースは、異なるネットワークアーキテクチャに実装できるようになっています。ネットワークハードウェアと比較的密接に機能する実装はNetBEUIと呼ばれますが、これはよくNetBIOSとも呼ばれます。NetBIOSとともに実装されるネットワークプロトコルは、Novell IPX (TCP/IP経由の NetBIOS)とTCP/IPです。
TCP/IP経由で送信されたNetBIOS名は、/etc/hostsで使用されている名前、またはDNSで定義された名前とまったく共通点がありません。NetBIOSは独自の、完全に独立した名前付け規則を使用しています。しかし、管理を容易にするために、DNSホスト名に対応する名前を使用するか、DNSをネイティブで使用することをお勧めします。これはSambaが使用するデフォルトでもあります。
Sambaサーバは、SMB/CIFSサービスおよびNetBIOS over IPネーミングサービスをクライアントに提供します。Linuxの場合、3種類のSambaサーバデーモン(SMB/CIFSサービス用smnd、ネーミングサービス用nmbd、認証用winbind)が用意されています。
Sambaクライアントは、SMBプロトコルを介してSambaサーバからSambaサービスを使用するシステムです。Mac OS X、Windows、OS/2などの一般的なオペレーティングシステムは、すべてSMBプロトコルをサポートしています。TCP/IPプロトコルは、すべてのコンピュータにインストールする必要があります。Sambaは、異なるUNIXフレーバーに対してクライアントを提供します。Linuxでは、SMB用のカーネルモジュールがあり、LinuxシステムレベルでのSMBリソースの統合が可能です。Sambaクライアントに対していずれのデーモンも実行する必要はありません。
SMBサーバは、そのクライアントに対し、共有によってリソースを提供します。共有は、サーバ上のサブディレクトリのあるディレクトリおよびプリンタです。これは名前によってエクスポートされ、名前によってアクセスされます。共有名にはどのような名前も設定できます。エクスポートディレクトリの名前である必要はありません。プリンタにも名前が割り当てられます。クライアントはプリンタに名前でアクセスできます。
ドメインコントローラ(DC)は、ドメインのアカウントを処理するサーバです。データレプリケーションには、1つのドメインの中で追加のドメインコントローラが使用できます。
Sambaサーバをインストールするには、YaSTを起動して、 › の順に選択します。 › の順に選択し、を選択します。必要なパッケージのインストールを確認して、インストールプロセスを完了します。
クライアントは、TCP/IP経由でのみSambaサーバにアクセスできます。IPX経由のNetBEUIおよびNetBIOSは、Sambaで使用できません。
SambaクライアントをSambaサーバまたはWindowsサーバ上のリソース(ファイルまたはプリンタ)にアクセスするように設定します。NTまたはActive Directoryのドメインまたはワークグループを、 › の順に選択して表示したダイアログに入力します。を有効にした場合、ユーザ認証は、Samba、NT、またはKerberosのサーバ上で実行されます。
をクリックして、高度な設定オプションを設定します。たとえば、認証による自動的なサーバホームディレクトリのマウントを有効化するには、のテーブルを使用します。これにより、CIFS上でホストされると、ホームディレクトリにアクセスできるようになります。詳細については、pam_mountのマニュアルページを参照してください。
すべての設定を完了したら、ダイアログを確認して設定を終了します。
Windowsクライアントが大部分を占めるネットワークでは、ユーザが有効なアカウントとパスワードを持つ場合のみ登録できることが求められるのが普通です。Windowsベースのネットワークでは、このタスクはPDC (プライマリドメインコントローラ)によって処理されます。Windows NTサーバをPDCとして使用することもできますが、Sambaサーバを使用しても処理できます。例23.1「smb.confファイルのグローバルセクション」に示すように、smb.confの[global]セクションにエントリを追加する必要があります。
[global]
workgroup = WORKGROUP
domain logons = Yes
domain master = Yes
ユーザアカウントとパスワードをWindowsに準拠した暗号化形式で作成する必要があります。そのためにはコマンドsmbpasswd を実行します。さらに次のコマンドを使用して、Windows ドメイン概念で必要になるコンピュータのドメインアカウントを作成します。
-a name
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 Adminステータスを割り当てることができます。
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin
このセクションでは、Sambaスイートのクライアントとサーバの両方の部分を管理するためのより高度なテクニックを紹介します。
Sambaでは、クライアントは、Btrfsファイルシステムに配置されている共有のファイルおよびディレクトリの圧縮フラグをリモートで操作できます。Windowsエクスプローラでは、 › › ダイアログを使用することで、ファイル/ディレクトリに透過的な圧縮対象のフラグを付けることができます。
圧縮対象フラグが付いたファイルは、アクセスまたは変更があると、基礎となるファイルシステムによって透過的に圧縮および圧縮解除されます。通常、これによってファイルアクセス時に余分なCPUオーバーヘッドが生じますが、ストレージ容量の節約になります。新しいファイルとディレクトリは、FILE_NO_COMPRESSIONオプションを指定して作成しない限り、親ディレクトリの圧縮フラグを継承します。
Windowsエクスプローラでは、圧縮ファイルとディレクトリは、未圧縮のファイル/ディレクトリとは視覚的に見分けが付くように表示されます。
Samba共有の圧縮を有効にするには、手動で、
vfs objects = btrfs
/etc/samba/smb.confに共有設定を追加して実行するか、YaSTを使用して › › の順に選択してをオンにします。
スナップショット(シャドウコピーとも呼ばれる)は、特定の時点におけるファイルシステムサブボリュームの状態のコピーです。Snapperは、Linuxでこれらのスナップショットを管理するためのツールです。スナップショットは、BtrfsファイルシステムまたはシンプロビジョニングされたLVMボリュームでサポートされています。Sambaスイートは、サーバ側とクライアント側の両方で、FSRVPプロトコルを介したリモートスナップショットの管理をサポートしています。
Sambaサーバのスナップショットは、ファイルまたはディレクトリの以前のバージョンとしてリモートWindowsクライアントにエクスポートできます。
Sambaサーバでスナップショットを有効にするには、次の条件を満たしている必要があります。
SMBネットワーク共有がBtrfsサブボリューム上に存在している。
SMBネットワーク共有のパスに、関連するSnapper環境設定ファイルが含まれている。次のコマンドを使用して、Snapperファイルを作成できます。
snapper -c <cfg_name> create-config /path/to/shareSnapperの詳細については、第4章 Snapperを使用したシステムの回復とスナップショット管理を参照してください。
スナップショットディレクトリツリーでは、関連するユーザにアクセスを許可する必要があります。詳細については、vfs_snapperマニュアルページの「PERMISSIONS」のセクション(man 8 vfs_snapper)を参照してください。
リモートスナップショットをサポートするには、/etc/samba/smb.confファイルを変更する必要があります。変更するには、 › › の順に選択するか、または次のコマンドを使用して関連する共有セクションを手動で拡張します。
vfs objects = snapper
手動でのsmb.confへの変更を有効にするために、Sambaサービスを再起動する必要がある点に注意してください。
systemctl restart nmb.service smb.service
設定後、Samba共有パスでSnapperによって作成されたスナップショットには、Windowsエクスプローラのファイルまたはディレクトリのタブからアクセスできます。
デフォルトでは、スナップショットは、SnapperコマンドラインユーティリティまたはSnapperのタイムライン機能を使用して、Sambaサーバ上でローカルでのみ作成および削除できます。
Sambaは、リモートホストからの共有スナップショット作成および削除要求をFSRVP (File Server Remote VSS Protocol)を使用して処理するように設定できます。
23.6.2.1項 「以前のバージョン」で説明されている環境設定と前提条件に加え、/etc/samba/smb.confに次のグローバル設定が必要です。
[global] rpc_daemon:fssd = fork registry shares = yes include = registry
その後、FSRVPクライアント(SambaのrpcclientおよびWindows Server 2012 DiskShadow.exeを含む)は、特定の共有のスナップショットを作成または削除したり、スナップショットを新しい共有として公開したりするようSambaに命令できます。
rpcclientによるLinuxからのスナップショットのリモート管理 #
samba-clientパッケージには、特定の共有の作成と公開をWindows/Sambaサーバにリモートで要求できるFSRVPクライアントが含まれています。SUSE Linux Enterprise Serverの既存のツールを使用して、公開された共有をマウントし、そのファイルをバックアップできます。サーバへの要求は、rpcclientバイナリを使用して送信されます。
rpcclientを使用したWindows Server 2012共有スナップショットの要求 #
win-server.example.comサーバにEXAMPLEドメインの管理者として接続します。
# rpcclient -U 'EXAMPLE\Administrator' ncacn_np:win-server.example.com[ndr64,sign] Enter EXAMPLE/Administrator's password:
rpcclientにSMB共有が表示されることを確認します。
rpcclient $> netshareenum netname: windows_server_2012_share remark: path: C:\Shares\windows_server_2012_share password: (null)
SMB共有がスナップショットの作成をサポートしていることを確認します。
rpcclient $> fss_is_path_sup windows_server_2012_share \ UNC \\WIN-SERVER\windows_server_2012_share\ supports shadow copy requests
共有スナップショットの作成を要求します。
rpcclient $> fss_create_expose backup ro windows_server_2012_share
13fe880e-e232-493d-87e9-402f21019fb6: shadow-copy set created
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
\\WIN-SERVER\windows_server_2012_share\ shadow-copy added to set
13fe880e-e232-493d-87e9-402f21019fb6: prepare completed in 0 secs
13fe880e-e232-493d-87e9-402f21019fb6: commit completed in 1 secs
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
share windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777} \
exposed as a snapshot of \\WIN-SERVER\windows_server_2012_share\スナップショット共有がサーバによって公開されたことを確認します。
rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path: C:\Shares\windows_server_2012_share
password: (null)
netname: windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777}
remark: (null)
path: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{F6E6507E-F537-11E3-9404-B8AC6F927453}\Shares\windows_server_2012_share\
password: (null)スナップショット共有の削除を試みます。
rpcclient $> fss_delete windows_server_2012_share \ 13fe880e-e232-493d-87e9-402f21019fb6 1c26544e-8251-445f-be89-d1e0a3938777 13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \ \\WIN-SERVER\windows_server_2012_share\ shadow-copy deleted
スナップショット共有がサーバによって削除されたことを確認します。
rpcclient $> netshareenum netname: windows_server_2012_share remark: path: C:\Shares\windows_server_2012_share password: (null)
DiskShadow.exeによるWindowsからのスナップショットのリモート管理 #
同様に、Linux Sambaサーバ上のSMB共有のスナップショットを、クライアントとして動作するWindows環境から管理できます。Windows Server 2012には、23.6.2.3項 「rpcclientによるLinuxからのスナップショットのリモート管理」で説明したrpcclientと同様にリモート共有を管理できるDiskShadow.exeユーティリティが含まれています。最初にSambaサーバを慎重に設定する必要がある点に注意してください。
以下は、Windows Serverクライアントが共有のスナップショットを管理できるようにSambaサーバを設定する手順の例です。EXAMPLEはテスト環境で使用されるActive Directoryドメイン、fsrvp-server.example.comはSambaサーバのホスト名、/srv/smbはSMB共有のパスである点に注意してください。
YaSTを介してActive Directoryドメインに参加します。
Active DirectoryのDNSエントリが正しいことを確認します。
fsrvp-server:~ # net -U 'Administrator' ads dns register \ fsrvp-server.example.com <IP address> Successfully registered hostname with DNS
Btrfsサブボリュームを/srv/smbに作成します。
fsrvp-server:~ # btrfs subvolume create /srv/smb
パス/srv/smbにSnapper環境設定ファイルを作成します。
fsrvp-server:~ # snapper -c <snapper_config> create-config /srv/smb
パス/srv/smbに新しい共有を作成し、YaSTのチェックボックスをオンにします。23.6.2.2項 「リモート共有スナップショット」に説明されているように、次のスニペットを/etc/samba/smb.confのグローバルセクションに追加します。
[global] rpc_daemon:fssd = fork registry shares = yes include = registry
systemctl restart nmb.service smb.serviceを実行して、Sambaを再起動します。
Snapperのパーミッションを設定します。
fsrvp-server:~ # snapper -c <snapper_config> set-config \ ALLOW_USERS="EXAMPLE\\\\Administrator EXAMPLE\\\\win-client$"
ALLOW_USERSに.snapshotsサブディレクトリのトラバースも許可されていることを確認します。
fsrvp-server:~ # snapper -c <snapper_config> set-config SYNC_ACL=yes
「\」エスケープには注意してください。/etc/snapper/configs/<snapper_config>に保存された値を確実に1回エスケープするには、2回エスケープします。
「EXAMPLE\win-client$」はWindowsクライアントのコンピュータアカウントに対応します。Windowsは、このアカウントが認証されている間に初期FSRVP要求を発行します。
Windowsクライアントアカウントに必要な特権を付与します。
fsrvp-server:~ # net -U 'Administrator' rpc rights grant \ "EXAMPLE\\win-client$" SeBackupPrivilege Successfully granted rights.
「EXAMPLE\Administrator」ユーザの場合、すでに特権が付与されているため、上のコマンドは必要ありません。
DiskShadow.exeの実行 #Windows Server 2012 (ホスト名の例:WIN-CLIENT)をブートします。
Active DirectoryドメインEXAMPLEに、SUSE Linux Enterprise Serverで参加します。
再起動します。
Powershellを開きます。
DiskShadow.exeを起動し、バックアップ手順を開始します。
PS C:\Users\Administrator.EXAMPLE> diskshadow.exe Microsoft DiskShadow version 1.0 Copyright (C) 2012 Microsoft Corporation On computer: WIN-CLIENT, 6/17/2014 3:53:54 PM DISKSHADOW> begin backup
プログラムを終了、リセット、または再起動しても、シャドウコピーが継続動作するように指定します。
DISKSHADOW> set context PERSISTENT
指定した共有がスナップショットをサポートしているかどうかを確認し、スナップショットを作成します。
DISKSHADOW> add volume \\fsrvp-server\sles_snapper
DISKSHADOW> create
Alias VSS_SHADOW_1 for shadow ID {de4ddca4-4978-4805-8776-cdf82d190a4a} set as \
environment variable.
Alias VSS_SHADOW_SET for shadow set ID {c58e1452-c554-400e-a266-d11d5c837cb1} \
set as environment variable.
Querying all shadow copies with the shadow copy set ID \
{c58e1452-c554-400e-a266-d11d5c837cb1}
* Shadow copy ID = {de4ddca4-4978-4805-8776-cdf82d190a4a} %VSS_SHADOW_1%
- Shadow copy set: {c58e1452-c554-400e-a266-d11d5c837cb1} %VSS_SHADOW_SET%
- Original count of shadow copies = 1
- Original volume name: \\FSRVP-SERVER\SLES_SNAPPER\ \
[volume not on this machine]
- Creation time: 6/17/2014 3:54:43 PM
- Shadow copy device name:
\\FSRVP-SERVER\SLES_SNAPPER@{31afd84a-44a7-41be-b9b0-751898756faa}
- Originating machine: FSRVP-SERVER
- Service machine: win-client.example.com
- Not exposed
- Provider ID: {89300202-3cec-4981-9171-19f59559e0f2}
- Attributes: No_Auto_Release Persistent FileShare
Number of shadow copies listed: 1バックアップ手順を終了します。
DISKSHADOW> end backup
スナップショットが作成された後、その削除を試み、削除されたことを確認します。
DISKSHADOW> delete shadows volume \\FSRVP-SERVER\SLES_SNAPPER\
Deleting shadow copy {de4ddca4-4978-4805-8776-cdf82d190a4a} on volume \
\\FSRVP-SERVER\SLES_SNAPPER\ from provider \
{89300202-3cec-4981-9171-19f59559e0f2} [Attributes: 0x04000009]...
Number of shadow copies deleted: 1
DISKSHADOW> list shadows all
Querying all shadow copies on the computer ...
No shadow copies found in system.
Sambaのマニュアルはsamba-docパッケージに付属していますが、デフォルトではインストールされません。インストールするには、zypper install samba-doc を実行します。コマンドラインから「apropos samba」と入力するとマニュアルページを参照できます。または、/usr/share/doc/packages/sambaディレクトリに格納されているその他のオンラインマニュアルと例を参照できます。また、コメント付きの設定例(smb.conf.SUSE)がexamplesサブディレクトリに用意されています。Samba関連の情報を参照できるもう1つのファイルは、/usr/share/doc/packages/samba/README.SUSEです。
Sambaチームが作成した『Samba- HOWTO』(https://wiki.samba.orgを参照)では、トラブルシューティングについても説明されています。またマニュアルのPart Vでは、手順を追って設定を確認するためのガイドが用意されています。