Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.2. SMB 共有のマウント

Red Hat Enterprise Linux では、カーネルの cifs.ko ファイルシステムモジュールが SMB プロトコルに対応します。ただし、SMB 共有をマウントして操作するには、cifs-utils もインストールする必要があります。
# yum install cifs-utils
cifs-utils パッケージには、以下を行うユーティリティーがあります。
  • SMB 共有と CIFS 共有をマウントする
  • カーネルのキーリングで、NT Lan Manager (NTLM) の認証情報を管理する
  • SMB 共有および CIFS 共有のセキュリティー記述子で、アクセス制御リスト (ACL) を設定して、表示する

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

cifs.ko カーネルモジュールは、以下の SMB プロトコルバージョンをサポートします。
  • SMB 1
  • SMB 2.0
  • SMB 2.1
  • SMB 3.0
注記
プロトコルのバージョンによっては、一部の SMB 機能しか実装されていません。

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

Samba は、SMB プロトコルの CAP_UNIX 機能ビットを使用して UNIX 拡張機能を提供します。これらの拡張機能は、cifs.ko カーネルモジュールでも対応しています。ただし、Samba とカーネルモジュールはいずれも、SMB 1 プロトコルでのみ UNIX 拡張機能に対応します。
UNIX 拡張機能を使用するには、以下の手順を実行します。
  1. /etc/samba/smb.conf ファイルの [global] セクションの server min protocol オプションを NT1 に設定します。これは Samba サーバーのデフォルトです。
  2. mount コマンドに -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 拡張機能が有効になっています。

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

SMB 共有を手動でマウントするには、mount ユーティリティーに -t cifs パラメーターを指定します。
# mount -t cifs -o username=user_name //server_name/share_name /mnt/
Password for user_name@//server_name/share_name:  ********
-o options パラメーターでは、ファイル共有のマウントに使用されるオプションを指定できます。詳細は、man ページの mount.cifs(8)「よく使用されるマウントオプション」 セクションおよび 『OPTIONS』 セクションを参照してください。

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

暗号化された SMB 3.0 接続を介して DOMAIN \管理者 ユーザーとして \\サーバー\サンプル \ 共有をマウントするには、次のコマンド 実行します。
# mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server/example /mnt/
Password for user_name@//server_name/share_name:  ********

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

システムの起動時に 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/

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

特定の状況では、管理者はユーザー名とパスワードを入力せずに共有をマウントします。これを実装するには、認証情報ファイルを作成します。以下に例を示します。

手順9.1 認証情報ファイルの作成

  1. ~/smb.cred などのファイルを作成し、そのファイルのユーザー名、パスワード、およびドメイン名を指定します。
    username=user_name
    password=password
    domain=domain_name
  2. 所有者だけがファイルにアクセスできるようにパーミッションを設定します。
    # chown user_name ~/smb.cred
    # chmod 600 ~/smb.cred
これで、credentials=file_name マウントオプションを mount ユーティリティーに渡すか、/etc/fstab ファイルでこれを使用して、ユーザー名とパスワードの入力を求められることなく共有をマウントできるようになりました。

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

共有をマウントするために指定した認証情報により、デフォルトでマウントポイントのアクセス権が決まります。たとえば、共有をマウントするときに DOMAIN\example ユーザーを使用すると、どのローカルユーザーが操作を実行するかに関係なく、共有に対するすべての操作がこのユーザーとして実行されます。
ただし特定の状況では、システムの起動時に管理者が自動的に共有をマウントしたい場合でも、ユーザーは自分の認証情報を使用して共有のコンテンツに対して操作を実行する必要があります。このとき、multiuser マウントオプションを使用すると、このシナリオを設定できます。
重要
multiuser を使用するには、sec=security_type マウントオプションを、認証情報ファイルの krb5 オプションや ntlmssp オプションなど、非対話式の方法で認証情報の提供に対応するセキュリティータイプに追加で設定する必要があります。「ユーザーとして共有へのアクセス」 を参照してください。
root ユーザーは、multiuser オプションと、共有のコンテンツへの最小限のアクセス権を持つアカウントを使用して共有をマウントします。通常のユーザーは、cifscreds ユーティリティーを使用して、現在のセッションのカーネルキーリングにユーザー名とパスワードを指定できます。マウントされた共有のコンテンツにユーザーがアクセスすると、カーネルは、共有のマウントに最初に使用されたものではなく、カーネルキーリングからの認証情報を使用します。

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

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

手順9.2 multiuser オプションを使用した /etc/fstab ファイルエントリーの作成

  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_type を mount コマンドに渡して手動で マウント します。SMB 共有の手動マウントの詳細は、「SMB 共有の手動マウント」 を参照してください。

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

multiuser オプションを使用して共有がマウントされているかどうかを確認するには、次のコマンドを実行します。
# mount
...
//server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)

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

SMB 共有が multiuser オプションを使用してマウントされている場合、ユーザーはサーバーの認証情報をカーネルのキーリングに提供できます。
# cifscreds add -u SMB_user_name server_name
Password: ********
これで、ユーザーがマウントされた SMB 共有を含むディレクトリーで操作を実行すると、サーバーは、共有がマウントされたときに最初に使用されたものではなく、このユーザーのファイルシステムのパーミッションを適用します。
注記
複数のユーザーが、マウントされた共有で、自身の認証情報を使用して同時に操作を実行できます。

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

SMB 共有をマウントすると、マウントオプションにより次のことが決まります。
  • サーバーとの接続がどのように確立されるか。たとえば、サーバーに接続するときに使用される SMB プロトコルバージョンはどれか。
  • 共有が、ローカルファイルシステムにどのようにマウントされるか。たとえば、複数のローカルユーザーが、サーバーのコンテンツにアクセスできるようにするために、システムがリモートファイルとディレクトリーのパーミッションを上書きする場合など。
/etc/fstab ファイルの 4 番目のフィールド、または mount コマンドの -o パラメーターで複数のオプションを設定するには、コンマで区切ります。たとえば、手順9.2「multiuser オプションを使用した /etc/fstab ファイルエントリーの作成」 を参照してください。
以下のリストは、頻繁に使用されるマウントオプションの概要を示しています。

表9.1 よく使用されるマウントオプション

オプション 説明
credentials=file_name 認証情報ファイルへのパスを設定します。「認証情報ファイルを使用した SMB 共有への認証」 を参照してください。
dir_mode=mode サーバーが CIFS UNIX 拡張機能をサポートしていない場合は、ディレクトリーモードを設定します。
file_mode=mode サーバーが CIFS UNIX 拡張機能をサポートしていない場合は、ファイルモードを設定します。
password=password SMB サーバーへの認証に使用されるパスワードを設定します。あるいは、credentials オプションを使用して認証情報ファイルを指定します。
seal SMB 3.0 以降のプロトコルバージョンを使用した接続に対する暗号化サポートを有効にします。したがって、seal3.0 以降に設定した vers マウントオプションと一緒に使用します。例9.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』 セクションを参照してください。