Active DirectoryとLinuxの認証を統合しよう【2017年版】

第5回 LDAPによる認証連携

この記事を読むのに必要な時間:およそ 5 分

Active Directoryでの設定

引き続き,AD側の設定を行います。

ADアクセス用ユーザの作成

まずは冒頭で説明したADアクセス用ユーザを作成します。Usersコンテナの下に図1のようにしてフルネーム(CN)がLDAP Proxyというユーザを作成します。このユーザのパスワードはLinux側の設定ファイルに平文で書き込まれますので,ユーザの権限は最低限にするように注意してください。⁠Domain Guests」グループのみに所属させた上で,対話的ログオンは許可しない設定を行うことをお薦めします。

図1 ADアクセス用ユーザの作成

図1 ADアクセス用ユーザの作成

各ユーザに対するUNIX属性の追加

ここまでの設定を行った状態でgetent passwdやgetent groupを行っても,ADに存在するユーザやグループの情報は返却されないはずです。その際,CentOSの/var/log/messagesには次のようなログが出力されます。

Oct  9 17:23:31 centos73-01 nslcd[2094]: [495cff] <group(all)> CN=Domain Users,CN=Users,DC=ADDOM11,DC=AD,DC=LOCAL: gidNumber: missing
Oct  9 17:23:31 centos73-01 nslcd[2094]: [495cff] <group(all)> CN=Domain Guests,CN=Users,DC=ADDOM11,DC=AD,DC=LOCAL: gidNumber: missing

これは,ADユーザやグループには,Linuxユーザとして必須の属性であるUIDやGIDの情報がデフォルトで設定されていないためです。Linuxサーバと認証連携を行うためには,各ユーザやグループ毎にこれらの属性を適切に設定する必要があります。

Windows Server 2012 R2までのWindowsサーバでは,⁠NISサーバー」役割サービスをインストールすることで図2のような「UNIX属性」タブが出現し,ここからGUIベースで設定ができたのですが,この機能はWindows Server 2016から削除されています。

図2 UNIX属性(Windows Server 2008 R2)

図2 UNIX属性(Windows Server 2008 R2)

そのため,Windows Server 2016以降でこれらの属性を変更するには,スクリプトなどで行うか,属性エディタを用いて属性を直接編集する必要があります。図3に属性エディタでgidNumberを修正する例を示します。

図3 属性エディタによる属性の修正

図3 属性エディタによる属性の修正

ユーザについては,uidNumberに加え,所属グループのGIDを示すgidNumberも設定する必要があります。加えてCentOSの場合はnslcd.confのデフォルトがunixHomeDirectoryの値が設定されているユーザを検索する設定となっているため,unixHomeDirectoryの値も設定する必要があります。これらの設定を行うことで,getent passwdやgetent groupの出力にユーザが表示されるようになります。

さらにLinuxサーバへのログオンを可能とするためには,loginShell属性に適切なシェルを設定する必要があります。関連する属性を表2に示します。

表2 Linuxユーザ用の属性

属性名意味設定例必須or任意
gidNumber所属グループのGID100必須
loginShellシェル/bin/bash任意
uidNumberUID10001必須
unixHomeDirectoryホームディレクトリのパス/home/ldap01任意

 CentOSでのデフォルト設定では必須

グループの場合はgidNumber属性の設定のみが必須となります。

ここまでの設定を行うことで,getentコマンドやidコマンドで次のようにエントリが表示されるようになるはずです。

$ getent passwd ldap01
ldap01:*:10011:100:ldap 01.:/home/ldap01:/bin/bash
$ id ldap01
uid=10011(ldap01) gid=100(users) groups=100(users)

認証連携の動作確認

ここまでの設定を適切に行うことで,次のようにsshなどでログインする際にADで設定したパスワードを指定することで,ログインすることが可能となっているはずです。

$ ssh ubuntu1604-01 -l ldap01
Password:
Last login: Mon Oct  9 18:27:08 2017
Could not chdir to home directory /home/ldap01: No such file or directory
ホームディレクトリの自動作成

上記では指定したホームディレクトリを作成していないためエラーが発生していますが,事前に作成しておくか,pam_mkhomedirモジュールを有効化し,ホームディレクトリ自動作成するように設定することでエラーを抑止することができます。CentOSの場合は,authconfigコマンドを次のように実行することで,モジュールを有効化します。

# authconfig --enablemkhomedir --update

Ubuntuの場合は,pam-auth-updateコマンドを起動し,メニューから「Create home directory on login」にチェックをしてください。

著者プロフィール

髙橋基信(たかはし もとのぶ)

大学卒業後,株式会社NTTデータに入社。数年間UNIX上でのプログラム開発に携わった後,クライアント/サーバシステム全般に関する技術支援業務を行う部署に異動し現在に至る。「日本Sambaユーザ会」スタッフなどを務め,オープンソース,Microsoft双方のコミュニティ活動に関わるとともに,各種雑誌への記事執筆や,講演などの活動を行っている。2005年6月には「Sambaのすべて」を出版。

コメント

コメントの記入