20 Samba #
Sambaを使用すると、macOS、Windows、OS/2マシンに対するファイルサーバおよびプリントサーバをUnixマシン上に構築できます。Sambaは、今や成熟の域に達したかなり複雑な製品です。YaSTで、または環境設定ファイルを手動で編集することで、Sambaを設定します。
Sambaバージョン4.17以降、SUSE Linux Enterprise ServerではSMB1プロトコルが無効になっており、サポートされなくなりました。
20.1 用語集 #
ここでは、SambaのマニュアルやYaSTモジュールで使用される用語について説明します。
- SMBプロトコル
- SambaはSMB(サーバメッセージブロック)プロトコルを使用します。SMBはNetBIOSサービスを基にしています。Microsoftは、他のメーカーのソフトウェアがMicrosoftオペレーティングシステムを実行しているサーバへの接続を確立できるように、このプロトコルをリリースしました。SambaはTCP/IPプロトコルの上にSMBプロトコルを実装します。つまり、すべてのクライアントにTCP/IPをインストールし、有効にする必要があります。 ヒント: IBM Z: NetBIOSのサポート- IBM ZではSMB over TCP/IPのみがサポートされています。これら2つのシステムではNetBIOSをサポートしていません。 
- CIFSプロトコル
- CIFS (Common Internet File System)プロトコルは、SMB1とも呼ばれるSMBプロトコルの初期バージョンです。CIFSは、TCP/IP上で使用する標準のリモートファイルシステムで、ユーザグループによる共同作業およびインターネットを介したドキュメントの共有ができるようにします。 - SMB1はSMB2に置き換えられ、Microsoft Windows Vista™の一部として最初にリリースされました。これは、Microsoft Windows 8™およびMicrosoft Windows Server 2012ではSMB3に置き換えられました。最新バージョンのSambaでは、セキュリティ上の理由によりデフォルトでSMB1は無効になっています。 
- NetBIOS
- NetBIOSは、ネットワーク上のコンピュータ間の名前解決と通信用に設計されたソフトウェアインタフェース(API)です。これにより、ネットワークに接続されたマシンが、それ自体の名前を維持できます。予約を行えば、これらのマシンを名前によって指定できます。名前を確認する一元的なプロセスはありません。ネットワーク上のマシンでは、すでに使用済みの名前でない限り、名前をいくつでも予約できます。NetBIOSはさまざまなネットワークプロトコルの上に実装できます。比較的単純でルーティング不可能な実装の1つは、NetBEUIと呼ばれます(これはNetBIOS APIと混同されることが多くあります)。NetBIOSは、Novell IPX/SPXプロトコルの上でもサポートされています。バージョン3.2以降、SambaはIPv4とIPv6の両方でNetBIOSをサポートしています。 - TCP/IP経由で送信されたNetBIOS名は、 - /etc/hostsで使用されている名前、またはDNSで定義された名前とまったく共通点がありません。NetBIOSは独自の、完全に独立した名前付け規則を使用しています。しかし、管理を容易にするために、またはDNSをネイティブで使用するために、DNSホスト名に対応する名前を使用することをお勧めします。これはSambaが使用するデフォルトでもあります。
- Sambaサーバ
- Sambaサーバは、SMB/CIFSサービスおよびNetBIOS over IPネーミングサービスをクライアントに提供します。Linuxの場合、3種類のSambaサーバデーモン(SMB/CIFSサービス用 - smbd、ネーミングサービス用- nmbd、認証用- winbind)が用意されています。
- Sambaクライアント
- Sambaクライアントは、SMBプロトコルを介してSambaサーバからSambaサービスを使用するシステムです。WindowsやmacOSなどの一般的なオペレーティングシステムは、SMBプロトコルをサポートしています。TCP/IPプロトコルは、すべてのコンピュータにインストールする必要があります。Sambaは、異なるUNIXフレーバーに対してクライアントを提供します。Linuxでは、SMB用のカーネルモジュールがあり、LinuxシステムレベルでのSMBリソースの統合が可能です。Sambaクライアントに対していずれのデーモンも実行する必要はありません。 
- 共有
- SMBサーバは、そのクライアントに対し、「共有」によってリソースを提供します。共有は、サーバ上のディレクトリ(サブディレクトリを含む)とプリンタです。共有は、「共有名」によってエクスポートされ、この名前でアクセスできます。共有名にはどのような名前も設定できます。エクスポートディレクトリの名前である必要はありません。共有プリンタにも名前が割り当てられています。クライアントは名前で共有ディレクトリとプリンタにアクセスできます。 - 慣例により、ドル記号( - $)で終わる共有名は非表示になります。Windowsコンピュータを使用して、使用可能な共有を参照する際には表示されません。
- DC
- ドメインコントローラ(DC)は、ドメインのアカウントを処理するサーバです。データレプリケーションの場合、単一ドメインに複数のドメインコントローラを含めることができます。 
20.2 Sambaサーバのインストール #
Sambaサーバをインストールするには、YaSTを起動して、 › の順に選択します。 › の順に選択し、を選択します。必要なパッケージのインストールを確認して、インストールプロセスを完了します。
20.3 Sambaの起動および停止 #
Sambaサーバは、自動(ブート中)か手動で起動または停止できます。ポリシーの開始および停止は、20.4.1項 「YaSTによるSambaサーバの設定」で説明しているように、YaST Sambaサーバ設定の一部です。
      コマンドラインから、Sambaに必要なサービスをsystemctl stop smb nmbを使用して停止し、systemctl start nmb smbを使用して開始します。smbサービスは、必要に応じてwinbindを処理します。
    
