Samba4でのActive Directory構築(目次)


Table of Contents

↑

はじめに

正式リリース版であるSamba4.0を利用してActive Directoryを構築します。

尚、構築手順は「Samba AD DC HOWTO」を参考にしています。
http://wiki.samba.org/index.php/Samba4/HOWTO

↑

Samba4の新機能

Samba3.xとの大きな違いは以下の通りです。

  • ActiveDirectoryのログオンサーバとして動作させる事が可能になった
  • Samba本体にLDAP、Kerberos、DNSが含まれるようになった
↑

環境

samba4_13.JPG


↑

sambaサーバ

  • OS
    • CentOS 6.3 (2.6.32-279.14.1.el6.x86_64)
  • パッケージ
    • samba-4.0.5.tar.gz
  • その他
    • IP: 192.168.11.200
    • ドメイン: SAMDOM.OSS-D.NET
    • ホスト名(FQDN): serv200.samdom.oss-d.net
↑

windowsクライアント

  • OS
    • windows vista sp2
  • その他
    • IP: 192.168.11.13
  • この端末をAD参加させ、その後で管理ツールをインストールします。
↑

Sambaのインストール

↑

準備

  • Samba4に必要なパッケージをインストールします。
    # yum install libacl-devel libblkid-devel gnutls-devel \   readline-devel python-devel gdb pkgconfig krb5-workstation \   zlib-devel setroubleshoot-server \   setroubleshoot-plugins policycoreutils-python \   libsemanage-python setools-libs-python setools-libs \   popt-devel libpcap-devel sqlite-devel libidn-devel \   libxml2-devel libacl-devel libsepol-devel libattr-devel \   keyutils-libs-devel cyrus-sasl-devel
↑

Sambaのダウンロード

  • samba4をダウンロードします。 最新版は Sambaサイト からダウンロード可能です。
    $ wget http://www.samba.org/samba/ftp/stable/samba-4.0.5.tar.gz
↑

Sambaのインストール

  • 問題解決に役立つオプションを追加してconfigureを実行します。
    $ tar zxvf samba-4.0.5.tar.gz$ cd samba-4.0.5$ ./configure --enable-debug --enable-selftest$ make# make install

  • Samba4サーバを新規ドメインとして使用するために基本ユーザデータベースのセットアップを行います。
    # /usr/local/samba/bin/samba-tool domain provisionRealm: samdom.oss-d.net                        Domain [samdom]:samdom                        Server Role (dc, member, standalone) [dc]:dc  DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.11.1]:Administrator password:                   Retype password:
    設定項目 設定値
    Realm kerberosのレルム(ドメイン名を入力)
    Domain ADで利用するドメイン名を指定します。
    Server Role サーバの役割を選択します。新規ドメインのためDCを選択します。
    DNS backend DNSを設定する。今回は本体に含まれるものを利用する。
    DNS forwarder IP address フォワーダとなるDNSを設定する
    Administrator password 管理者パスワード(英大文字、英小文字、数字、記号の4つから3種類を含めること)

    • 上記provisionの実行結果
      Server Role:           active directory domain controllerHostname:              serv200NetBIOS Domain:        SAMDOMDNS Domain:            samdom.oss-d.netDOMAIN SID:            S-1-5-21-**********-**********-***************

  • Sambaを起動します。
    # /usr/local/samba/sbin/samba

  • 起動したSambaとSamba-clientのバージョンが4.xであることを確認します。
    # /usr/local/samba/sbin/samba -VVersion 4.0.5# /usr/local/samba/bin/smbclient --versionVersion 4.0.5

  • サーバ上で利用可能な共有リストを確認します。
    # /usr/local/samba/bin/smbclient -L localhost -U%Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.0.5]       Sharename       Type      Comment       ---------       ----      -------       netlogon        Disk       sysvol          Disk       IPC$            IPC       IPC Service (Samba 4.0.5)Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.0.5]       Server               Comment       ---------            -------       Workgroup            Master       ---------            -------
    • 「netlogon」と「sysvol」は、Active Directoryの作動に必要となる基本共有です。
  • 認証テストとして、netlogonへadministratorで接続します。
    パスワードはprovisionで設定したものを入力してプロンプトが表示されれば問題ありません。
    # /usr/local/samba/bin/smbclient //localhost/netlogon -U administrator Enter administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.0.5] smb: \> exit
