第8章 Red Hat Enterprise Linux での SMB 共有のマウント

Server Message Block (SMB) プロトコルは、アプリケーション層のネットワークプロトコルを実装します。これは、ファイル共有や共有プリンターなど、サーバー上のリソースにアクセスするために使用されます。

注記

SMB のコンテキストでは、SMB ダイアレクトである CIFS (Common Internet File System) プロトコルが言及されています。SMB と CIFS の両方のプロトコルがサポートされており、SMB 共有と CIFS 共有のマウントに関連するカーネルモジュールとユーティリティーはどちらも cifs という名前を使用します。

本セクションでは、SMB サーバーから共有をマウントする方法を説明します。Samba を使用して Red Hat Enterprise Linux に SMB サーバーを設定する方法は、「Samba をサーバーとして使用」を参照してください。

前提条件

SMB は、Microsoft Windows にはデフォルトで実装されています。Red Hat Enterprise Linux では、カーネルの cifs.ko ファイルシステムモジュールが SMB 共有のマウントに対応します。したがって、cifs-utils パッケージをインストールします。

# yum install cifs-utils

cifs-utils パッケージには、以下を行うユーティリティーがあります。

  • SMB 共有と CIFS 共有をマウントする
  • カーネルのキーリングで、NT Lan Manager (NTLM) の認証情報を管理する
  • SMB 共有および CIFS 共有のセキュリティー記述子で、アクセス制御リスト (ACL) を設定して、表示する

8.1. 対応している SMB プロトコルのバージョン

cifs.ko カーネルモジュールは、以下の SMB プロトコルバージョンをサポートします。

  • SMB 1
  • SMB 2.0
  • SMB 2.1
  • SMB 3.0
  • SMB 3.1.1
注記

プロトコルのバージョンによっては、一部の SMB 機能しか実装されていません。

8.2. UNIX 拡張機能のサポート

Samba は、SMB プロトコルの CAP_UNIX 機能ビットを使用して UNIX 拡張機能を提供します。これらの拡張機能は、cifs.ko カーネルモジュールでも対応します。ただし、Samba とカーネルモジュールはいずれも、SMB 1 プロトコルでのみ UNIX 拡張機能に対応します。

UNIX 拡張機能を使用するには、以下の手順を実行します。

  1. /etc/samba/smb.conf ファイルの [global] セクションにある server min protocol パラメーターを NT1 に設定します。
  2. マウントコマンドに -o vers=1.0 オプションを指定し、SMB 1 プロトコルを使用して共有をマウントします。以下に例を示します。

    # mount -t cifs -o vers=1.0,username=user_name //server_name/share_name /mnt/

    デフォルトで、カーネルモジュールは、SMB 2 またはサーバーでサポートされている最新のプロトコルバージョンを使用します。-o vers=1.0 オプションを mount コマンドに渡すと、UNIX 拡張機能の使用に必要な SMB 1 プロトコルをカーネルモジュールが使用することが強制されます。

UNIX 拡張機能が有効になっているかどうかを確認するには、マウントされた共有のオプションを表示します。

# mount
...
//server/share on /mnt type cifs (...,unix,...)

マウントオプションの一覧に unix エントリーが表示されている場合は、UNIX 拡張機能が有効になっています。

8.3. SMB 共有の手動マウント

SMB 共有のみを一時的にマウントする必要がある場合は、mount ユーティリティーを使用して手動でマウントできます。

注記

手動でマウントされた共有は、システムを再起動しても自動的にはマウントされません。システムの起動時に Red Hat Enterprise Linux が自動的に共有をマウントするように設定する場合は、「システム起動時の SMB 共有の自動マウント」を参照してください。

前提条件

  • cifs-utils パッケージがインストールされている。

手順

SMB 共有を手動でマウントする場合は、mount ユーティリティーに -t cifs パラメーターを指定して実行します。

# mount -t cifs -o username=user_name //server_name/share_name /mnt/
Password for user_name@//server_name/share_name:  password

-o パラメーターでは、共有のマウントに使用されるオプションを指定できます。詳細は、「よく使用されるマウントオプション」と、man ページの mount.cifs(8)OPTIONS セクションを参照してください。