winbind
winbindは、独立したサービスで、個別のsamba-winbindパッケージとしても提供されます。
      
20.4 Sambaサーバの設定 #
SUSE® Linux Enterprise ServerのSambaサーバは、YaSTを使って、または手動で設定することができます。手動で設定を行えば細かい点まで調整できますが、YaSTのGUIほど便利ではありません。
20.4.1 YaSTによるSambaサーバの設定 #
Sambaサーバを設定するには、YaSTを起動して、 › の順に選択します。
20.4.1.1 初期Samba設定 #
このモジュールを初めて起動すると、ダイアログが起動して、サーバ管理に関していくつかの基本的な事項を決定するように要求されます。設定の最後に、Samba管理者パスワードを要求されます()。次回起動時には、ダイアログが表示されます。
ダイアログは、次の2つのステップとオプションの詳細設定で構成されています。
- ワークグループまたはドメイン名
- から既存の名前を選択するか、新しい名前を入力し、を入力します。 
- Sambaサーバのタイプ
- 次のステップでは、サーバをPDC(プライマリドメインコントローラ)として機能させるか、BDC(バックアップドメインコントローラ)として機能させるか、またはドメインコントローラとしては機能させないかを指定します。で続行します。 
詳細なサーバ設定に進まない場合は、を選択して確認します。次に、最後のポップアップボックスで、を設定します。
この設定はすべて、後からダイアログで、、、、の各タブを使用して変更することができます。
20.4.1.2 サーバ上でSMBプロトコルの現在のバージョンを有効にする #
現在のバージョンのSUSE Linux Enterprise Serverまたは他の最新のLinuxバージョンを実行しているクライアントで、安全ではないSMB1/CIFSプロトコルはデフォルトで無効になっています。ただし、Sambaの既存のインスタンスはSMB1/CIFSバージョンのプロトコルを使用する共有にのみサービスを提供するように設定できます。このようなクライアントとやり取りするためには、少なくともSMB 2.1プロトコルを使用して共有にサービスを提供するようにSambaを設定する必要があります。
たとえば、SMB1/CIFSのUnix拡張機能に依存する、SMB1のみが使用可能な設定があります。これらの拡張機能は、より新しいバージョンのプロトコルには移植されていません。このような状況にある場合は、設定を変更することを検討するか、20.5.2項 「クライアント上へのSMB1/CIFS共有のマウント」を参照してください。
          これを行うには、設定ファイル/etc/samba/smb.confで、グローバルパラメータserver max protocol = SMB2_10を設定します。すべての可能な値のリストについては、man smb.confを参照してください。
        
