AD LDS を用いて NFS サーバー用のユーザー マッピングを行う方法について

 

こんにちは。Windows プラットフォームサポートの進藤です。

今回は Windows Server 2008 や Windows Server 2008 R2 で AD LDS を用いて NFS サーバー用のユーザー マッピングを行う方法についてご案内します。

 

AD LDS を使って NFS 用のユーザーマッピングを行うことができます

NFS (Network File System) は UNIX や Linux 環境でファイル共有を行うための仕組みですが、Windows サーバーも NFS サーバーとして構築することが可能です。これにより UNIX や Linux の環境から Windows OS 上の共有フォルダーに NFS を利用してアクセスすることが可能になります。

Windows サーバーで NFS を利用する場合、Windows ユーザーと UNIX ユーザーをマッピングさせる方法として Active Directory を利用できますが、Active Directory を利用していない環境 (WORKGROUP 環境) でも、Active Directory ライトウェイト ディレクトリ サービス (AD LDS) を利用することができます。

AD LDS を使ったユーザー マッピングの手順は下記のサイトに記載していますが、AD LDS の役割のインストールから始め、インスタンスの作成やスキーマの拡張など、ユーザー マッピングを行うまでに様々な作業が必要になります。

AD LDS Identity Mapping for Services for NFS

https://technet.microsoft.com/en-us/library/dd764497(WS.10).aspx

実は、これらの作業を簡素化するためのスクリプトが下記のサイトに用意されており、今回はこのスクリプトを使った構築方法についてご紹介いたします。

Description of scripts to use to simplify user account mapping between a UNIX client and a Windows-based server

https://support.microsoft.com/kb/973840/en-us

[1] AD LDS と NFS のセットアップ

まず始めに、Active Directory ライトウェイト ディレクトリ サービス (AD LDS) と NFS の役割をインストールし、NFS 用のユーザー マッピングを行うためのインスタンスを構成します。

NFS サーバーとして利用するサーバーの OS が Windows Server 2008 SP2 もしくはWindows Server 2008 R2 RTM の場合は、下記のサイトから修正プログラムをダウンロードして事前にインストールしておきます。

File permissions are incorrectly set when you share a folder on a Windows Server 2008 R2, Windows Server 2008 or Windows Storage Server 2008-based NFS server

https://support.microsoft.com/kb/2222746/en-us

 

1. NFS サーバーとして利用するための Windows Server 2008 もしくは Windows Server 2008 R2 のサーバーに管理者権限を持つユーザーでログオンします。

2. IP アドレスを設定します。WORKGROUP 環境で構築します。

3. 下記のサイトからスクリプトの内容をコピーして、セットアップ用のスクリプト ファイルを用意します。

Description of scripts to use to simplify user account mapping between a UNIX client and a Windows-based server

https://support.microsoft.com/kb/973840/en-us

 

まずは、下記のスクリプトを用意します。

  factory-setup-adlds.cmd

  add-uidnumber-gidnumber.ldf

  add-users-container.ldf

  change-dsheuristics.ldf

   nfs-instance-answer.txt

4. コマンドプロンプトを起動して、factory-setup-adlds.cmd を実行します。factory-setup-adlds.cmd を実行すると、AD LDS に NFSInstance インスタンスが作成され、NFS サーバーが利用する UNIX や Linux のグループやユーザーを追加できるようになります。

factory-setup-adlds.cmd では次の処理が行われます。

1) AD LDS のインスタンスの既定の名前付けコンテキストを指定するための The set-defaultnamingcontext.ldf を生成します。

2) NFS と AD LDS の役割をインストールします。

3) 応答ファイル (nfs-instance-answer.txt) を使用して AD LDS インスタンスを作成します。

     応答ファイルには下記の内容が定義されています。

       - インスタンス名 : NFSInstance

       - アプリケーション パーティション : cn=nfs,dc=nfs

       - LDAP ポート : 389

       - 拡張されるスキーマ属性 : ms-inetorgperson.ldf、ms-user.ldf、MS-AdamSchemaW2K8.ldf

