WindowsとLinuxが混在する環境で、ファイルサーバーを1つにまとめたいときに便利なのが、Windows Serverを「NFSサーバー」として構築する方法です。
一般的にWindowsのファイル共有といえば「SMB(Samba)」ですが、Linuxクライアントから超高速かつ確実にマウントさせたい場合、Windows Serverの標準機能である「Server for NFS」が役立ちます。
ただし、Windows 10やWindows 11 ProなどのデスクトップOSでは「クライアント機能」しか使えず、サーバー機能は搭載されていません。この記事では、Windows Serverを使った正しいNFSサーバーの構築手順と、Linuxから接続した際に多発する「アクセス拒否(パーミッションエラー)」の解決策を、技術的な正確性を重視して解説します。
🛠️ ステップ1:「Server for NFS」のインストール
Windows Serverの初期状態ではNFSサーバー機能は無効化されています。まずはサーバーマネージャーから機能を有効化します。
-
- 「サーバーマネージャー」を起動します。
- 右上の「管理」メニューから「役割と機能の追加」をクリックします。
- ウィザードを進め、「サーバーの役割」画面を表示します。
- [ファイルサービスおよび記憶域サービス] > [ファイルサービスおよびiSCSIサービス] の順にツリーを展開します。
- 「NFS サーバー」(Server for NFS)にチェックを入れます。
※管理ツールなども一緒にインストールするか聞かれた場合は、そのまま追加を許可してください。 - ウィザードを進めてインストールを実行し、完了させます。
📂 ステップ2:NFS共有フォルダーの作成とエクスポート
機能が追加されたら、Linuxクライアントに向けてフォルダーを公開(エクスポート)します。
-
- サーバーマネージャーの左メニューから「ファイルサービスと記憶域サービス」をクリックし、「共有」を選択します。
- 「タスク」ドロップダウン(または右クリック)から「新しい共有」をクリックします。
- プロファイルの選択画面で「NFS 共有 – 簡易」を選択して「次へ」進みます。
- 共有したいフォルダーのパス(カスタムパスなど)を指定します。
- 共有名(Linux側から見える名前)を入力して進みます。
- 「認証」画面(ここが重要!):
-
- Active Directory等でユーザー統合していないLinuxクライアントから接続する場合、「サーバーの認証なし (AUTH_SYS)」にチェックを入れます。
- 下部にある「マップされていないユーザーのアクセスを許可する」にチェックを入れ、「ユーザーのUID/GIDによるアクセスを許可する」を選択します。
-
🔒 ステップ3:アクセス許可(パーミッション)の厳密な設定
ここを適当に設定すると、Linux側からマウントした瞬間に「Permission denied(アクセス拒否)」になります。
-
- ウィザードの「共有のアクセス許可」画面で「追加」をクリックします。
- 特定のLinuxクライアントのみに絞る場合:
「ホスト」を選択し、接続を許可するLinuxのIPアドレス(例:192.168.1.100)を入力します。
※テスト環境など全員に開く場合は「すべてのマシン」を選択します。 - アクセス許可の変更:
デフォルトでは「読み取り専用」になっているため、必ず「読み取り/書き込み」に変更します。また、Linuxのrootユーザーに最高権限を与えたい場合は、「root アクセスを許可する」にチェックを入れます(安全性を重視する場合はチェックを外し、一般ユーザーとして扱わせます)。 - ウィザードを最後まで進めて「作成」をクリックします。
⚠️ 見落としがちな罠:NTFSアクセス権の修正
NFSとしての共有権限を「読み取り/書き込み」にしても、Windowsの土台であるNTFSアクセス権(セキュリティタブの設定)がLinuxからのアクセスを拒否してしまうことがあります。
作成したWindows上のフォルダーを右クリック >「プロパティ」>「セキュリティ」タブを開き、NFS経由の匿名アクセス(Everyoneなど)に対して適切な書き込み権限が付与されているか確認してください。
作成したWindows上のフォルダーを右クリック >「プロパティ」>「セキュリティ」タブを開き、NFS経由の匿名アクセス(Everyoneなど)に対して適切な書き込み権限が付与されているか確認してください。
🔗 Linuxクライアント側からのマウント手順
設定が完了したら、Linux(Ubuntu / RHELなど)からマウントできるかテストします。
-
- Linux側にNFSクライアントパッケージが入っていない場合はインストールします。
-
- Ubuntu / Debian系:
sudo apt update && sudo apt install nfs-common - RHEL / CentOS / AlmaLinux系:
sudo dnf install nfs-utils
- Ubuntu / Debian系:
-
- マウントポイント(空のディレクトリ)を作成します。
bash
sudo mkdir -p /mnt/win_nfsコードは注意してご使用ください。 - マウントコマンドを実行します。
bash
sudo mount -t nfs [WindowsServerのIP]:/[設定した共有名] /mnt/win_nfsコードは注意してご使用ください。💡 具体的な入力例
Windows ServerのIPが192.168.1.50、共有名が/nfs_shareの場合:bashsudo mount -t nfs 192.168.1.50:/nfs_share /mnt/win_nfsコードは注意してご使用ください。
- Linux側にNFSクライアントパッケージが入っていない場合はインストールします。
マウント後、
df -h コマンドで正常にWindows Serverの容量が見えていれば成功です!/mnt/win_nfs の中に touch test.txt などでファイルが書き込めるかテストしてください。❌ トラブルシューティング:繋がらないときは?
-
- 原因1:ファイアウォールによる遮断
Windows Server側の「セキュリティが強化されたWindows Defenderファイアウォール」で、「NFS用サービス」関連の受信ルールが許可されているか確認してください。主にTCP/UDPのポート「2049」やRPCのポートが使用されます。 - 原因2:UID/GIDの不一致
Linux側のユーザーID(UID)やグループID(GID)がWindows側でうまく解釈されない場合、書き込み権限エラーになります。必要に応じて、Windows側でActive DirectoryのUNIX属性を使用するか、簡易的に誰でも書き込みできるNTFS権限に緩める必要があります。
- 原因1:ファイアウォールによる遮断
📝 まとめ
Windows Serverは、数クリックの機能追加だけで信頼性の高いNFSサーバーへと変身します。
Linuxから接続する際は、「AUTH_SYS(認証なし)の許可」、「共有権限の読み書き許可」、そして「NTFSセキュリティ権限」の3つのセキュリティ層すべてで許可が通っているかどうかが成功の鍵です。ぜひ mixed環境(複数OS混在環境)のファイルサーバー構築に役立ててください!
Linuxから接続する際は、「AUTH_SYS(認証なし)の許可」、「共有権限の読み書き許可」、そして「NTFSセキュリティ権限」の3つのセキュリティ層すべてで許可が通っているかどうかが成功の鍵です。ぜひ mixed環境(複数OS混在環境)のファイルサーバー構築に役立ててください!