20.4.1.3 Sambaの詳細設定 #
Sambaサーバモジュールの初回起動中、2つの初期化ステップ(20.4.1.1項 「初期Samba設定」参照)の直後にダイアログが表示されます。ここでは、Sambaサーバの設定を編集することができます。
設定を編集し終わったら、をクリックして設定を保存します。
20.4.1.3.1 サーバを起動する #
タブで、Sambaサーバの起動に関する設定を行います。システムのブート時に毎回サービスが起動されるようにするには、を選択します。手動起動を有効化するには、を選択します。Sambaサーバの起動の詳細については、20.3項 「Sambaの起動および停止」を参照してください。
このタブで、ファイアウォールのポートを開くこともできます。そのためには、を選択します。複数のネットワークインタフェースがある場合は、をクリックし、インタフェースを選択した後、をクリックして、Sambaサービス用のネットワークインタフェースを選択します。
20.4.1.3.3 ID #
タブで、ホストが関連付けられているドメイン()と、ネットワークで代替ホスト名を使用するかどうか()を指定します。名前解決にMicrosoft Windows Internet Name Service(WINS)を使用することもできます。この場合、を有効にし、DHCP経由でWINSサーバを取得(を使用)するかどうか決定します。TDBデータベースではなくLDAPなど、エキスパートグローバル設定またはユーザ認証ソースを設定するには、をクリックします。
20.4.1.3.4 信頼されたドメイン #
他のドメインのユーザを、自分のドメインにアクセスさせるには、タブで適切な設定を行います。をクリックして、新しいドメインを追加します。選択したドメインを削除するには、をクリックします。
20.4.1.3.5 LDAP設定 #
タブでは、認証に使用するLDAPサーバを設定することができます。LDAPサーバへの接続をテストするには、をクリックします。エキスパートLDAP設定を設定するか、デフォルト値を使用する場合、をクリックします。
LDAP設定に関する詳細については、Chapter 5, LDAP with 389 Directory Serverを参照してください。
20.4.2 サーバの手動設定 #
        Sambaをサーバとして使用する場合は、sambaをインストールします。Sambaの主要設定ファイルは、/etc/samba/smb.confです。このファイルは2つの論理部分に分けられます。[global]セクションには、中心的なグローバル設定が含まれます。次のデフォルトのセクションには、個別のファイルとプリンタ共有が入っています。
      
- [homes] 
- [プロファイル] 
- [users] 
- [グループ] 
- [プリンタ] 
- [印刷$] 
        この方法を使用すると、共有のオプションを[global]セクションで別々にまたはグローバルに設定することができます。これにより、環境設定ファイルが理解しやすくなります。
      
