CIFS(Common Internet File System)とは「ファイル共有プロトコル」です。
一般的には「CIFS」よりも「SMB(Server Message Block)」の方が有名かもしれません。
「SMB」と「CIFS」の違いは簡単には説明できませんが、ある時は「SMB」と「CIFS」は同じプロトコルであり、ある時は「SMB」と「CIFS」は異なるプロトコルとして紹介されています。
このファイル共有プロトコルを利用すると Linux サーバから Windows の共有フォルダをマウントして利用することができます。
今回は、Windows の共有フォルダを Linux からマウント(mount)して利用する方法について解説します。
Linux からも Windows の共有フォルダをマウントして利用することが可能
Linux と Windows のファイル共有の仕組みとして一番有名なのが「Samba(サンバ)」だと思います。
Linux に「Samba」をインストールすると、Linux サーバーを Windows からもアクセスできるファイルサーバーにすることができます。
今回の場合は逆で、Linux から Windows の共有フォルダをマウント(mount)して利用出来るようにする設定です。
Linux から Windows の共有フォルダをマウントする環境構築手順
最初に以下の環境で構築しました。
■環境
- ファイルサーバー(共有フォルダを提供する側): Windows 2008 Server
- クライアント(マウントして共有フォルダを利用する側): RedHat 7.5
構成図
構成図は以下のようになります。
Windows サーバーが公開している共有フォルダを Linux サーバーが mount.cifs コマンドでマウントする構成になります。
【Windows側】共有フォルダの作成と権限の設定
- 共有フォルダ名:test
- 共有フォルダの所有者:test001(Windows OS アカウント)
- test001のパスワード:PassWorD_0001
最初に以下のように該当のアカウント(test001)でログインし、共有フォルダ用のフォルダを作成します。
以下のように共有フォルダを作成し、アクセス権限を設定します。
【Linux側】インストール手順
最初に「samba-client」をインストールします。
特にレポジトリの追加なくデフォルトで samba-client をインストールすることができます。
[root@ip-172-31-47-210 ~]# yum install samba-client samba-winbind cifs-utils |
以下の各パッケージがインストールされています。
[root@ip-172-31-47-210 ~]# rpm -qa | grep samba |
cifs のパッケージがインストールされていることを確認します。
[root@ip-172-31-47-210 ~]# rpm -qa | grep cifs |
パスワードファイルの作成
次にパスワードファイルを生成します。
これは共有フォルダを提供する Windows サーバー
[root@ip-172-31-47-210 ~]# vi /etc/.smbpassword |
mount.cifs コマンドでマウントする
設定が完了したら以下の「mount.cifs」コマンドで Windows の共有フォルダをマウントします。
- マウントポイント ← /mnt/test
[root@ip-172-31-47-210 mnt]# mount.cifs //172.31.42.120/test /mnt/test -o uid=root,gid=root,credentials=/ |
動作確認(所有者と権限の確認)
次にマウントした共有フォルダ上でファイルを作成して「所有者」と「権限」の確認をします。
共有フォルダ上で、Windows アカウント(test001)で新規ファイルを作成します。
Windows 上で作成したファイルが Linux 側から見ると「root」アカウントになっていることがわかります。
[root@ip-172-31-47-210 mnt]# cd /mnt/test/ |
認証について
credentials オプションを付けることで Windows 側の認証用の「アカウント」と「パスワード」を設定することができます。
mount.cifs コマンドに直接記述することもできますが、history コマンドで過去の履歴からパスワードが漏れる可能性があるので、通常はファイルに記述して「credentials」オプションで認証情報を渡します。
■credentialsの設定方法
以下のように任意のディレクトリとファイル名で設定できます。
【例】
認証情報を記載したファイルを「/etc/.smbpassword」に設定する場合
※このファイルはファイル名や保存先ディレクトリは自由に設定できますが、セキュリティや運用管理を考慮し、通常は /etc ディレクトリもしくは一般ユーザーがアクセスできない場所に保存します。
いずれにせよ、このファイルは適切に保護する必要があります。
このファイルをハッシュ化や暗号化できたらもっとセキュリティが向上すると思ったのですが、いろいろ調査したところ、このファイルはハッシュ化や暗号化ができませんでした。
以下のようにユーザー名やパスワードやドメインが記載されているファイルを credentials オプションで指定します。
credentials=/etc/.smbpassword
ファイルは以下のように記述します。
【例】
- Windows アカウント ← test001
- test001 のパスワード ← PassWorD_0001
- ドメイン ← WORKGROUP
username=test001 domain=WORKGROUP |
OS 起動時に自動的にマウントさせるための設定
OS 起動時に自動的にマウントさせるためには「/etc/fstab」に記述する必要があります。
しかしアカウントとパスワードを直接「/etc/fstab」に平文で記述するよりは、オプション credentials を利用してファイルを指定する方がセキュリティがより向上します。
■noauto オプション
noauto オプションを使用すると、
OS 起動時にマウントしない
-a オプションで mount コマンドを実行した時にマウントしない
明示的に mount コマンドでマウントしない限りマウントしない
マウント時のアクセス権限や所有者の設定
マウント時のオプションを付けることにより「アクセス権限」や「所有者」を指定することができます。
dir_mode=0755 ← フォルダアクセス権(Windows 共有では、デフォルトではフルアクセス権 (777) で Linux にマウントされます) gid=test-group ← マウント時に所有者を変更することができます。 |
■OS 起動時でも再起動時でも自動マウントされるようにする /etc/fstab の例
[root@test etc]# cat /etc/fstab #
[root@test etc]# |
コメント