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 拡張機能を使用するには、以下の手順を実行します。
/etc/samba/smb.conf
ファイルの[global]
セクションのserver min protocol
オプションをNT1
に設定します。これは Samba サーバーのデフォルトです。- 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 認証情報ファイルの作成
~/smb.cred
などのファイルを作成し、そのファイルのユーザー名、パスワード、およびドメイン名を指定します。username=user_name password=password domain=domain_name
- 所有者だけがファイルにアクセスできるようにパーミッションを設定します。
#
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
ファイルエントリーの作成
/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 共有の手動マウント」 を参照してください。
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
ファイルエントリーの作成」 を参照してください。
以下のリストは、頻繁に使用されるマウントオプションの概要を示しています。
オプション | 説明 |
---|---|
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 マウントオプションと一緒に使用します。例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』 セクションを参照してください。