20.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』の詳細については、20.9項 「詳細情報」を参照してください。- ネットワーク内に他のSMBサーバ(たとえば、Windows 2000サーバ)が存在せず、ローカル環境に存在するすべてのシステムのリストをSambaサーバに保存する場合は、 - os levelの値を大きくします(たとえば、- 65)。これでSambaサーバが、ローカルネットワークのLMBとして選択されました。- この設定を変更するときは、それが既存のWindowsネットワーク環境にどう影響するかを慎重に検討する必要があります。はじめに、隔離されたネットワークで、または影響の少ない時間帯に、変更をテストしてください。 
- wins supportおよび- wins server
- アクティブなWINSサーバをもつ既存のWindowsネットワークにSambaサーバを参加させる場合は、 - wins serverオプションを有効にし、その値をWINSサーバのIPアドレスに設定します。- 各Windowsマシンの接続先サブネットが異なり、互いを認識させなければならない場合は、WINSサーバをセットアップする必要があります。SambaサーバをWINSサーバなどにするには、 - wins support = Yesオプションを設定します。ネットワーク内でこの設定が有効なSambaサーバは1台だけであることを確認します。オプション- wins serverと- wins supportは、- smb.confファイル内で同時に有効にしないでください。
20.4.2.3 セキュリティレベル #
セキュリティを向上させるため、各共有へのアクセスは、パスワードによって保護されています。SMBでは、次の方法で権限を確認できます。
- ユーザレベルセキュリティ(security = user)
- このセキュリティレベルは、ユーザという概念をSMBに取り入れています。各ユーザは、サーバにパスワードを登録する必要があります。登録後、エクスポートされた個々の共有へのアクセスは、ユーザ名に応じてサーバが許可します。 
- ADSレベルセキュリティ(security = ADS)
- このモードでは、Sambaはアクティブディレクトリ環境のドメインメンバーとして動作します。このモードで操作するには、Sambaを実行しているコンピュータにKerberosがインストールされ設定済みであることが必要です。Sambaを使用してコンピュータをADSレルムに結合させる必要があります。これは、YaSTのモジュールを使用して行います。 
- ドメインレベルセキュリティ(security = domain)
- このモードは、マシンがWindows NTドメインに参加している場合にのみ正しく動作します。Sambaは、Windows Serverと同じ方法で、ユーザ名とパスワードをWindowsプライマリまたはバックアップドメインコントローラに渡すことで検証しようとします。暗号化されたパスワードパラメータが - yesに設定されている必要があります。
共有、ユーザ、サーバ、またはドメインレベルのセキュリティの設定は、サーバ全体に適用されます。個別の共有ごとに、ある共有には共有レベルのセキュリティ、別の共有にはユーザレベルセキュリティを設定するといったことはできません。しかし、システム上に設定したIPアドレスごとに、別のSambaサーバを実行することは可能です。
          この詳細については、『Samba 3 HOWTO』を参照してください。1つのシステムで複数のサーバを使用する場合は、オプションinterfacesとbind interfaces
          onlyに注意してください。
        
20.5 クライアントの設定 #
クライアントは、TCP/IP経由でのみSambaサーバにアクセスできます。IPX経由のNetBEUIおよびNetBIOSは、Sambaで使用できません。
20.5.1 YaSTによるSambaクライアントの設定 #
SambaクライアントをSambaサーバまたはWindowsサーバ上のリソース(ファイルまたはプリンタ)にアクセスするように設定します。WindowsまたはActive Directoryのドメインまたはワークグループを、 › の順に選択して表示したダイアログに入力します。を有効にした場合、ユーザ認証は、Samba、Windows、またはKerberosのサーバ上で実行されます。
をクリックして、高度な設定オプションを設定します。たとえば、認証による自動的なサーバホームディレクトリのマウントを有効化するには、のテーブルを使用します。これにより、CIFS上でホストされると、ホームディレクトリにアクセスできるようになります。詳細については、pam_mountのマニュアルページを参照してください。
      
