目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 管理ガイド / サービス / Samba
適用項目 SUSE Linux Enterprise Server 15 SP2

34 Samba

Sambaを使用すると、macOS、Windows、OS/2マシンに対するファイルサーバおよびプリントサーバをUnixマシン上に構築できます。Sambaは、今や成熟の域に達したかなり複雑な製品です。YaSTで、または環境設定ファイルを手動で編集することで、Sambaを設定します。

34.1 用語集

ここでは、SambaのマニュアルやYaSTモジュールで使用される用語について説明します。

SMBプロトコル

SambaはSMB(サーバメッセージブロック)プロトコルを使用します。SMBはNetBIOSサービスを基にしています。Microsoftがこのプロトコルをリリースしたので、他のソフトウェアメーカはMicrosoftドメインネットワークに接続できるようになりました。Sambaでは、SMBプロトコルがTCP/IPプロトコルの上で動作するので、すべてのクライアントにTCP/IPプロトコルをインストールする必要があります。

ヒント
ヒント: IBM Z: NetBIOSのサポート

IBM ZではSMB over TCP/IPのみがサポートされています。これら2つのシステムではNetBIOSをサポートしていません。

CIFSプロトコル

CIFS (common Internet file system)プロトコルは、Sambaがサポートしているプロトコルです。CIFSは、ネットワーク上で使用する標準のリモートファイルシステムで、ユーザグループによる共同作業およびネットワーク間でのドキュメントの共有ができるようにします。

NetBIOS

NetBIOSは、マシン間通信用に設計された、ネームサービスを提供するソフトウェアインタフェース(API)です。これにより、ネットワークに接続されたマシンが、それ自体の名前を維持できます。予約を行えば、これらのマシンを名前によって指定できます。名前を確認する一元的なプロセスはありません。ネットワーク上のマシンでは、すでに使用済みの名前でない限り、名前をいくつでも予約できます。NetBIOSインタフェースは、異なるネットワークアーキテクチャに実装できるようになっています。ネットワークハードウェアと比較的密接に機能する実装はNetBEUIと呼ばれますが、これはよくNetBIOSとも呼ばれます。NetBIOSとともに実装されるネットワークプロトコルは、Novell IPX (TCP/IP経由の NetBIOS)とTCP/IPです。

TCP/IP経由で送信されたNetBIOS名は、/etc/hostsで使用されている名前、またはDNSで定義された名前とまったく共通点がありません。NetBIOSは独自の、完全に独立した名前付け規則を使用しています。しかし、管理を容易にするために、DNSホスト名に対応する名前を使用するか、DNSをネイティブで使用することをお勧めします。これはSambaが使用するデフォルトでもあります。

Sambaサーバ

Sambaサーバは、SMB/CIFSサービスおよびNetBIOS over IPネーミングサービスをクライアントに提供します。Linuxの場合、3種類のSambaサーバデーモン(SMB/CIFSサービス用smnd、ネーミングサービス用nmbd、認証用winbind)が用意されています。

Sambaクライアント

Sambaクライアントは、SMBプロトコルを介してSambaサーバからSambaサービスを使用するシステムです。WindowsやmacOSなどの一般的なオペレーティングシステムは、SMBプロトコルをサポートしています。TCP/IPプロトコルは、すべてのコンピュータにインストールする必要があります。Sambaは、異なるUNIXフレーバーに対してクライアントを提供します。Linuxでは、SMB用のカーネルモジュールがあり、LinuxシステムレベルでのSMBリソースの統合が可能です。Sambaクライアントに対していずれのデーモンも実行する必要はありません。

共有

SMBサーバは、そのクライアントに対し、共有によってリソースを提供します。共有は、サーバ上のサブディレクトリのあるディレクトリおよびプリンタです。これは名前によってエクスポートされ、名前によってアクセスされます。共有名にはどのような名前も設定できます。エクスポートディレクトリの名前である必要はありません。プリンタにも名前が割り当てられます。クライアントはその名前でプリンタにアクセスできます。

DC

