Windowsには標準で「Client for NFS」という機能が備わっていますが、初期状態では無効化されています。また、単純に有効化してマウントするだけでは「読み込みはできるのにファイルの保存や上書きができない(アクセス拒否)」というトラブルが多発します。 [1, 2]
この記事では、仕様上の注意点、正しいインストール手順、そして実用レベルで必須となる「書き込み権限のレジストリ修正」まで、正確な手順をわかりやすく解説します。
⚠️ 前提条件:Windows Homeエディションでは使えません
Client for NFS機能は、Windows 10/11 Pro、Enterprise、およびWindows Serverでのみサポートされています。
※ Windows Homeエディションには機能自体が搭載されていないため、Home環境の場合はLinux側にSMB(Samba)を導入することを検討してください。
※ また、Windows標準のNFSクライアントは、現状NFSv2およびNFSv3のみの対応(NFSv4のACLなどには非対応)となります。 [1, 2, 3]
※ Windows Homeエディションには機能自体が搭載されていないため、Home環境の場合はLinux側にSMB(Samba)を導入することを検討してください。
※ また、Windows標準のNFSクライアントは、現状NFSv2およびNFSv3のみの対応(NFSv4のACLなどには非対応)となります。 [1, 2, 3]
🛠️ ステップ1:NFSクライアント機能の有効化
OSのエディションに合わせて、以下の手順で機能をインストールします。
Windows 10 / 11 Pro の場合
- キーボードの
Win + Rを押し、optionalfeaturesと入力して「OK」をクリックします(「Windowsの機能の有効化または無効化」が直接開きます)。 - リストから「NFS 用サービス」を探して展開します。
- 「NFS クライアント」にチェックを入れます。
- 「OK」をクリックし、機能が適用されたら念のためPCを再起動します。 [1, 2]
Windows Server の場合
- 「サーバーマネージャー」を開き、右上メニューの「管理」から「役割と機能の追加」をクリックします。
- 「機能」の選択画面まで進めます。
- 「NFS クライアント」にチェックを入れ、インストールを完了させます。 [1]
🔑 重要:書き込み権限(UID/GID)のトラブル対策(事前設定)
実は、ここが最も重要です。
WindowsのNFSクライアントは、デフォルトで非常に大きな値(
WindowsのNFSクライアントは、デフォルトで非常に大きな値(
65534など)の匿名UID/GIDを使ってサーバーにアクセスします。このため、Linuxサーバー側で適切なパーミッション(書き込み権限)が一致せず、マウントは成功してもファイルの保存や上書き時に「アクセス拒否」エラーになります。 [1, 2, 3]サーバー側が「誰でも書き込み許可(
all_squash かつ anonuid=0 など)」にしている、あるいは一般的に広く使われている「root(UID=0, GID=0)」としてWindowsクライアントを認識させるには、マウントする前にWindows側で以下のレジストリ調整が必要です。 [1, 2]レジストリの設定手順
Win + Rキーを押し、regeditと入力して「レジストリエディター」を起動します。- 次のキーへ移動します:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default - 右側の何もないところで右クリックし、[新規] > [DWORD (32ビット) 値] を選択します。
- 名前を「
AnonymousUid」とし、値を「0」(10進数)のままにします。 - 同様にもう一つ [DWORD (32ビット) 値] を作成し、名前を「
AnonymousGid」、値を「0」にします。 - 設定を反映させるため、コマンドプロンプト(管理者)で以下のコマンドを実行してNFSサービスを再起動(またはPCを再起動)します。
cmd
nfsadmin client stop nfsadmin client startコードは注意してご使用ください。
🔗 ステップ2:正確なコマンドでのマウント(接続)
Windowsの
mount コマンドで最も間違いやすいのが、サーバーパスの区切り文字です。Linuxのようにスラッシュ(/)を使うとエラーになるケースがあります。Windows標準のNFSクライアントでは、UNCパス(バックスラッシュ \)形式、または「サーバーIP:/共有名」の形式を使用します。 [1]管理者権限でコマンドプロンプト、またはPowerShellを開き、以下のいずれかの形式で実行します。
推奨コマンド形式(UNC形式)
cmd
mount -o fileaccess=777 \\【サーバーのIP】\【共有ディレクトリ名】 【割り当てたいドライブ文字】:
コードは注意してご使用ください。
💡 具体的な入力例:
サーバーのIPアドレスが
サーバーのIPアドレスが
192.168.1.50、Linux側の共有ディレクトリが mnt/nas、空いている Z ドライブに割り当てたい場合:cmd
mount -o fileaccess=777 \\192.168.1.50\mnt\nas Z:
コードは注意してご使用ください。
※
-o fileaccess=777 オプションを付与することで、Windows側でのローカルファイル権限の競合を防ぎ、スムーズな読み書きが可能になります。 [1]標準的なLinux互換形式(これでも動作します)
cmd
mount 192.168.1.50:/mnt/nas Z:
コードは注意してご使用ください。
コマンド実行後、「Z: は現在 ____ に正常に接続されています」と表示されれば成功です。エクスプローラーの「PC」を開くと、ネットワークドライブとして
Z: ドライブが出現します。 [1]❌ 切断(アンマウント)の方法
NFS接続を解除したい場合は、コマンドプロンプトで以下のコマンドを入力します。
cmd
umount Z:
コードは注意してご使用ください。
※
Z: の部分は、ご自身が割り当てたドライブ文字に置き換えてください。 [1]💡 トラブルシューティング:繋がらない場合のチェックリスト
万が一エラーが出る場合は、以下の3点を確認してください。
- ネットワーク(ファイアウォール)
NFS通信では一般的に TCP/UDPのポート番号「2049」 が使用されます。Windows Defender ファイアウォールや、ルーター・サーバー側でこのポートが遮断されていないか確認してください。 [1] - サーバー側のエクスポート設定(
/etc/exports)
Linuxサーバー側の設定ファイルで、WindowsクライアントのIPアドレスに対して適切なアクセス権限(rw、sync、no_root_squashまたはall_squash)が許可されているか見直します。 - レジストリの再確認
前述したAnonymousUid/AnonymousGidの綴りが間違っていないか(大文字小文字の区別など)、設定後にサービスやPCの再起動が行われているかを再度確認してください。 [1, 2]
📝 まとめ
本記事で解説したレジストリ調整と、正しいパス形式のコマンドさえ押さえておけば、トラブルなく快適にLinux系ストレージとのファイル共有環境を構築できます。ぜひお試しください! [1]