すべての設定を完了したら、ダイアログを確認して設定を終了します。
20.5.2 クライアント上へのSMB1/CIFS共有のマウント #
        SMBネットワークプロトコルの最初のバージョン、SMB1またはCIFSは、古くて安全ではないプロトコルであるため、開発者であるMicrosoftによって推奨されていません。セキュリティ上の理由から、SUSE Linux Enterprise Serverのmountコマンドは、デフォルトでより新しいプロトコルバージョン(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で適切なプロトコルバージョンを有効化する方法については、20.4.1.2項 「サーバ上でSMBプロトコルの現在のバージョンを有効にする」を参照してください。
        現在のSUSE Linux Enterprise ServerカーネルでSMB1共有を有効にする必要がある場合は、使用するmountコマンドラインにvers=1.0オプションを追加します。
      
# mount -t cifs //HOST/SHARE /MOUNT_POINT –o username=USER_ID,vers=1.0
        または、SUSE Linux Enterprise Serverのインストール内でSMB1共有をグローバルに有効にすることもできます。有効にするには、/etc/samba/smb.confの[global]セクションの下に次のコマンドを追加します。
      
client min protocol = CORE
20.6 ログインサーバとしてのSamba #
      ビジネス設定では、セントラルインスタンスで登録されているユーザにのみアクセスを許可するのが望ましい場合が多いです。Windowsベースのネットワークでは、このタスクはPDC (プライマリドメインコントローラ)によって処理されます。WindowsサーバをPDCとして使用することもできますが、Sambaサーバを使用しても処理できます。例20.3「smb.confファイルのグローバルセクション」に示すように、smb.confの[global]セクションにエントリを追加する必要があります。
    
[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
20.7 Active Directoryネットワーク内のSambaサーバ #
LinuxサーバとWindowsサーバの両方を利用する場合、2つの独立した認証システムまたはネットワークを作成するか、または単一の中央認証システムを持つ単一のネットワークに両方のサーバを接続します。SambaはActive Directoryドメイン(AD)と連携できるため、お使いのSUSE Linux Enterprise ServerをActive Directoryドメインに参加させることができます。
Active Directoryドメインに参加させるには、次の手順に従います。
- rootとしてログインし、YaSTを起動します。
- › の順に選択します。 
- 画面のフィールドに、参加するドメインを入力します。 図 20.1: Windowsドメインメンバーシップの決定 #
- ServerでLinux認証にSMBソースを使用する場合は、を選択します。 
- ドメインへの参加を確認するメッセージが表示されたら、をクリックします。 
- Active DirectoryサーバのWindows管理者用パスワードを入力し、をクリックします。 - Active Directoryドメインコントローラから、すべての認証データを取得できるようになりました。 
      または、realmdツールを使用して、Active Directoryに接続することもできます。詳細については、20.7.1項 「realmdを使用したActive Directoryの管理」を参照してください。
    
複数のSambaサーバが存在する環境では、UIDとGIDが常に作成されるわけではありません。ユーザに割り当てられるUIDは、最初のログイン順になるため、サーバ間でUIDの競合が生じます。この問題を解決するには、識別情報マッピングを利用する必要があります。詳しくはhttps://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/idmapper.htmlを参照してください。
20.7.1 realmdを使用したActive Directoryの管理 #
realmdは、ネットワーク認証とドメインメンバーシップを設定できるDBusサービスです。
      
20.7.1.1 Active Directoryドメインの検出 #
realmdは、DNS SRVレコードをチェックして、使用または設定可能なドメインまたはレルムを検出します。検出するActive Directoryドメイン(次の例ではdomain.example.com)に対してDNS SRVレコードが使用可能であることを確認します。
        
_ldap._tcp.dc._msdcs.domain.example.com.
DNSレコードは、Active Directory付属のDNSサーバによって自動的に作成されるはずです。
特定のドメイン名を検出するには、次のコマンドを実行します。
>sudorealm discover --verbose domain.example.com* Resolving: _ldap._tcp.dc._msdcs.domain.example.com * Sending MS-CLDAP ping to: 192.168.20.10 * Sending MS-CLDAP ping to: 192.168.12.12 * Successfully discovered: domain.example.com ...
特定のActive Directoryドメインに参加させるには、次のコマンドを実行します。
>sudorealm join --verbose domain.example.com
Active Directoryドメインに参加させたら、ドメインアカウントを使用してログインできるようにマシンを設定できます。このためには、次のコマンドを実行します。
>sudorealm permit --realm domain.example.com --all
特定のアカウントのみを許可するには、次のようにコマンドでそれを指定します。
>sudorealm permit --realm domain.example.com DOMAIN\\USERNAME DOMAIN\\USERNAME
任意のドメインアカウントからのログインを拒否するには、次のコマンドを使用します。
>sudorealm deny --realm domain.example.com --all
20.8 詳細トピック #
このセクションでは、Sambaスイートのクライアントとサーバの両方の部分を管理するためのより高度なテクニックを紹介します。
20.8.1 systemdを使用したCIFSファイルシステムの自動化 #
systemdを使用して起動時にCIFS共有をマウントできます。そのためには、以下の説明に従って進めます。
      
- マウントポイントを作成します。 - >mkdir -p PATH_SERVER_SHARED_FOLDER- ここで、PATH_SERVER_SHARED_FOLDERは、以降のステップでは - /cifs/sharedです。
- systemdユニットファイルを作成し、前のステップで指定したパスからファイル名を生成します。ここで、「/」は「-」に置き換えられます。例:- >- sudotouch /etc/systemd/system/cifs-shared.mount- 次の内容が続きます。 - [Unit] Description=CIFS share from The-Server [Mount] What=//The-Server/Shared-Folder Where=/cifs/shared Type=cifs Options=rw,username=vagrant,password=admin [Install] WantedBy=multi-user.target 
- サービスを有効化します。 - >- sudosystemctl enable cifs-shared.mount
- サービスを開始します。 - >- sudosystemctl start cifs-shared.mount- サービスが実行中であることを確認するには、次のコマンドを実行します。 - >- sudosystemctl status cifs-shared.mount
- CIFS共有パスが使用可能であることを確認するには、次のコマンドを実行します。 - >cd /cifs/shared- >ls -l total 0 -rwxrwxrwx. 1 root root 0 Oct 24 22:31 hello-world-cifs.txt drwxrwxrwx. 2 root root 0 Oct 24 22:31 subfolder -rw-r--r--. 1 vagrant vagrant 0 Oct 28 21:51 testfile.txt
20.8.2 Btrfsでの透過的なファイル圧縮 #
Sambaでは、クライアントは、Btrfsファイルシステムに配置されている共有のファイルおよびディレクトリの圧縮フラグをリモートで操作できます。Windowsエクスプローラでは、 › › ダイアログを使用することで、ファイル/ディレクトリに透過的な圧縮対象のフラグを付けることができます。
圧縮対象フラグが付いたファイルは、アクセスまたは変更があると、基礎となるファイルシステムによって透過的に圧縮および圧縮解除されます。通常、これによってファイルアクセス時に余分なCPUオーバーヘッドが生じますが、ストレージ容量の節約になります。新しいファイルとディレクトリは、FILE_NO_COMPRESSIONオプションを指定して作成しない限り、親ディレクトリの圧縮フラグを継承します。
Windowsエクスプローラでは、圧縮ファイルとディレクトリは、未圧縮のファイル/ディレクトリとは視覚的に見分けが付くように表示されます。
Samba共有の圧縮を有効にするには、手動で、
vfs objects = btrfs
/etc/samba/smb.confに共有設定を追加して実行するか、YaSTを使用して ›  › の順に選択してをオンにします。
      
Btrfsでの圧縮の概要については、1.2.2.1項 「圧縮されたBtrfsファイルシステムのマウント」を参照してください。
20.8.3 スナップショット #
スナップショット(シャドウコピーとも呼ばれる)は、特定の時点におけるファイルシステムサブボリュームの状態のコピーです。Snapperは、Linuxでこれらのスナップショットを管理するためのツールです。スナップショットは、BtrfsファイルシステムまたはシンプロビジョニングされたLVMボリュームでサポートされています。Sambaスイートは、サーバ側とクライアント側の両方で、FSRVPプロトコルを介したリモートスナップショットの管理をサポートしています。
20.8.3.1 以前のバージョン #
Sambaサーバ上のスナップショットは、以前のバージョンのファイルまたはディレクトリとしてリモートWindowsクライアントに公開できます。
Sambaサーバでスナップショットを有効にするには、次の条件を満たしている必要があります。
- SMBネットワーク共有がBtrfsサブボリューム上に存在している。 
- SMBネットワーク共有のパスに、関連するSnapper環境設定ファイルが含まれている。次のコマンドを使用して、Snapperファイルを作成できます。 - >- sudosnapper -c <cfg_name> create-config- /path/to/share- Snapperの詳細については、第10章 「Snapperを使用したシステムの回復とスナップショット管理」を参照してください。 
- スナップショットディレクトリツリーでは、関連するユーザにアクセスを許可する必要があります。詳細については、マニュアルページの「PERMISSIONS」のセクション( - man 8 vfs_snappervfs_snapper)を参照してください。
          リモートスナップショットをサポートするには、/etc/samba/smb.confファイルを変更する必要があります。変更するには、 ›  › の順に選択するか、または次のコマンドを使用して関連する共有セクションを手動で拡張します。
        
vfs objects = snapper
          手動でのsmb.confへの変更を有効にするために、Sambaサービスを再起動する必要がある点に注意してください。
        
>sudosystemctl restart nmb smb
設定後、Samba共有パスでSnapperによって作成されたスナップショットには、Windowsエクスプローラのファイルまたはディレクトリのタブからアクセスできます。
20.8.3.2 リモート共有スナップショット #
デフォルトでは、スナップショットは、SnapperコマンドラインユーティリティまたはSnapperのタイムライン機能を使用して、Sambaサーバ上でローカルでのみ作成および削除できます。
Sambaは、リモートホストからの共有スナップショット作成および削除要求をFSRVP (File Server Remote VSS Protocol)を使用して処理するように設定できます。
20.8.3.1項 「以前のバージョン」で説明されている環境設定と前提条件に加え、/etc/samba/smb.confに次のグローバル設定が必要です。
        
[global] rpc_daemon:fssd = fork registry shares = yes include = registry
          その後、FSRVPクライアント(SambaのrpcclientおよびWindows Server 2012 DiskShadow.exeを含む)は、特定の共有のスナップショットを作成または削除したり、スナップショットを新しい共有として公開したりするようSambaに命令できます。
        
20.8.3.3 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)20.8.3.4 DiskShadow.exeによるWindowsからのスナップショットのリモート管理 #
          WindowsクライアントからLinux Samba上でSMB共有のスナップショットを管理することもできます。Windows Server 2012には、20.8.3.3項 「rpcclientによるLinuxからのスナップショットのリモート管理」で説明したrpcclientコマンドと同様にリモート共有を管理できるDiskShadow.exeユーティリティが含まれています。最初にSambaサーバを慎重に設定する必要がある点に注意してください。
        
          以下は、Windowsクライアントが共有のスナップショットを管理できるようにSambaサーバを設定する手順の例です。EXAMPLEはテスト環境で使用されるActive Directoryドメイン、fsrvp-server.example.comはSambaサーバのホスト名、/srv/smbはSMB共有のパスである点に注意してください。
        
- YaSTを介してActive Directoryドメインに参加します。詳細については、20.7項 「Active Directoryネットワーク内のSambaサーバ」を参照してください。 
- 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のチェックボックスをオンにします。20.8.3.2項 「リモート共有スナップショット」に説明されているように、次のスニペットを- /etc/samba/smb.confのグローバルセクションに追加します。- [global] rpc_daemon:fssd = fork registry shares = yes include = registry 
- systemctl restart nmb smbで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)をブートします。 
- SUSE Linux Enterprise Serverと同じActive DirectoryドメインEXAMPLEに参加します。 
- 再起動します。 
- 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.
20.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には、広範囲なUser Documentation (https://wiki.samba.org/index.php/User_Documentation)が含まれています。 