ドメインコントローラ(DC)は、ドメインのアカウントを処理するサーバです。データレプリケーションには、1つのドメインの中で追加のドメインコントローラが使用できます。

34.2 Sambaサーバのインストール

Sambaサーバをインストールするには、YaSTを起動して、ソフトウェア › ソフトウェア管理の順に選択します。表示 › パターンの順に選択し、ファイルサーバを選択します。必要なパッケージのインストールを確認して、インストールプロセスを完了します。

34.3 Sambaの起動および停止

Sambaサーバは、自動(ブート中)か手動で起動または停止できます。ポリシーの開始および停止は、34.4.1項 「YaSTによるSambaサーバの設定」で説明しているように、YaST Sambaサーバ設定の一部です。

コマンドラインで、「systemctl stop smb nmb」と入力して、Sambaに必要なサービスを停止し、「systemctl start nmb smb」と入力して起動します。smbサービスは、必要に応じてwinbindを処理します。

ヒント
ヒント: winbind

winbindは、独立したサービスであり、個別のsamba-winbindパッケージとしても提供されます。

34.4 Sambaサーバの設定

SUSE® Linux Enterprise ServerのSambaサーバは、YaSTを使って、または手動で設定することができます。手動で設定を行えば細かい点まで調整できますが、YaSTのGUIほど便利ではありません。

34.4.1 YaSTによるSambaサーバの設定

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

34.4.1.1 初期Samba設定

このモジュールを初めて起動すると、Sambaインストールダイアログが起動して、サーバ管理に関していくつかの基本的な事項を決定するように要求されます。設定の最後に、Samba管理者パスワードを要求されます(Sambaルートパスワード)。次回起動時には、Samba Configurationダイアログが表示されます。

Sambaインストールダイアログは、次の2つのステップとオプションの詳細設定で構成されています。

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

Workgroup or Domain Nameから既存の名前を選択するか、新しい名前を入力し、次へを入力します。

Sambaサーバのタイプ

次のステップでは、サーバをPDC(プライマリドメインコントローラ)として機能させるか、BDC(バックアップドメインコントローラ)として機能させるか、またはドメインコントローラとしては機能させないかを指定します。次へで続行します。

詳細なサーバ設定に進まない場合は、OKを選択して確認します。次に、最後のポップアップボックスで、Sambaルートパスワードを設定します。

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

34.4.1.2 サーバ上でSMBプロトコルの現在のバージョンを有効にする

現在のバージョンのSUSE Linux Enterprise Serverまたは他の最新のLinuxバージョンを実行しているクライアントで、安全ではないSMB1プロトコルはデフォルトで無効になっています。ただし、Sambaの既存のインスタンスはSMB1バージョンのプロトコルを使用する共有にのみサービスを提供するように設定できます。このようなクライアントとやり取りするためには、少なくともSMB 2.1プロトコルを使用して共有にサービスを提供するようにSambaを設定する必要があります。

たとえば、SMB1/CIFSのUnix拡張機能に依存する、SMB1のみが使用可能な設定があります。これらの拡張機能は、より新しいバージョンのプロトコルには移植されていません。このような状況にある場合は、設定を変更することを検討するか、34.5.2項 「クライアント上へのSMB1共有のマウント」を参照してください。

これを行うには、設定ファイル/etc/samba/smb.confで、グローバルパラメータserver max protocol = SMB2_10を設定します。すべての可能な値のリストについては、man smb.confを参照してください。

34.4.1.3 Sambaの詳細設定

Sambaサーバモジュールの初回起動中、2つの初期化ステップ(34.4.1.1項 「初期Samba設定」参照)の直後にSambaの設定ダイアログが表示されます。ここでは、Sambaサーバの設定を編集することができます。

設定を編集し終わったら、OKをクリックして設定を保存します。

34.4.1.3.1 サーバを起動する

Start Upタブで、Sambaサーバの起動に関する設定を行います。システムのブート時に毎回サービスが起動されるようにするには、During Bootを選択します。手動起動を有効化するには、Manuallyを選択します。Sambaサーバの起動の詳細については、34.3項 「Sambaの起動および停止」を参照してください。