例8.1 暗号化された SMB 3.0 接続を使用した共有のマウント

暗号化された SMB 3.0 接続で、DOMAIN\Administrator ユーザーとして \\server\example\ 共有を /mnt/ ディレクトリーにマウントする場合は、次の手順を実行します。

# mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server/example /mnt/
Password for DOMAIN\Administrator@//server_name/share_name:  password

8.4. システム起動時の SMB 共有の自動マウント

マウントされた SMB 共有へのアクセスがサーバー上で恒久的に必要とされる場合は、システムの起動時に共有を自動的にマウントします。

前提条件

  • cifs-utils パッケージがインストールされている。

手順

システムの起動時に SMB 共有を自動的にマウントするには、共有のエントリーを /etc/fstab ファイルに追加します。以下に例を示します。

//server_name/share_name  /mnt  cifs  credentials=/root/smb.cred  0 0
重要

システムが自動的に共有をマウントできるようにするには、ユーザー名、パスワード、およびドメイン名を認証情報ファイルに保存する必要があります。詳細は「認証情報ファイルを使用した SMB 共有への認証」を参照してください。

/etc/fstab の 4 行目のフィールドで、認証情報ファイルへのパスなど、マウントオプションを指定します。詳細は、「よく使用されるマウントオプション」と、man ページの mount.cifs(8)OPTIONS セクションを参照してください。

共有が正常にマウントされたことを確認する場合は、次のコマンドを実行します。

# mount /mnt/

8.5. 認証情報ファイルを使用した SMB 共有への認証

特定の状況 (システムの起動時に共有を自動的にマウントする場合など) では、ユーザー名とパスワードを入力することなく共有がマウントされる必要があります。これを実装するには、認証情報ファイルを作成します。

前提条件

  • cifs-utils パッケージがインストールされている。

手順

  1. /root/smb.cred などのファイルを作成し、そのファイルのユーザー名、パスワード、およびドメイン名を指定します。

    username=user_name
    password=password
    domain=domain_name
  2. 所有者だけがファイルにアクセスできるようにパーミッションを設定します。

    # chown user_name /root/smb.cred
    # chmod 600 /root/smb.cred

mount ユーティリティーに credentials=file_name マウントオプションを渡すか、/etc/fstab ファイルでオプションを使用して、ユーザー名とパスワードの入力を求められずに共有をマウントできます。

8.6. マルチユーザー SMB マウントの実行

共有をマウントするために指定した認証情報により、デフォルトでマウントポイントのアクセス権が決まります。たとえば、共有をマウントするときに DOMAIN\example ユーザーを使用した場合は、どのローカルユーザーが操作を実行しても、共有に対するすべての操作はこのユーザーとして実行されます。

ただし特定の状況では、システムの起動時に管理者が自動的に共有をマウントしたい場合でも、ユーザーは自分の認証情報を使用して共有のコンテンツに対して操作を実行する必要があります。このとき、multiuser マウントオプションを使用すると、このシナリオを設定できます。

重要

multiuser マウントオプションを使用するには、認証情報ファイルの krb5 オプションや ntlmssp オプションなど、非対話式の方法で認証情報の提供に対応するセキュリティータイプに、sec マウントオプションを追加で設定する必要があります。詳細は「ユーザーとして共有へのアクセス」を参照してください。

root ユーザーは、multiuser オプションと、共有内のコンテンツへの最低限のアクセスを持つアカウントを使用して、共有をマウントします。通常のユーザーは、cifscreds ユーティリティーを使用して、現在のセッションのカーネルキーリングに、自身のユーザー名とパスワードを渡すことができます。マウントされた共有のコンテンツにユーザーがアクセスすると、カーネルは、共有のマウントに最初に使用されたものではなく、カーネルキーリングからの認証情報を使用します。

この機能の使用は、以下の手順で構成されます。

前提条件

  • cifs-utils パッケージがインストールされている。

8.6.1. multiuser オプションを使用した共有のマウント

ユーザーが自身の認証情報を使用して共有にアクセスする場合は、パーミッションが制限されたアカウントを使用して、root ユーザーとして共有をマウントする必要があります。