4) 1) で生成された defaultnamingcontext.ldf を使用して NFSInstance インスタンスの既定の名前付けコンテキストに “cn=nfs,dc=nfs” を設定します。

5) add-uidnumber-gidnumber.ldf は Active Directory スキーマを拡張します。これにより、グループとユーザーのクラスに uidNumber と gidNumber 属性が追加されます。

6) add-users-container.ldf はユーザー オブジェクトとグループ オブジェクトを登録するためのコンテナを追加するために用いられます。

7) NFSInstance インスタンスのセキュリティ設定として everyone グループに対して読み取りの権限が付与されます。

8) factory-setup-adlds.cmd コマンドを実行するときの引数に insecure を指定すると、NFSInstance インスタンスにローカル以外からアクセスできるようにセキュリティが緩められます。多くのシナリオでは insecure オプションを追加する必要はありません。

9) NFS マッピング参照先として NFSInstance インスタンスを使用するように設定します。

 

** 注意 **

factory-setup-adlds.cmd を実行したユーザーが NFSInstance インスタンスの管理者として自動的に設定されます。後述のユーザー マッピングの作業は、このインスタンスの管理者で実施する必要があります。そのため、factory-setup-adlds.cmd を実行したユーザーを忘れないように注意してください。

[2] ユーザー マッピング

続いて、Windows ユーザーと UNIX ユーザーをマッピングする設定を行います。

1. [1] でセットアップしたサーバーに、セットアップを実行した管理者ユーザーでログオンを行います。

2. 再び下記のサイトにアクセスして、ユーザー マッピング用のスクリプト ファイルを用意します。

Description of scripts to use to simplify user account mapping between a UNIX client and a Windows-based server

https://support.microsoft.com/kb/973840/en-us

 

上記のサイトから下記のスクリプトの内容をコピーして、ファイルを作成します。

  nfs-adlds-config.js

 

3. UNIX もしくは Linux のコンピューターにログオンを行い、マップされるユーザーとグループの情報が記載された passwd ファイルと group ファイルをコピーして、NFS サーバー上の nfs-adlds-config.js と同じフォルダーの中に置きます。

4. NFS サーバーに置いた passwd ファイルと group ファイルを開き、マップしたくないユーザーやグループを削除します。

 

** 注意 **

ユーザー名とグループ名が重複しないようにしてください。UNIX 環境では user:root/group:root とった既定のユーザーやグループが存在しますが、これらのユーザーとグループがファイルに含まれている状態でスクリプトを実行するとエラーが出て失敗します。例えば、root は rootgrp などに変更する必要があります。

5. 次のコマンドを実行して、ユーザー マッピングの設定を行います。

nfs-adlds-config.js /passwd:passwd /group:group /ldf:users.ldf /usercmd:create-local-users-groups.cmd /execute /log:configure-adlds.txt

nfs-adlds-config.js では次の処理が行われます。

1) passwd ファイルと group ファイルを読み込み、ユーザー オブジェクトとグループ オブジェクトを NFSInstance インスタンスに登録するための ldf ファイルを作成します。

2) passwd ファイルと group ファイルを読み込み、uidNumber と gidNumber 属性に値をセットします。

3) ローカル ユーザーとローカル グループの作成並びに、ユーザーをプライマリ グループに指定したグループに登録するためのコマンド ファイルを作成します。

4) ユーザー オブジェクトとグループ オブジェクトを登録し、ローカルにユーザーとグループを作成します。

/execute オプションを指定しない場合は users.ldf と create-local-users-groups.cmd が作成されます。これにより、手動で create-local-users-groups.cmd を実行することができます。また、次のコマンドを実行することで NFSInstance インスタンスにユーザーとグループを登録することができます。

ldifde –I –f users.ldf –s localhost:389

6. スクリプトを実行した後は、作成されたローカル ユーザーにパスワードを設定します。パスワードを設定しなければ、ユーザー アカウントは有効とならないため、NFS サーバーコンポーネントはそれらのアカウントを使用することはできません。

nfs-adlds-config.js を実行するときに /userpassword オプションを指定することもできます。

 

以上で、AD LDS を使った NFS 用のユーザー マッピングの設定は終了です。お疲れ様でした。

 

「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」