このタブで、ファイアウォールのポートを開くこともできます。そのためには、Open Port in Firewallを選択します。複数のネットワークインタフェースがある場合は、Firewall Detailsをクリックし、インタフェースを選択した後、OKをクリックして、Sambaサービス用のネットワークインタフェースを選択します。

34.4.1.3.2 共有

共有タブで、有効にするSambaの共有を指定します。homesおよびプリンタなど、事前定義済みの共有がいくつかあります。状態の変更を使用して、有効無効の間で切り替えます。新規の共有を追加するには追加、共有を削除するには削除をクリックします。

ユーザにディレクトリの共有を許可するを選択すると、許可するグループ中のグループメンバーに、各自のディレクトリを他のユーザと共有させることができます。たとえば、ローカルの範囲のusers、あるいはドメインの範囲ではDOMAIN\Usersを設定します。また、ユーザにはファイルシステムへのアクセスを許可するパーミッションがあることを確認してください。最大共有数で、共有の最大数を制限することができます。認証なしでユーザ共用へのアクセスを許可するには、ゲストアクセスを許可を有効にします。

34.4.1.3.3 ID

識別情報タブで、ホストが関連付けられているドメイン(基本設定)と、ネットワークで代替ホスト名を使用するかどうか(NetBIOSホスト名)を指定します。名前解決にMicrosoft Windows Internet Name Service(WINS)を使用することもできます。この場合、Use WINS for Hostname Resolutionを有効にし、DHCP経由でWINSサーバを取得(Retrieve WINS server via DHCPを使用)するかどうか決定します。TDBデータベースではなくLDAPなど、エキスパートグローバル設定またはユーザ認証ソースを設定するには、詳細設定をクリックします。

34.4.1.3.4 信頼されたドメイン

他のドメインのユーザを、自分のドメインにアクセスさせるには、Trusted Domainsタブで適切な設定を行います。新しいドメインを追加するには、追加をクリックします。選択したドメインを削除するには、削除をクリックします。

34.4.1.3.5 LDAP設定

LDAP Settingsタブでは、認証に使用するLDAPサーバを設定することができます。LDAPサーバへの接続をテストするには、Test Connectionをクリックします。エキスパートLDAP設定を設定するか、デフォルト値を使用する場合、詳細な設定をクリックします。

LDAP設定に関する詳細については、Chapter 5, LDAP with 389 Directory Serverを参照してください。

34.4.2 サーバの手動設定

Sambaをサーバとして使用する場合は、sambaをインストールします。Sambaの主要設定ファイルは、 /etc/samba/smb.conf です。このファイルは2つの論理部分に分けられます。[global]セクションには、中心的なグローバル設定が含まれます。次のデフォルトのセクションには、個別のファイルとプリンタ共有が入っています。

  • [homes]

  • [プロファイル]

  • [ユーザ]

  • [グループ]

  • [プリンタ]

  • [印刷$]

この方法を使用すると、共有のオプションを[global]セクションで別々にまたはグローバルに設定することができます。これにより、環境設定ファイルが理解しやすくなります。

34.4.2.1 グローバルセクション

[global]セクションの次のパラメータは、ネットワークの設定に応じた必要条件を満たし、Windows環境で他のマシンがSMBを経由してこのSambaサーバにアクセスできるようにするために変更が必要です。

workgroup = WORKGROUP

この行は、Sambaサーバをワークグループに割り当てます。WORKGROUPを実際のネットワーク環境にある適切なワークグループに置き換えてください。DNS名がネットワーク内の他のマシンに割り当てられていなければ、SambaサーバがDNS名の下に表示されます。DNS名が使用できない場合は、netbiosname=MYNAMEを使用してサーバ名を設定します。このパラメータに関する詳細については、smb.confのマニュアルページを参照してください。

os level = 20