↑

Sambaの設定

↑

DNSの設定

↑

DNSとして「SAMBA_INTERNAL」を設定した場合

  • smb.confへ下記を設定します。
    # vi /usr/local/samba/etc/smb.confdns forwarder = 192.168.11.1

  • resolv.confへ下記を設定します。
    # vi /etc/resolv.confdomain samdom.oss-d.netnameserver 127.0.0.1

↑

DNSの動作確認

  • SRVレコードの名前解決ができる事を確認します。
    # host -t SRV _ldap._tcp.samdom.oss-d.net._ldap._tcp.samdom.oss-d.net has SRV record 0 100 389 serv200.samdom.oss-d.net.# host -t SRV _kerberos._udp.samdom.oss-d.net._kerberos._udp.samdom.oss-d.net has SRV record 0 100 88 serv200.samdom.oss-d.net.# host -t A serv200.samdom.oss-d.net.serv200.samdom.oss-d.net has address 192.168.11.200
↑

Kerberos認証の動作確認

動作確認なので、この作業はスキップしても構いません。

↑

Kerberosの動作確認

  • 動作確認のため、Kerberosクライアントの設定を行います。
    # vi /etc/krb5.conf[libdefaults]    default_realm = SAMDOM.OSS-D.NET    dns_lookup_realm = false    dns_lookup_kdc = true

  • provision時に作成されたファイルをベースにして下さい。
    # cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

↑

Kerberosの動作確認

  • administratorで認証の動作確認を行います。
    パスワードはprovisionで設定したものを入力します。
    # kinit Password for :Warning: Your password will expire in 41 days on Sun Jun  2 14:12:42 2013

  • klistコマンドでチケット内容を表示します。
    # klistTicket cache: FILE:/tmp/krb5cc_0Default principal: Valid starting     Expires            Service principal04/21/13 14:31:50  04/22/13 00:31:50  krbtgt/        renew until 04/22/13 14:31:08

↑

DNSの動的更新

  • 動的更新された内容を確認します。
    # /usr/local/samba/sbin/samba_dnsupdate --verbose --all-namesIPs: ['192.168.11.200']Calling nsupdate for A samdom.oss-d.net 192.168.11.200Outgoing update query:        (省略)

↑

NTPの設定

NTPの設定は必須ではないため今回は省略します。

↑

ファイル共有の設定

  • 共有フォルダ「/data/test」を作成します
    # mkdir -m 777 -p /data/test

  • smb.confに共有フォルダの設定を追加します。
    # vi /usr/local/samba/etc/smb.conf[test] path = /data/test comment = Test Share read only = no

↑

