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 サーバを起動する #
20.3項 「Sambaの起動および停止」を参照してください。
タブで、Sambaサーバの起動に関する設定を行います。システムのブート時に毎回サービスが起動されるようにするには、 を選択します。手動起動を有効化するには、 を選択します。Sambaサーバの起動の詳細については、このタブで、ファイアウォールのポートを開くこともできます。そのためには、
を選択します。複数のネットワークインタフェースがある場合は、 をクリックし、インタフェースを選択した後、 をクリックして、Sambaサービス用のネットワークインタフェースを選択します。20.4.1.3.3 ID #
TDBデータベースではなくLDAPなど、エキスパートグローバル設定またはユーザ認証ソースを設定するには、 をクリックします。
タブで、ホストが関連付けられているドメイン( )と、ネットワークで代替ホスト名を使用するかどうか( )を指定します。名前解決にMicrosoft Windows Internet Name Service(WINS)を使用することもできます。この場合、 を有効にし、DHCP経由でWINSサーバを取得( を使用)するかどうか決定します。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のサーバ上で実行されます。
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サーバによって自動的に作成されるはずです。
特定のドメイン名を検出するには、次のコマンドを実行します。
>
sudo
realm 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ドメインに参加させるには、次のコマンドを実行します。
>
sudo
realm join --verbose domain.example.com
Active Directoryドメインに参加させたら、ドメインアカウントを使用してログインできるようにマシンを設定できます。このためには、次のコマンドを実行します。
>
sudo
realm permit --realm domain.example.com --all
特定のアカウントのみを許可するには、次のようにコマンドでそれを指定します。
>
sudo
realm permit --realm domain.example.com DOMAIN\\USERNAME DOMAIN\\USERNAME
任意のドメインアカウントからのログインを拒否するには、次のコマンドを使用します。
>
sudo
realm 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
ユニットファイルを作成し、前のステップで指定したパスからファイル名を生成します。ここで、「/」は「-」に置き換えられます。例:>
sudo
touch /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
サービスを有効化します。
>
sudo
systemctl enable cifs-shared.mountサービスを開始します。
>
sudo
systemctl start cifs-shared.mountサービスが実行中であることを確認するには、次のコマンドを実行します。
>
sudo
systemctl status cifs-shared.mountCIFS共有パスが使用可能であることを確認するには、次のコマンドを実行します。
>
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ファイルを作成できます。
>
sudo
snapper -c <cfg_name> create-config/path/to/share
Snapperの詳細については、第10章 「Snapperを使用したシステムの回復とスナップショット管理」を参照してください。
スナップショットディレクトリツリーでは、関連するユーザにアクセスを許可する必要があります。詳細については、マニュアルページの「PERMISSIONS」のセクション(
man 8 vfs_snapper
vfs_snapper)を参照してください。
リモートスナップショットをサポートするには、/etc/samba/smb.conf
ファイルを変更する必要があります。変更するには、 › › の順に選択するか、または次のコマンドを使用して関連する共有セクションを手動で拡張します。
vfs objects = snapper
手動でのsmb.conf
への変更を有効にするために、Sambaサービスを再起動する必要がある点に注意してください。
>
sudo
systemctl 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)が含まれています。