第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
警告SMB1 プロトコルは既知のセキュリティー問題により非推奨となり、プライベートネットワークでのみ安全に使用する ことができます。SMB1 がサポートされているオプションとして推奨される主な理由は、現在 UNIX 拡張機能をサポートする唯一の SMB プロトコルバージョンであるためです。SMB で UNIX 拡張を使用する必要がない場合は、Red Hat は、SMB2 以降を使用することを強く推奨します。
- 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 拡張機能を使用するには、以下の手順を実行します。
-
/etc/samba/smb.conf
ファイルの[global]
セクションにあるserver min protocol
パラメーターをNT1
に設定します。 マウントコマンドに
-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
パッケージがインストールされている。
手順
/root/smb.cred
などのファイルを作成し、そのファイルのユーザー名、パスワード、およびドメイン名を指定します。username=user_name password=password domain=domain_name
所有者だけがファイルにアクセスできるようにパーミッションを設定します。
# 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
オプションを使用して自動的に共有をマウントするには、次の手順を実行します。
/etc/fstab
ファイルに共有のエントリーを作成します。以下に例を示します。//server_name/share_name /mnt cifs
multiuser,sec=ntlmssp
,credentials=/root/smb.cred 0 0共有をマウントします。
# mount /mnt/
システムの起動時に共有を自動的にマウントしない場合は、-o multiuser,sec=security_type
を mount
コマンドに渡して手動で共有をマウントします。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 サーバーへの認証に使用されるパスワードを設定します。あるいは、 |
seal |
SMB 3.0 以降のプロトコルバージョンを使用した接続に対する暗号化サポートを有効にします。そのため、 |
sec=security_mode |
サーバーが
セキュリティー上の理由から、安全でない |
username=user_name |
SMB サーバーへの認証に使用されるユーザー名を設定します。あるいは、 |
vers=SMB_protocol_version | サーバーとの通信に使用される SMB プロトコルバージョンを設定します。 |
完全なリストは、man ページの mount.cifs(8)
の OPTIONS
セクションを参照してください。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。