Windowsのサーバーとクライアントと同様に、LinuxのサーバーでもActive Directoryを使用して認証の統合ができないかと思い。LinuxでActive Directoryのユーザーアカウントを使用する方法を調べてたので備忘録としてまとめておく。
■ 前提条件
下記のような環境でLinuxサーバーをActive Directoryに参加させて認証の統合を行う。
ドメイン名: example.local
DNS 01: 192.168.0.1
DNS 02: 192.168.0.2
クライアントのIP: 192.168.0.3
クライアントのホスト名: clinents.example.local
※ CentOS6.4 & Samba 3.6.9で動作を確認しました。
※ CentOS6では、セットアップオプションにベーシックサーバーを選択しておけば必要なパッケージはすべて導入されています。
※ クライアントは、ネットワークカードが1枚だけ刺さっている構成です。
■ 事前設定
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1 = 192.168.0.1
DNS2 = 192.168.0.2
※ CentOS6ではネットワークカードの設定ファイルのDNSの設定から自動的に/etc/resolv.confの内容が生成される。
# vi /etc/hosts
192.168.0.3 clients clinents.example.local
■ SAMBAの設定
普通に認証させるだけでは、Linuxサーバーを複数台ドメインに参加せた場合に、UIDとGIDがサーバーごとにばらばらになってしまうので、UIDとGIDの振り分けにユーザーSIDのRIDを使用する設定をして全サーバーでUIDとGIDが一意になるように設定をした。
ネット上に落ちている情報は、古いバージョンの設定方法が多く、CentOS6で標準で入っているSambaだとうまく動作しなかったので正しい設定方法を調べるのにちょっと苦労した。
# vi /etc/samba/smb.conf
##
# Global Settings
##[global]
##
# Network Related Option
##workgroup = example
realm = example.local##
# Domain Members Option
##security = ads
passdb backend = tdbsamidmap config * : backend = tdb
idmap config * : range = 10000-20000
idmap config example : backend = rid
idmap config example : range = 10000-20000winbind use default domain = no
winbind offline logon = notemplate shell = /bin/bash
template homedir = /home/%Uobey pam restriction = yes
encrypt password = yes##
# Logging Options
##log file = /var/log/samba/log.%m
max log size = 100000