手順

システムの起動時に、multiuser オプションを使用して自動的に共有をマウントするには、次の手順を実行します。

  1. /etc/fstab ファイルに共有のエントリーを作成します。以下に例を示します。

    //server_name/share_name  /mnt  cifs  multiuser,sec=ntlmssp,credentials=/root/smb.cred  0 0
  2. 共有をマウントします。

    # mount /mnt/

システムの起動時に共有を自動的にマウントしない場合は、-o multiuser,sec=security_typemount コマンドに渡して手動で共有をマウントします。SMB 共有の手動マウントの詳細は、「SMB 共有の手動マウント」を参照してください。

8.6.2. SMB 共有が multiuser オプションを使用してマウントされているかどうかの確認

共有が multiuser オプションを使用してマウントされているかどうかを確認するには、マウントオプションを表示します。

手順

# mount
...
//server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)

マウントオプションのリストに multiuser エントリーが表示されている場合は、機能が有効になっています。

8.6.3. ユーザーとして共有へのアクセス

SMB 共有が multiuser オプションを使用してマウントされている場合、ユーザーはサーバーの認証情報をカーネルのキーリングに提供できます。

# cifscreds add -u SMB_user_name server_name
Password: password

マウントされた SMB 共有を含むディレクトリーでユーザーが操作を実行すると、サーバーは、共有がマウントされたときに最初に使用されたものではなく、このユーザーのファイルシステムのパーミッションを適用します。

注記

複数のユーザーが、マウントされた共有で、自身の認証情報を使用して同時に操作を実行できます。

8.7. よく使用されるマウントオプション

SMB 共有をマウントすると、マウントオプションにより次のことが決まります。

  • サーバーとの接続がどのように確立されるか。たとえば、サーバーに接続するときに使用される SMB プロトコルバージョンはどれか。
  • 共有が、ローカルファイルシステムにどのようにマウントされるか。たとえば、複数のローカルユーザーが、サーバーのコンテンツにアクセスできるようにするために、システムがリモートファイルとディレクトリーのパーミッションを上書きする場合など。

/etc/fstab ファイルの 4 番目のフィールド、またはマウントコマンドの -o パラメーターで複数のオプションを設定するには、オプションをカンマで区切ります。たとえば、「multiuser オプションを使用した共有のマウント」を参照してください。

次のリストは、よく使用されるマウントオプションを示しています。

オプション説明

credentials=file_name

認証情報ファイルへのパスを設定します。「認証情報ファイルを使用した SMB 共有への認証」を参照してください。

dir_mode=mode

サーバーが CIFS UNIX 拡張機能をサポートしていない場合は、ディレクトリーモードを設定します。

file_mode=mode

サーバーが CIFS UNIX 拡張機能をサポートしていない場合は、ファイルモードを設定します。

password=password

SMB サーバーへの認証に使用されるパスワードを設定します。あるいは、credentials オプションを使用して認証情報ファイルを指定します。

seal

SMB 3.0 以降のプロトコルバージョンを使用した接続に対する暗号化サポートを有効にします。そのため、seal と、3.0 以降に設定された vers マウントオプションを一緒に使用します。例8.1「暗号化された SMB 3.0 接続を使用した共有のマウント」を参照してください。

sec=security_mode

ntlmsspi などのセキュリティーモードを設定して、NTLMv2 パスワードハッシュとパケット署名を有効にします。対応している値の一覧は、man ページの mount.cifs(8) にあるオプションの説明を参照してください。

サーバーが ntlmv2 セキュリティーモードに対応していない場合は、sec=ntlmssp (デフォルト) を使用します。

セキュリティー上の理由から、安全でない ntlm セキュリティーモードは使用しないでください。

username=user_name

SMB サーバーへの認証に使用されるユーザー名を設定します。あるいは、credentials オプションを使用して認証情報ファイルを指定します。

vers=SMB_protocol_version

サーバーとの通信に使用される SMB プロトコルバージョンを設定します。

完全なリストは、man ページの mount.cifs(8)OPTIONS セクションを参照してください。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。