Fedora14でWindowsドメインサーバ構築

社内にはWindowsサーバが存在していない。そしてアカウント管理とかされていない。
端末ごとにアカウント生成したりで面倒くさいし、サーバ用アカウントと端末各種のアカウントのパスワードの同期がとれない。

そこでだ!!

Linux系とMacLDAPで認証を行う。
Windows機に関してはOpenLDAP, Samba の組み合わせでWindowsドメイン認証を行う。

専用のサーバはまだ用意できていないので、とりあえず実験的にFedora14がインストールされているデスクトップ機で構築。

LDAPサーバ

LDAPの構築については Fedoa14でLDAPサーバを構築 - クマーのえんじにありんぐ で構築済み。
ただこのままではSambaとの連携はできないので、一部設定の追加・修正を行う。

/etc/openldap/slapd.conf


#以下のスキーマを追加
include /etc/openldap/schema/samba.schema

#access to attrs=userPasswordの項目を修正
access to attrs=userPassword,SambaLMPassword,SambaNTPassword
by self write
by dn="cn=admin,dc=your-domain,dc=com"
by anonymous auth
by * none

#以下を続けて追加
access to attrs=shadowLastChange,loginShell,cn,sn,givenName,mail
by self write
by dn="cn=admin,dc=your-domain,dc=com"
by * read

本来であれば、動的にDBを書き換えればいいんだけど・・・slaptestコマンドで再構築(てへ

Samba構築

まずはSambaと便利ツールをインストール。インストールされるSambaは3.5.11。


yum install samba smbldap-tools

さくっと /etc/samba/smb.conf を変更


[global]
#文字コード設定
dos charset = CP932
display charset = UTF-8

#ドメイン名設定
workgroup = YOUR-DOMAIN.COM

#DNS的に言うWindowsネットワーク専用ホスト名
netbios name = PDCSERVER
server string = %h

#Sambaアカウント用パスワード保存DBにLDAPを指定
passdb backend = ldapsam:ldap://localhost

#ログ
log file = /var/log/samba/log.%m
max log size = 50

#SambaのパスワードとLinux用パスワードの動機を行うためのスクリプト指定
add user script = /usr/sbin/smbldap-useradd '%u'
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p '%g'
delete group script = /usr/sbin/smbldap-groupdel "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
add machine script = /usr/sbin/smbldap-useradd -w '%u'

#移動プロファイルは使用しない
logon path =

#ドメイン認証機能を使用する
domain logons = Yes

# この
os level = 65
preferred master = Yes
domain master = Yes
wins support = Yes
ldap admin dn = cn=admin,dc=your-domain,dc=com
ldap group suffix = ou=Group
ldap machine suffix = ou=Computers
ldap passwd sync = yes
ldap suffix = dc=your-domain,dc=com
ldap user suffix = ou=People
admin users = Administrator
hosts allow = 127., 192.168.0.
cups options = raw

Samba起動&ユーザー登録

/etc/init.d/smb start

これでSambaが起動。

ユーザ管理はsmbldap-user*系コマンド、グループ管理にはsmbldap-group*系コマンドを使用する。
このコマンドで管理することによってSambaのアカウントとUnix系のアカウントの同期が行われる。

え?アカウントが二つあるのかって??
どうやら、samba自身は自前でアカウント情報を保持していて認証を行う。
認証されればそのアカウントでファイルシステムなどの操作を行うらしい。
つまり、両方にアカウントが存在しないと、ファイル共有などで読み書き出来ないって事か。
同じアカウントを二種類用意しなければならないけど、ldapとsmbldap-*系のツールを使えば一元管理ができるって作戦だ。

管理者権限を付与したいユーザには、「Domain Admin」グループに所属させる。
FedoraではgidNumber1000のfoobarグループに所属し、Windowsではシステム管理者としてログインするhogeアカウントを生成する方法

smbldap-groupadd -g 1000 foobar
smbldap-useradd -g 1000 hoge
smbldap-groupmod -m "Domain Admin" foobar

その他詳細のパラメータは、各コマンドに -? オプションでヘルプを確認できる。

Windows7クライアント設定

Win7Pro での設定です。
HomeEditionではそのままではアクティブディレクトリに参加できません。(レジストリ編集で可能になるみたいですが・・・)

レジストリ修正

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters 以下に DWORD で定義した以下の値の変数を二つ追加する。

DNSNameResolutionRequired = 0
DomainCompatibilityMode = 1

再起動するといいと思うよ。

ドメイン参加処理
  1. コントロールパネルからシステムを開く
  2. 開いたシステムウィンドウにある「設定の変更」をクリックする
  3. 「コンピュータ名」タブ内にある「変更」ボタンをクリック
  4. 「所属するグループ」項目を「ドメイン」に変更し、「ドメイン名」欄に参加するドメイン名(DOMAIN-NAME.COM)を入力して「OK」をクリック
  5. ドメイン管理者のアカウントを尋ねられるので、ドメイン管理者のID(Administrator)とパスワードを入力

無事に参加できると、ようこそダイアログが表示される。
再起動すればPDC(Samba)アカウントでログイン出来る様になってる。

ログインの方法は至って簡単。

  1. 起動したら[Ctrl]+[Alt]+[Del]を押せって画面が出る
  2. 言われた通りに三つのキーを同時に押す
  3. アカウントとパスワードを入力する画面が出るので入力する
    • アカウントが入力できない場合は「ユーザ切り替え」ボタンから「その他のユーザ」を選択する
    • 下記にある設定を行ってログイン画面の表示方法を切り替える
  4. ログオン先にドメインが指定されているか確認
    • 違うドメインやローカル認証になっている場合は、アカウントに「DOMAIN-NAME.COM\account_name」の様に入力すればおk
  5. ログオンする


再起動後ログイン画面がアカウントとパスワードを入力する画面になってない(最後のログインしたアカウントが表示されている)場合

  1. ローカルセキュリティポリシーを起動する
    1. スタートメニューまたは[Win]+[R]キーでアプリケーションの検索を開く
    2. 「ローカル」と入力して候補をだすか、「secpol.msc」と入力して直接起動する
  2. 「ローカル ポリシー」内の「セキュリティ オプション」を開く
  3. 一番下にある「対話型ログオン:最後のユーザ名を表示しない」をダブルクリック
  4. 「ローカルセキュリティの設定」タブを開いて「有効」を選択
  5. 「OK」をクリック

の操作を行って常にアカウントとパスワードを入力させる様にする