このパラメータは、SambaサーバがワークグループのLMB(ローカルマスタブラウザ)になるかどうかのきっかけとなります。Sambaサーバの設定が誤っていた場合に、既存のWindowsネットワークに支障が出ないよう、小さな値(たとえば2)を選択します。このトピックの詳細については、『Samba 3 Howto』のネットワークブラウジングの章を参照してください。『Samba 3 Howto』の詳細については、34.9項 「その他の情報」を参照してください。

ネットワーク内に他のSMBサーバ(たとえば、Windows 2000サーバ)が存在せず、ローカル環境に存在するすべてのシステムのリストをSambaサーバに保存する場合は、os levelの値を大きくします(たとえば、65)。これでSambaサーバが、ローカルネットワークのLMBとして選択されました。

この設定を変更するときは、それが既存のWindowsネットワーク環境にどう影響するかを慎重に検討する必要があります。はじめに、隔離されたネットワークで、または影響の少ない時間帯に、変更をテストしてください。

wins supportwins server

アクティブなWINSサーバをもつ既存のWindowsネットワークにSambaサーバを参加させる場合は、wins serverオプションを有効にし、その値をWINSサーバのIPアドレスに設定します。

各Windowsマシンの接続先サブネットが異なり、互いを認識させなければならない場合は、WINSサーバをセットアップする必要があります。SambaサーバをWINSサーバなどにするには、wins support = Yesオプションを設定します。ネットワーク内でこの設定が有効なSambaサーバは1台だけであることを確認します。smb.confファイル内で、オプションwins serverwins supportは同時に有効にしないでください。

34.4.2.2 共有

次の例では、SMBクライアントがCD-ROMドライブとユーザディレクトリ(homes)を利用できるようにする方法を示します。

[cdrom]

CD-ROMドライブが誤って利用可能になるのを避けるため、これらの行はコメントマーク(この場合はセミコロン)で無効にします。最初の列のセミコロンを削除し、CD-ROMドライブをSambaと共有します。

例 34.1: CD-ROMの共有
[cdrom]
       comment = Linux CD-ROM
       path = /media/cdrom
       locking = No
[cdrom]およびコメント

[cdrom]セクションエントリは、ネットワーク上のすべてのSMBクライアントが認識できる共有の名前です。さらにcommentを追加して、共有を説明することができます。

path = /media/cdrom

pathオプションで、/media/cdromディレクトリをエクスポートします。

デフォルトを非常に制約的に設定することによって、このシステム上に存在するユーザのみがこの種の共有を利用できるようになります。この共有をあらゆるユーザに開放する場合は、設定にguest ok = yesという行を追加します。この設定は、ネットワーク上の全ユーザに読み込み許可を与えます。このパラメータを使用する場合には、相当な注意を払うことをお勧めします。またこのパラメータを[global]セクションで使用する場合には、さらに注意が必要です。

[homes]

[homes]共有は、ここでは特に重要です。ユーザがLinuxファイルサーバの有効なアカウントとパスワードを持ち、独自のホームディレクトリを持っていればそれに接続することができます。

例 34.2: [homes]共有
[homes]
        comment = Home Directories
        valid users = %S
        browseable = No
        read only = No
        inherit acls = Yes
