【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順

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 サーバーが公開している共有フォルダを Linux サーバーが mount.cifs コマンドでマウントする構成になります。

Windowsサーバーの共有フォルダをLinuxサーバーがmount.cifsコマンドでマウントする構成図

 

 

【Windows側】共有フォルダの作成と権限の設定

 

最初に以下のように該当のアカウント(test001)でログインし、共有フォルダ用のフォルダを作成します。

【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順

 

以下のように共有フォルダを作成し、アクセス権限を設定します。

【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順

 

 

【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
samba-common-4.7.1-9.el7_5.noarch
samba-common-libs-4.7.1-9.el7_5.x86_64
samba-client-libs-4.7.1-9.el7_5.x86_64
samba-winbind-modules-4.7.1-9.el7_5.x86_64
samba-client-4.7.1-9.el7_5.x86_64 ← Sambaプロトコルにアクセスします。
samba-winbind-4.7.1-9.el7_5.x86_64 ← Windowsドメインを名前解決します。
samba-libs-4.7.1-9.el7_5.x86_64
samba-common-tools-4.7.1-9.el7_5.x86_64
[root@ip-172-31-47-210 ~]#

 

cifs のパッケージがインストールされていることを確認します。

[root@ip-172-31-47-210 ~]# rpm -qa | grep cifs
cifs-utils-6.2-10.el7.x86_64 ← Sambaをマウントします。
[root@ip-172-31-47-210 ~]#

 

 

 

パスワードファイルの作成

次にパスワードファイルを生成します。

これは共有フォルダを提供する Windows サーバー

[root@ip-172-31-47-210 ~]# vi /etc/.smbpassword
username=test001
password=PassWorD_0001
[root@ip-172-31-47-210 ~]#

 

 

 

 

mount.cifs コマンドでマウントする

設定が完了したら以下の「mount.cifs」コマンドで Windows の共有フォルダをマウントします。

 

[root@ip-172-31-47-210 mnt]# mount.cifs //172.31.42.120/test /mnt/test -o uid=root,gid=root,credentials=/ 
etc/.smbpassword,sec=ntlm,dir_mode=0755,file_mode=0755 
[root@ip-172-31-47-210 mnt]# df -h ← df コマンドでマウントされていることを確認します。
Filesystem            Size  Used Avail Use% Mounted on 
/dev/xvda2             10G  1.4G  8.7G  14% / 
devtmpfs              474M     0  474M   0% /dev 
tmpfs                 496M     0  496M   0% /dev/shm 
tmpfs                 496M   13M  483M   3% /run 
tmpfs                 496M     0  496M   0% /sys/fs/cgroup 
tmpfs                 100M     0  100M   0% /run/user/1000 
//172.31.42.120/test   30G   17G   14G  55% /mnt/test ← マウントされています。 
[root@ip-172-31-47-210 mnt]#

 

 

動作確認(所有者と権限の確認)

次にマウントした共有フォルダ上でファイルを作成して「所有者」「権限」の確認をします。

 

共有フォルダ上で、Windows アカウント(test001)で新規ファイルを作成します。

 

 

Windows 上で作成したファイルが Linux 側から見ると「root」アカウントになっていることがわかります。

[root@ip-172-31-47-210 mnt]# cd /mnt/test/ 
[root@ip-172-31-47-210 test]# ls -lh 
total 0 
-rwxr-xr-x 1 root root 0 Sep 12 14:37 test.txt ← test001で作成したファイルも Linux から見ると root アカウントになっていることがわかります。 
[root@ip-172-31-47-210 test]#

 

認証について

credentials オプションを付けることで Windows 側の認証用の「アカウント」「パスワード」を設定することができます。

mount.cifs コマンドに直接記述することもできますが、history コマンドで過去の履歴からパスワードが漏れる可能性があるので、通常はファイルに記述して「credentials」オプションで認証情報を渡します。

 

■credentialsの設定方法

以下のように任意のディレクトリとファイル名で設定できます。

【例】

認証情報を記載したファイルを「/etc/.smbpassword」に設定する場合

※このファイルはファイル名や保存先ディレクトリは自由に設定できますが、セキュリティや運用管理を考慮し、通常は /etc ディレクトリもしくは一般ユーザーがアクセスできない場所に保存します。

いずれにせよ、このファイルは適切に保護する必要があります。

 

このファイルをハッシュ化や暗号化できたらもっとセキュリティが向上すると思ったのですが、いろいろ調査したところ、このファイルはハッシュ化や暗号化ができませんでした。

 

以下のようにユーザー名やパスワードやドメインが記載されているファイルを credentials オプションで指定します。

credentials=/etc/.smbpassword

 

ファイルは以下のように記述します。

【例】

 

username=test001
password=PassWorD_0001

domain=WORKGROUP

 

OS 起動時に自動的にマウントさせるための設定

OS 起動時に自動的にマウントさせるためには「/etc/fstab」に記述する必要があります。

しかしアカウントとパスワードを直接「/etc/fstab」に平文で記述するよりは、オプション credentials を利用してファイルを指定する方がセキュリティがより向上します。

 

■noauto オプション

noauto オプションを使用すると、

OS 起動時にマウントしない

-a オプションで mount コマンドを実行した時にマウントしない

明示的に mount コマンドでマウントしない限りマウントしない

 

 

マウント時のアクセス権限や所有者の設定

マウント時のオプションを付けることにより「アクセス権限」「所有者」を指定することができます。

dir_mode=0755  ← フォルダアクセス権(Windows 共有では、デフォルトではフルアクセス権 (777) で Linux にマウントされます)
file_mode=0775 ← ファイルアクセス権(Windows 共有では、デフォルトではフルアクセス権 (777) で Linux にマウントされます)
uid=test001 ← マウント時に所有者を変更することができます

gid=test-group ← マウント時に所有者を変更することができます。
sec=ntlm ← セキュリティモードを設定できます。デフォルトでは ntlm は NTLM パスワードハッシュを用います。

 

 

■OS 起動時でも再起動時でも自動マウントされるようにする /etc/fstab の例

 

[root@test etc]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Oct 17 14:25:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/swap/swapfile3 swap swap defaults 0 0
\\172.31.xxx.xxx/TEST /mnt/test cifs rw,_netdev,credentials=/etc/.smbpassword,gid=502,uid=502,dir_mode=0755,file_mode=0775 0 0

 

[root@test etc]#

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人