自動起動の設定

  • 下記の通り自動起動ファイルを作成します。
    # vi /etc/init.d/samba4
                            #! /bin/bash
                            #
                            # samba4       Bring up/down samba4 service 
                            #
                            # chkconfig: - 90 10
                            
                            # description: Activates/Deactivates all samba4 interfaces configured to \
                            
                            #              start at boot time.
                            #
                            ### BEGIN INIT INFO
                            
                            # Provides: 
                            
                            # Should-Start: 
                            
                            # Short-Description: Bring up/down samba4
                            
                            # Description: Bring up/down samba4
                            
                            ### END INIT INFO
                            
                            # Source function library.
                            . /
                            etc
                            /
                            init
                            .
                            d
                            /
                            functions
                            
                            if
                            
                            [
                             -
                            f
                             /
                            etc
                            /
                            sysconfig
                            /
                            samba4
                            
                            ]
                            ; 
                            then
                                . /
                            etc
                            /
                            sysconfig
                            /
                            samba4
                            
                            fi
                            
                            CWD
                            =$
                            (
                            pwd
                            )
                            
                            prog
                            =
                            "
                            samba4
                            "
                            
                            start
                            (
                            )
                             {      
                            # Attach irda device 
                            
                            echo
                             -
                            n
                             $
                            "
                            Starting $prog: 
                            "
                                /
                            usr
                            /
                            local
                            /
                            samba
                            /
                            sbin
                            /
                            samba
                            
                            sleep
                            
                            2
                            
                            if
                            
                            ps
                            
                            ax
                             | 
                            grep
                             -
                            v
                            
                            "
                            grep
                            "
                             | 
                            grep
                             -
                            q
                             /
                            samba
                            /
                            sbin
                            /
                            samba
                             ; 
                            then
                            
                            success
                             $
                            "
                            samba4 startup
                            "
                            ; 
                            else
                            
                            failure
                             $
                            "
                            samba4 startup
                            "
                            ; 
                            fi
                            
                            echo
                            }
                            stop
                            (
                            )
                             {      
                            # Stop service.
                            
                            echo
                             -
                            n
                             $
                            "
                            Shutting down $prog: 
                            "
                            
                            killall
                            
                            samba
                            
                            sleep
                            
                            2
                            
                            if
                            
                            ps
                            
                            ax
                             | 
                            grep
                             -
                            v
                            
                            "
                            grep
                            "
                             | 
                            grep
                             -
                            q
                             /
                            samba
                            /
                            sbin
                            /
                            samba
                             ; 
                            then
                            
                            failure
                             $
                            "
                            samba4 shutdown
                            "
                            ; 
                            else
                            
                            success
                             $
                            "
                            samba4 shutdown
                            "
                            ; 
                            fi
                            
                            echo
                            }
                            status
                            (
                            )
                             {    /
                            usr
                            /
                            local
                            /
                            samba
                            /
                            sbin
                            /
                            samba
                             --
                            show
                            -
                            build
                            }
                            # See how we were called.
                            
                            case
                            
                            "
                            $1
                            "
                            
                            in
                            
                            start
                            )    
                            start
                                  ;;
                            stop
                            )    
                            stop
                                  ;;
                            status
                            )    
                            status
                            
                            irattach
                                ;;
                            restart
                            |
                            reload
                            )    
                            stop
                            
                            start
                                ;;*)      
                            echo
                             $
                            "
                            Usage: $0 {start|stop|restart|status}
                            "
                            
                            exit
                            
                            1
                            
                            esac
                            
                            exit
                            
                            0
                          
  • 自動起動スクリプトへ実行権限を付与して保存します。
    # chmod 0755 /etc/init.d/samba4# ln -s /etc/init.d/samba4 /etc/rc3.d/S80samba4 

  • chkconfigコマンドで自動起動をONにします
    # chkconfig --add samba4# chkconfig --level 35 samba4 on

↑

Samba Active Directory へのユーザ追加

  • ユーザを追加します。
    # /usr/local/samba/bin/samba-tool user add test_userNew Password:Retype Password:User 'test_user' created successfully

  • 割り当てられたSIDは下記コマンドで調査できます。
    # /usr/local/samba/bin/wbinfo --name-to-sid test_userS-1-5-21-387530356-439494438-163505692-1104 SID_USER (1)

  • 割り当てられたユーザIDは下記コマンドで調査できます。
    # /usr/local/samba/bin/wbinfo --sid-to-uid S-1-5-21-387530356-439494438-163505692-11043000019

↑

wiondwosクライアントのドメイン参加

Windowsクライアントをドメインに参加させます。

↑

クライアント側での事前準備

  • 時刻を合わせます。時刻が5分以上ずれるとKerberos認証に失敗するためです。
  • DNSをsamba4サーバに変更します。
    samba4_00-1.JPG


↑

ドメイン参加

  • [スタートメニュー] → [システムとメンテナンス] → [システム] で画面を開き、[設定と変更]を選択します。
    samba4_00.JPG

  • [コンピュータタブ]から変更ボタンを押します。
    samba4_00-2.JPG

  • ドメイン名として「SAMDOM」を入力します。
    samba4_01.JPG

  • ドメイン参加時の認証は、administratorユーザで実施します。
    samba4_02.JPG

  • 「ドメインへようこそ」と表示されたら再起動します。
    samba4_03.JPG
  • 再起動後、test_userでログオンできれば完了です。
    ユーザ名  :test_userパスワード:【ユーザ作成時の設定パスワード】
