#author("2019-03-23T09:19:37+00:00","default:sysosa","sysosa")
#author("2019-03-23T16:24:08+00:00","default:sysosa","sysosa")
windowsServer2012R2でnfsサーバを作ってみた

&color(white,blue){留意};
windowsServerで作ったNFSをLinuxでマウントして、Linuxから[[inotify-tools]]で監視しても動きは取得できないみたい...

***機能の追加 [#ib3f5e9f]
サーバーマネージャを立ち上げて、メニューの「管理」から「役割と機能の追加」を選択する
&ref(2019y03m16d_122851759.png,nolink);
「役割と機能の追加ウィザード」が立ち上がる。「次へ」ボタンを押下し続け、「サーバーの役割」項目にて
役割として「NFSサーバー」を選択します。
&ref(2019y03m16d_123236733.png,nolink);
チェックボックスを有効にすると、下記画面が表示されます。「機能の追加」ボタンを押下します。
&ref(2019y03m16d_123430943.png,nolink);
元の「役割と機能の追加ウィザード」画面に戻り、再度「次へ」ボタンを押下し続けます。
「確認」項目で、「インストール」ボタンを押下して完了させます。


***NFS共有フォルダを作成 [#sd03d0b4]
サーバーマネージャから設定する方法が正統みたい。
サーバーマネージャを立ち上げて、左側のツリーから「ファイル サービスと記憶域」を選択します。
&ref(2019y03m22d_235856139.png,nolink);
次に、「共有」を選択します
&ref(2019y03m23d_000012935.png,nolink);
すると、共有フォルダの一覧が表示されますが、初回なので「共有がありません」となっている。
ここで「ファイル共有を作成するには、新しい共有ウィザードを実行してください。」リンクを押下します。
&ref(2019y03m23d_000249517.png,nolink);
すると、「新しい共有ウィザード」画面が表示されます。ここでは作成する共有フォルダのプロファイル、場所、その名称らを定義します。
まずは、ファイル共有プロファイルとして、「NFS共有-簡易」を選び「次へ」ボタンを押下します。
&ref(2019y03m23d_000424430.png,nolink);
&color(red){*};「NFS共有-高度」を選択するには、先の「機能の追加」で「ファイルサーバーリソースマネージャ」が追加で必要です。
&ref(2019y03m23d_000722681.png,nolink);
「この共有のサーバーとパスの選択」画面になります。
&ref(2019y03m23d_001124892.png,nolink);
ここでは、「C:\data」を共有フォルダとして供出したいので、「カスタムパスを入れてください」にて「C:\data」と入力して、「次へ」ボタンを押下します。
&ref(2019y03m23d_001325280.png,nolink);
「共有名の指定」画面になりますが、そのままで宜しければ、「次へ」ボタンを押下します。
&ref(2019y03m23d_001526407.png,nolink);
指定したフォルダが存在しなければ、警告が表示されますが、「OK」ボタンを押下して、作成させます。
&ref(2019y03m23d_001718571.png,nolink);
次に、「認証方法の指定」画面が表示されます。
windowsのリソースの一部をNFSサーバとして提供しているので、アクセスできるのはwindowsのkerberos認証のお仲間に入っているマシンとなる。ここではsambaのActiveDirectoryを利用しているので、このwindowsServerがこのsambaADに参加していれば、他のAD参加のLinuxマシンであればアクセス可能である(後述する)。

っが、そうでない場合、認証なしでアクセス可能にさせる必要がある。それが「サーバー認証なし」となる。
その場合、別途windows側にpasswdとgroupファイルが必要であるのだが、それもない場合「マップされていないユーザーアクセスを有効にする」にチェックを入れる必要がある。

&ref(2019y03m23d_002823892.png,nolink);
ここでは、「UID/GIDによるマップされていないユーザーアクセスを許可する」と有効にしている。
この場合、windows側からは誰のファイルかは分かりませんが、NFS-Client側からは誰のファイルかは分かります。
「次へ」ボタンを押下します。
「共有のアクセス許可を指定」画面になります。
作ったNFS共有フォルダをどのマシンに提供するか、そしてread onlyか、書き込みも許可するかを定めます。
&ref(2019y03m23d_003419582.png,nolink);
画面下方の「追加..」ボタンを押下して、「アクセス許可の追加」画面を出します。そこで、「All Machines」を有効にして、言語のエンコードはそのままに、共有のアクセス許可を「読み取り/書き込み」として「追加」ボタンを押下します。
&color(red){*};&size(10){「ルートアクセスを許可する」はnfsで言うところのno_root_squashでしょうか};
&ref(2019y03m23d_003709451.png,nolink);
「共有のアクセス許可を指定」画面が更新されます。画面下部の「次へ」ボタンを押下します。
&ref(2019y03m23d_003900885.png,nolink);
「アクセスを制御するアクセス許可の指定」画面になります。
現在の所、rootでのmountはできますが、中を調整することは出来ません。そのため、「アクセス許可をカスタマイズする」ボタンを押下して、「追加」ボタンを押下します。
&ref(2019y03m23d_004621014.png,nolink);
表示された「dataのアクセス許可」画面にて「プリンシパルの選択」リンクを押下して、「everyone」を選びます。
そして種類は「許可」、適用先を「このフォルダのみ」、基本のアクセス許可に「変更」を有効にします。
&ref(2019y03m23d_004608076.png,nolink);
「OK」ボタンを押下後、「dataのアクセス許可」画面に戻り、そこで「OK」ボタンを押下します。
元の「アクセスを制御するアクセス許可の指定」画面に戻り、everyoneが追加されたことを確認して、「次へ」ボタンを押下します。

&ref(2019y03m23d_005304842.png,nolink);


「選択内容の確認」画面が表示されます。確認して、「作成」ボタンを押下します。
「結果の表示」画面になりますが、エラーがなければこれで完了で、「閉じる」ボタンを押下します。


***Linuxからアクセス [#bbd525fc]
作ったwindowsのNFSサーバは、サーバ名が win12r2 でexportなフォルダ名は data である。
なのでLinuxからは下記のようにしてmountできる。
#code(nonumber){{
[root@c ~]# mount win12r2:/data /mnt

[root@c ~]# mount |grep win12r2
win12r2:/data on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,
clientaddr=192.168.0.83,local_lock=none,addr=192.168.0.85)
[root@c ~]#

[root@c ~]# ls -ld /mnt/
drwxrwxrwx 2 nobody nobody 64  3月 23 00:17 /mnt/
[root@c ~]#
}}
everyoneを入れたので mountポイントは 777 になる。
ユーザsaberが/mntにフォルダを作ると
#code(nonumber){{
[saber@c ~]$ mkdir /mnt/Alter
[saber@c ~]$ ls -ld /mnt/Alter
drwxrwxr-x 2 saber saber 64 Mar 23 01:01 /mnt/Alter