[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という行を無効にしてください。

警告
警告: NFSマウントをSambaと共有しない

NFSマウントのSambaとの共有は、データが失われる可能性があるため、サポートされていません。ファイルサーバにSambaを直接インストールするか、iSCSIなどの代替方法を使用することを検討してください。

34.4.2.3 セキュリティレベル

セキュリティを向上させるため、各共有へのアクセスは、パスワードによって保護されています。SMBでは、次の方法で権限を確認できます。

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

このセキュリティレベルは、ユーザという概念をSMBに取り入れています。各ユーザは、サーバにパスワードを登録する必要があります。登録後、エクスポートされた個々の共有へのアクセスは、ユーザ名に応じてサーバが許可します。

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

このモードでは、Sambaはアクティブディレクトリ環境のドメインメンバーとして動作します。このモードで操作するには、Sambaを実行しているコンピュータにKerberosがインストールされ設定済みであることが必要です。Sambaを使用してコンピュータをADSレルムに結合させる必要があります。これは、YaSTのWindowsドメインメンバーシップモジュールを使用して行います。

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

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

共有、ユーザ、サーバ、またはドメインレベルのセキュリティの設定は、サーバ全体に適用されます。個別の共有ごとに、ある共有には共有レベルのセキュリティ、別の共有にはユーザレベルセキュリティを設定するといったことはできません。しかし、システム上に設定したIPアドレスごとに、別のSambaサーバを実行することは可能です。

この詳細については、『Samba 3 HOWTO』を参照してください。つのシステムに複数のサーバをセットアップする場合は、オプションinterfacesおよびbind interfaces onlyに注意してください。

34.5 クライアントの設定

クライアントは、TCP/IP経由でのみSambaサーバにアクセスできます。IPX経由のNetBEUIおよびNetBIOSは、Sambaで使用できません。

34.5.1 YaSTによるSambaクライアントの設定

SambaクライアントをSambaサーバまたはWindowsサーバ上のリソース(ファイルまたはプリンタ)にアクセスするように設定します。NTまたはActive Directoryのドメインまたはワークグループを、 ネットワークサービス › Windowsドメインメンバーシップの順に選択して表示したダイアログに入力します。Linuxの認証にもSMBの情報を使用するを有効にした場合、ユーザ認証は、Samba、NT、またはKerberosのサーバ上で実行されます。

エキスパート設定をクリックして、高度な設定オプションを設定します。たとえば、認証による自動的なサーバホームディレクトリのマウントを有効化するには、サーバディレクトリのマウントのテーブルを使用します。これにより、CIFS上でホストされると、ホームディレクトリにアクセスできるようになります。詳細については、pam_mountのマニュアルページを参照してください。

すべての設定を完了したら、ダイアログを確認して設定を終了します。

34.5.2 クライアント上へのSMB1共有のマウント

SMBネットワークプロトコルの最初のバージョン、SMB1は、古くて安全ではないプロトコルであるため、開発者であるMicrosoftによって推奨されていません。セキュリティ上の理由から、SUSE Linux Enterprise Servermountコマンドは、デフォルトでより新しいプロトコルバージョン(SMB 2.1、SMB 3.0、またはSMB 3.02)のみを使用して、SMB共有をマウントします。

ただし、この変更はmountおよび/etc/fstabを介したマウンティングのみ影響します。SMB1は、次を使用する場合にデフォルトで使用可能です。

  • smbclientツール。

  • SUSE Linux Enterprise Serverに付属するSambaサーバソフトウェア。

SMB1のみ使用可能なため、このデフォルト設定により接続障害が生じる次のような設定があります。

  • より新しいSMBプロトコルバージョンをサポートしないSMBサーバを使用した設定。Windowsでは、Windows 7およびWindows Server 2008以降、SMB 2.1のサポートを提供しています。

  • SMB1/CIFSのUnix拡張機能に依存する設定。これらの拡張機能は、より新しいバージョンのプロトコルには移植されていません。

重要
重要: システムセキュリティの低減

下に記載される指示に従うと、セキュリティの問題に対処できる場合があります。問題に関する詳細については、https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/を参照してください。

できるだけ早くサーバをアップグレードすると、より安全なSMBバージョンにすることができます。

SUSE Linux Enterprise Serverで適切なプロトコルバージョンを有効化する方法については、34.4.1.2項 「サーバ上でSMBプロトコルの現在のバージョンを有効にする」を参照してください。

現在のSUSE Linux Enterprise ServerカーネルでSMB1共有を有効にする必要がある場合は、使用するmountコマンドラインにvers=1.0オプションを追加します。

root # mount –t smbfs IP_ADDRESS:/SHARE /MOUNT_POINT –o username=USER_ID,workgroup=WORKGROUP_NAME,vers=1.0

34.6 ログインサーバとしてのSamba

エンタープライズ設定では、セントラルインスタンスで登録されているユーザにのみアクセスを許可するのが望ましい場合が多いです。Windowsベースのネットワークでは、このタスクはPDC (プライマリドメインコントローラ)によって処理されます。Windows NTサーバをPDCとして使用することもできますが、Sambaサーバを使用しても処理できます。例34.3「smb.confファイルのグローバルセクション」に示すように、smb.conf[global]セクションにエントリを追加する必要があります。

例 34.3: smb.confファイルのグローバルセクション
[global]
    workgroup = WORKGROUP
    domain logons = Yes
    domain master = Yes

ユーザアカウントとパスワードを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 Adminステータスを割り当てることができます。

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

34.7 Active Directoryネットワーク内のSambaサーバ

LinuxサーバとWindowsサーバの両方を利用する場合、2つの独立した認証システムまたはネットワークを作成するか、または単一の中央認証システムを持つ単一のネットワークに両方のサーバを接続します。SambaはActive Directoryドメイン(AD)と連携できるため、お使いのSUSE Linux Enterprise ServerをActive Directoryドメインに参加させることができます。

Active Directoryドメインに参加させるには、次の手順に従います。

  1. rootとしてログインし、YaSTを起動します。

  2. ネットワークサービス › Windowsドメインメンバーシップの順に選択します。

  3. Windows Domain Membership画面のDomain or Workgroupに、参加するドメインを入力します。

    Windowsドメインメンバーシップの決定
    図 34.1: Windowsドメインメンバーシップの決定
  4. ServerでLinux認証にSMBソースを使用する場合は、Linuxの認証にもSMBの情報を用いるを選択します。

  5. ドメインへの参加を確認するメッセージが表示されたら、OKをクリックします。

  6. Active DirectoryサーバのWindows管理者用パスワードを入力し、OKをクリックします。

    Active Directoryドメインコントローラから、すべての認証データを取得できるようになりました。

ヒント
ヒント: 識別情報マッピング

複数のSambaサーバが存在する環境では、UIDとGIDが常に作成されるわけではありません。ユーザに割り当てられるUIDは、最初のログイン順になるため、サーバ間でUIDの競合が生じます。この問題を解決するには、識別情報マッピングを利用する必要があります。詳細については、https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/idmapper.htmlを参照してください。

34.8 詳細トピック

このセクションでは、Sambaスイートのクライアントとサーバの両方の部分を管理するためのより高度なテクニックを紹介します。

34.8.1 Btrfsでの透過的なファイル圧縮

Sambaでは、クライアントは、Btrfsファイルシステムに配置されている共有のファイルおよびディレクトリの圧縮フラグをリモートで操作できます。Windowsエクスプローラでは、ファイル › プロパティ › 詳細ダイアログを使用することで、ファイル/ディレクトリに透過的な圧縮対象のフラグを付けることができます。

Windowsエクスプローラの属性の詳細ダイアログ
図 34.2: Windowsエクスプローラの属性の詳細ダイアログ

圧縮対象フラグが付いたファイルは、アクセスまたは変更があると、基礎となるファイルシステムによって透過的に圧縮および圧縮解除されます。通常、これによってファイルアクセス時に余分なCPUオーバーヘッドが生じますが、ストレージ容量の節約になります。新しいファイルとディレクトリは、FILE_NO_COMPRESSIONオプションを指定して作成しない限り、親ディレクトリの圧縮フラグを継承します。

Windowsエクスプローラでは、圧縮ファイルとディレクトリは、未圧縮のファイル/ディレクトリとは視覚的に見分けが付くように表示されます。

Windowsエクスプローラでの圧縮ファイルのディレクトリリスト
図 34.3: Windowsエクスプローラでの圧縮ファイルのディレクトリリスト

Samba共有の圧縮を有効にするには、手動で、

vfs objects = btrfs

/etc/samba/smb.confに共有設定を追加して実行するか、YaSTを使用してネットワークサービス › Sambaサーバ › 追加の順に選択してbtrfs機能を利用するをオンにします。

Btrfsでの圧縮の概要については、1.2.2.1項 「圧縮されたBtrfsファイルシステムのマウント」を参照してください。

34.8.2 スナップショット

スナップショット(シャドウコピーとも呼ばれる)は、特定の時点におけるファイルシステムサブボリュームの状態のコピーです。Snapperは、Linuxでこれらのスナップショットを管理するためのツールです。スナップショットは、BtrfsファイルシステムまたはシンプロビジョニングされたLVMボリュームでサポートされています。Sambaスイートは、サーバ側とクライアント側の両方で、FSRVPプロトコルを介したリモートスナップショットの管理をサポートしています。

34.8.2.1 以前のバージョン

Sambaサーバのスナップショットは、ファイルまたはディレクトリの以前のバージョンとしてリモートWindowsクライアントにエクスポートできます。

Sambaサーバでスナップショットを有効にするには、次の条件を満たしている必要があります。

  • SMBネットワーク共有がBtrfsサブボリューム上に存在している。

  • SMBネットワーク共有のパスに、関連するSnapper環境設定ファイルが含まれている。次のコマンドを使用して、Snapperファイルを作成できます。

    tux > sudo snapper -c <cfg_name> create-config /path/to/share

    Snapperの詳細については、第7章 「Snapperを使用したシステムの回復とスナップショット管理を参照してください。

  • スナップショットディレクトリツリーでは、関連するユーザにアクセスを許可する必要があります。詳細については、vfs_snapperマニュアルページの「PERMISSIONS」のセクション(man 8 vfs_snapper)を参照してください。

リモートスナップショットをサポートするには、/etc/samba/smb.confファイルを変更する必要があります。変更するには、YaST › ネットワークサービス › Sambaサーバの順に選択するか、または次のコマンドを使用して関連する共有セクションを手動で拡張します。

vfs objects = snapper

手動でのsmb.confへの変更を有効にするために、Sambaサービスを再起動する必要がある点に注意してください。

tux > sudo systemctl restart nmb smb
スナップショットが有効な新しいSamba共有の追加
図 34.4: スナップショットが有効な新しいSamba共有の追加

設定後、Samba共有パスでSnapperによって作成されたスナップショットには、Windowsエクスプローラのファイルまたはディレクトリの以前のバージョンタブからアクセスできます。

Windowsエクスプローラの以前のバージョンタブ
図 34.5: Windowsエクスプローラの以前のバージョンタブ

34.8.2.2 リモート共有スナップショット

デフォルトでは、スナップショットは、SnapperコマンドラインユーティリティまたはSnapperのタイムライン機能を使用して、Sambaサーバ上でローカルでのみ作成および削除できます。

Sambaは、リモートホストからの共有スナップショット作成および削除要求をFSRVP (File Server Remote VSS Protocol)を使用して処理するように設定できます。

34.8.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に命令できます。

34.8.2.3 rpcclientによるLinuxからのスナップショットのリモート管理

samba-clientパッケージには、特定の共有の作成と公開をWindows/Sambaサーバにリモートで要求できるFSRVPクライアントが含まれています。SUSE Linux Enterprise Serverの既存のツールを使用して、公開された共有をマウントし、そのファイルをバックアップできます。サーバへの要求は、rpcclientバイナリを使用して送信されます。

例 34.4: rpcclientを使用したWindows Server 2012共有スナップショットの要求

win-server.example.comサーバにEXAMPLEドメインの管理者として接続します。

root # rpcclient -U 'EXAMPLE\Administrator' ncacn_np:win-server.example.com[ndr64,sign]
Enter EXAMPLE/Administrator's password:

rpcclientにSMB共有が表示されることを確認します。

root # rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path:   C:\Shares\windows_server_2012_share
password:       (null)

SMB共有がスナップショットの作成をサポートしていることを確認します。

root # rpcclient $> fss_is_path_sup windows_server_2012_share \
UNC \\WIN-SERVER\windows_server_2012_share\ supports shadow copy requests

共有スナップショットの作成を要求します。

root # 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\

スナップショット共有がサーバによって公開されたことを確認します。

root # 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)

スナップショット共有の削除を試みます。

root # 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

スナップショット共有がサーバによって削除されたことを確認します。

root # rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path:   C:\Shares\windows_server_2012_share
password:       (null)

34.8.2.4 DiskShadow.exeによるWindowsからのスナップショットのリモート管理

同様に、Linux Sambaサーバ上のSMB共有のスナップショットを、クライアントとして動作するWindows環境から管理できます。Windows Server 2012には、34.8.2.3項 「rpcclientによるLinuxからのスナップショットのリモート管理」で説明したrpcclientと同様にリモート共有を管理できるDiskShadow.exeユーティリティが含まれています。最初にSambaサーバを慎重に設定する必要がある点に注意してください。

以下は、Windows Serverクライアントが共有のスナップショットを管理できるようにSambaサーバを設定する手順の例です。EXAMPLEはテスト環境で使用されるActive Directoryドメイン、 fsrvp-server.example.com はSambaサーバのホスト名、/srv/smbはSMB共有のパスである点に注意してください。

手順 34.1: Sambaサーバの詳細な設定
  1. YaSTを介してActive Directoryドメインに参加します。詳細については、34.7項 「Active Directoryネットワーク内のSambaサーバ」を参照してください。

  2. Active DirectoryのDNSエントリが正しいことを確認します。

    fsrvp-server:~ # net -U 'Administrator' ads dns register \
    fsrvp-server.example.com <IP address>
    Successfully registered hostname with DNS
  3. Btrfsサブボリュームを/srv/smbに作成します。

    fsrvp-server:~ # btrfs subvolume create /srv/smb
  4. パス/srv/smbにSnapper環境設定ファイルを作成します。

    fsrvp-server:~ # snapper -c <snapper_config> create-config /srv/smb
  5. パス/srv/smbに新しい共有を作成し、YaSTのスナップショットを公開するチェックボックスをオンにします。34.8.2.2項 「リモート共有スナップショット」に説明されているように、次のスニペットを/etc/samba/smb.confのグローバルセクションに追加します。

    [global]
     rpc_daemon:fssd = fork
     registry shares = yes
     include = registry
  6. systemctl restart nmb smbコマンドを使用して、Sambaを再起動します。

  7. 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要求を発行します。

  8. Windowsクライアントアカウントに必要な特権を付与します。

    fsrvp-server:~ # net -U 'Administrator' rpc rights grant \
    "EXAMPLE\\win-client$" SeBackupPrivilege
    Successfully granted rights.

    「EXAMPLE\Administrator」ユーザの場合、すでに特権が付与されているため、上のコマンドは必要ありません。

手順 34.2: WindowsクライアントのセットアップとDiskShadow.exeの実行
  1. Windows Server 2012 (ホスト名の例:WIN-CLIENT)をブートします。

  2. SUSE Linux Enterprise Serverと同じActive DirectoryドメインEXAMPLEに参加します。

  3. 再起動します。

  4. Powershellを開きます。

  5. 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
  6. プログラムを終了、リセット、または再起動しても、シャドウコピーが継続動作するように指定します。

    DISKSHADOW> set context PERSISTENT
  7. 指定した共有がスナップショットをサポートしているかどうかを確認し、スナップショットを作成します。

    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
  8. バックアップ手順を終了します。

    DISKSHADOW> end backup
  9. スナップショットが作成された後、その削除を試み、削除されたことを確認します。

    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.

34.9 その他の情報

  • manページ: パッケージ sambaでインストールされるすべてのマニュアルページのリストを表示するには、apropos sambaを実行します。man NAME_OF_MAN_PAGEを使用してマニュアルページを開きます。

  • SUSE-specific READMEファイル: パッケージ samba-client には、/usr/share/doc/packages/samba/README.SUSEファイルが含まれます。

  • 追加のパッケージドキュメント: zypper install samba-docを使用して、パッケージsamba-docをインストールします。

    このドキュメントは/usr/share/doc/packages/sambaにインストールされます。マニュアルページのHTMLバージョンと設定例のライブラリ(smb.conf.SUSEなど)が含まれています。

  • オンラインヘルプ: Samba wikiには、広範囲なユーザマニュアルが含まれています(https://wiki.samba.org/index.php/User_Documentation)。