↑

管理ツールの導入

  • ADの管理方法は大きく2種類あります。今回は1のWindows用の管理ツールを利用します。
    1. Windows用の管理ツールを利用する(Windows端末から管理する)2. Samba-toolコマンドで管理する(Sambaサーバ上で直接コマンドを実行する)

↑

Microsoft リモート サーバー管理ツール (RSAT)

  • ドメインユーザでWindowsクライアント(192.168.11.13)へログオンします。
    ユーザ名  :test_userパスワード:【ユーザ作成時の設定パスワード】

  • 管理ツールをダウンロードしてインストールします。
    • windows vista
      http://www.microsoft.com/downloads/details.aspx?FamilyId=9FF6E897-23CE-4A36-B7FC-D52065DE9960&displaylang=ja
    • windows7
      http://www.microsoft.com/downloads/details.aspx?FamilyID=7D2F6AD7-656B-4313-A005-4E344E43997D&displaylang=ja
↑

管理ツールの機能を有効にする

  • 下記を選択して設定画面を表示します。
    [コントロールパネル] → [プログラム] → [Windowsの機能の有効化または無効化]
    samba4_07.JPG

  • [リモート サーバー管理ツール]をチェックして機能を有効にします。
    samba4_08.JPG

↑

管理ツールをスタートメニューに表示させる

  • 下記の通りスタートメニューのカスタマイズ画面を開きます。
    [スタートメニュー] → [プロパティ] → [カスタマイズ]
    samba4_05.JPG

  • システム管理ツールの[すべてのプログラム]メニューと[スタート]メニューに表示するを選択します。
    samba4_06.JPG

↑

管理ツールの起動

  • [スタートメニュー]→[管理ツール]から管理ツールの起動が可能です。
    samba4_09.JPG

  • [Active Directory ユーザーとコンピュータ]からユーザやコンピュータの追加削除が可能です。
    samba4_10.JPG
↑

移動ユーザプロファイルの設定

詳細は割愛しますが、移動ユーザプロファイルを有効すると、ドメイン参加済であれば、どの端末にログオンしても自分の個人設定が利用可能です。

↑

smb.confの設定

  • smb.confへ設定を追加します。
    # vi /usr/local/samba/etc/smb.conf[profiles]      path = /usr/local/samba/var/profiles      blowseble = no      read only = no

  • ユーザプロファイルの保存先ディレクトリを作成します。
    プロファイルはログオンユーザの権限で作成されるため、アクセス権を設定します。
    # mkdir /usr/local/samba/var/profiles# chmod 1777 /usr/local/samba/var/profiles

↑

プロファイルパスの設定

  • 管理ツールから[Active Directory ユーザーとコンピュータ]を起動します。起動時は右クリックで管理者として実行を選択します。
    [スタートメニュー] → [管理ツール] → [Active Directory ユーザーとコンピュータ]
    samba4_10.JPG

  • test_userのプロファイルを変更します。
    samba4_11.JPG

↑

移動ユーザープロファイルの動作確認

  • test_userでログオン後にプロファイルの作成を確認します。
    # ls /usr/local/samba/var/profiles/test_user.V2
    • vista以降はディレクトリ名に.V2が付きます。
↑

FAQ

↑

adminstratorでの認証に失敗する

  • 【Q】adminstratorでの認証に失敗して下記エラーが表示される
    the password does not meet the complexity criteria!

  • 【A】下記2つの要件を満たすパスワードを設定してください
    1. パスワード長が8文字以上2. 3種類以上の文字を含むこと  ・英大文字(A-Z)  ・英小文字(a-z)  ・数字(0-9)  ・記号
↑

Kerberos認証の確認で失敗する

  • 【Q】Kerberos認証の確認で下記エラーが発生して失敗する
    kinit: Cannot find KDC for requested realm while getting initial credentials

  • 【A】「/etc/krb5.conf」の設定ファイルを見直して下さい。
このエントリーをはてなブックマークに追加
Last-modified: 2013-04-22 (月) 00:18:26   最終更新のRSS