[saber@c ~]$ cd /mnt/
[saber@c mnt]$ getfacl Alter/
# file: Alter/
# owner: saber
# group: saber
user::rwx
group::rwx
other::r-x

[saber@c mnt]$
}}
となる。
っが、windows側からは下記のように表示される。
&ref(2019y03m23d_010441480.png,nolink);


***統合認証まではしないが、簡単にwindowsのユーザとLinuxのユーザを結び付けさせたい。 [#jedb762e]
windowsマシンの「C:\Windows\System32\drivers\etc」にpasswdとgroupをいれればいいみたい。
windows側のアカウントとして
&ref(2019y03m23d_122047752.png,nolink);
またそのアカウントのグループも用意されてるとする。
&ref(2019y03m23d_122210691.png,nolink);

そしてLinux側にも同じユーザ、グループが存在しているのなら、
#code(nonumber){{
[illya@c ~]$ getent passwd |grep 1003
illya:x:1001:1003::/home/illya:/bin/bash
saber:x:1002:1003::/home/saber:/bin/bash

[illya@c ~]$ getent group|grep 1003
fgo:x:1003:

[illya@c ~]$
}}

下記のようにpasswdとgroupファイルを「C:\Windows\System32\drivers\etc」に用意すればいいみたい
#code(nonumber){{
(passwd)
Administrator:x:0:0:root:/root:/bin/bash
illya:x:1001:1003::/home/illya:/bin/bash
saber:x:1002:1003::/home/saber:/bin/bash

(group)
BUILTIN\Administrators:x:0:root
fgo:x:1003:illya,saber
}}
Linux側でフォルダを作ったり、ファイルを作るとwindows側には下記のように認識される
&ref(2019y03m23d_122915542.png,nolink);

***NFSサーバのwindowsもNFSクライアントのLinuxも共にActiveDirectoryに参加させている [#q06ac295]
ここでActiveDirectoryはsambaで作ったADです。
同じADの中に存在するNFSサーバ、クライアントなら前述のpasswd・groupファイルは必要とせずアカウントの一致が行える。

windowsマシン、Linuxマシン共にADに入れます。

その後、windowsマシンでNFSの場所として提供しているC:\dataを選択して、その右クリックから「プロパティ」を選択します。
&ref(2019y03m23d_173848594.png,nolink);
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS