#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);