Sambaを使用したOpenLDAPバックエンドな旧NTドメイン環境を構築する

# はじめに 
今回紹介するOpenLDAP をバックエンドにした方法はSamba3 までで主に使用されていた方法で、古いです。
Samba4 を使用したActive Directory の方法が既に出ていて、こちらが今後の主流になると思われるので、特に理由が無い限りはそちらの構築を行うようにしてください。

<dl>
  <dt> Samba4 を使用したKerberos バックエンドなSamba Active Directory を構築する</dt>
  <dd> http://qiita.com/TsutomuNakamura/items/07bf2d01e61e316a2a00</dd>
</dl>

これから紹介する方法はどうしてもOpenLDAP を使用しなければならない等の理由がある場合に構築する以外、特にメリットは無いと思われます。

# 構築環境 
今回構築する環境は以下のとおりです。

* 今回構築する環境
<table><tbody>
  <tr>
    <th> OS</th>
    <td> Debian 8 (jessie)</td>
  </tr>
  <tr>
    <th> Samba</th>
    <td> version 4.1.17</td>
  </tr>
  <tr>
    <th> Network Interface</th>
    <td> eth0</td>
  </tr>
  <tr>
    <th> IP</th>
    <td> 192.168.1.42</td>
  </tr>
  <tr>
    <th> 外部参照DNS</th>
    <td> 8.8.8.8</td>
  </tr>
  <tr>
    <th> Domain</th>
    <td> MYSITE</td>
  </tr>
  <tr>
    <th> Host Name</th>
    <td> ldap</td>
  </tr>
  <tr>
    <th> domain component</th>
    <td> dc#mysite,dc=example,dccom</td>
  </tr>
  <tr>
    <th> Samba サーバのFQDN</th>
    <td> ldap.mysite.example.com</td>
  </tr>
  <tr>
    <th> Samba client となるWindows</th>
    <td> Windows7 32bit Ultimate</td>
  </tr>
  <tr>
    <th> Windows のコンピュータ名</th>
    <td> workstation</td>
  </tr>
</tbody></table>

bindDN、認証に関する定義は次のように定義するものとします。

* bindDN 認証に関する情報
<table><tbody>
  </tr>
  <tr>
    <th> bindDN or ユーザ名</th>
    <th> パスワード</th>
    <th> 説明</th>
  </tr>
  <tr>
    <td> cn#admin,cnconfig</td>
    <td> password</td>
    <td> olcDatabase#{0}config,cnconfig の情報を参照するためのbindDN 情報</td>
  </tr>
  <tr>
    <td> cn#Manager,dc=mysite,dc=example,dccom</td>
    <td> password2</td>
    <td> dc#mysite,dc=example,dccom のManager</td>
  </tr>
  <tr>
    <td> uid#root,ou=Users,dc=mysite,dc=example,dccom</td>
    <td> pw-root</td>
    <td> smbldap-populate 時に作成される dn</td>
  </tr>
  <tr>
    <td> saburo-suzuki</td>
    <td> pw-saburo-suzuki</td>
    <td> Windows ドメインユーザ</td>
  </tr>
</tbody></table>

今回は特に断りがない限り、Linux 上ではroot ユーザでコマンドを実行するものとします。
debian で事前にroot ユーザになっておくには次のようにコマンドを実行します。

```text:root
$ sudo apt-get install 
```


それでは、これから構築作業をしていきましょう。

# 必要なパッケージのインストール 
Samba, OpenLDAP に必要なパッケージをインストールします。


```text:必要なパッケージのインストール
# apt-get update
# apt-get install slapd ldap-utils libnss-ldap
# apt-get install acl attr autoconf bison build-essential \
        debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
        libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
        libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
        libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
        libpopt-dev libreadline-dev perl perl-modules pkg-config \
        python-all-dev python-dev python-dnspython python-crypto \
        xsltproc zlib1g-dev
```


# OpenLDAP の起動 
OpenLDAP を起動し、OS 起動時にも自動的に起動するように設定しておきます。

```text:OpenLDAPの起動
# service slapd start
# update-rc.d slapd defaults
```


OpenLDAP が起動したら、試しにldapsearch コマンドを実行してOpenLDAP から情報が引き出せるか確認してみましょう。

```text:OpenLDAPの起動確認
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn#config" "(olcDatabase*)"

SASL/EXTERNAL authentication started
SASL username: gidNumber#0+uidNumber=0,cn=peercred,cn=external,cnauth
SASL SSF: 0
dn: olcDatabase#{-1}frontend,cnconfig
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig

......

   olcDbIndex: member,memberUid eq
   olcDbMaxSize: 1073741824
```


上記のように情報が引き出せればOK です。

# "olcDatabase={0}config,cn=config" のパスワードを設定する 
config データベースのパスワードを設定します。
パスワードの機密性を保持するために事前にslappasswd コマンドでハッシュ化したパスワードを生成しておきます。


```text:"password"というパスワードのハッシュ値を求める例
# slappasswd -s password
{SSHA}fHARwUz9Ju7z9vYBDcnDt3rKONSxgLV6
```


次に、slappasswd コマンドで生成した値を"dn: olcDatabase#{0}config,cnconfig" のパスワードとして登録します。


```text:"dn：olcDatabase#{0}config,cnconfig"にパスワードを設定する
# ldapadd -Y EXTERNAL -H ldapi:/// << '__EOF__'
dn: olcDatabase#{0}config,cnconfig
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}fHARwUz9Ju7z9vYBDcnDt3rKONSxgLV6
__EOF__
```


## ldapadd コマンドによる登録処理について 
ldapadd コマンドを実行するときに上記の例では標準入力から定義を読み込むようにしていますが、これはファイルから読み込むように指定することもできます。
例えば事前に下記のようにファイルを作成しておき、それをldapadd コマンドに読み込ませることもできます。


```text:set_config_rootpw.ldif
dn: olcDatabase#{0}config,cnconfig
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}fHARwUz9Ju7z9vYBDcnDt3rKONSxgLV6
```


ldapadd コマンドで定義をファイルから読み込む場合は`-f` オプションを使います。


```text:ファイルを指定してldapaddコマンドを実行する
# ldapadd -Y EXTERNAL -H ldapi:/// -f ./set_config_rootpw.ldif
```


これ以降の手順でも、基本的には標準入力から読み込む方法を使っていきます。

# olcDatabase={0}config,cn=config のolcRootDN を設定する 
olcDatabase#{0}config,cn=config を操作するためのDN として、cn=admin,cnconfig を登録しておきます。


```text:cn#admin,cnconfigを設定する
# ldapadd -Y EXTERNAL -H ldapi:/// << '__EOF__'
dn: olcDatabase#{0}config,cnconfig
changetype: modify
replace: olcRootDN
olcRootDN: cn#admin,cnconfig
__EOF__
```


# パスワードの確認 
パスワードが設定できたら、ldapsearch で認証が通ることを確認してみましょう。


```text:ldapsearchコマンドによる認証の確認
# ldapsearch -LLL -D "cn#admin,cn=config" -w password -b "olcDatabase={0}config,cn=config" "(olcDatabase*)"
dn: olcDatabase#{0}config,cnconfig
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact#gidNumber=0+uidNumber=0,cn=peercred,cnexternal
 ,cn=auth manage by * break
 olcRootPW: {SSHA}fHARwUz9Ju7z9vYBDcnDt3rKONSxgLV6
 olcRootDN: cn#admin,cnconfig

# echo $?
0
```


上記のように情報が引けて、戻り値が0 であれば成功です。

# スキーマの登録 
※スキーマの登録は、今回自分が試した環境では不要でした
Samba のスキーマを登録する上で必要になる依存スキーマを取り込んでおきます。


```text:スキーマの取り込み
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
```


# Backend DB 周りの設定 
OpenLDAP はBackend DB として、bdb, hdb, mdb のいずれかを使用します。
現在のOpenLDAP がどのBackend DBを使用しているのか確認してみましょう。


```text:現在使われているBackendの確認
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -D "cn#config" -b "cn=config" 2>/dev/null | egrep --color 'olcDatabase=\{[0-9]\}(b|h|m)db,cnconfig'
dn: olcDatabase#{1}mdb,cnconfig
```


上記の例では、OpenLDAP はmdb を使用しており、シーケンス1 ({1}mdb) となっていることがわかります。
この情報を元に以下のようにOpenLDAP に情報を登録します。


```text:BackendDB周りの設定
# slappasswd -s password2
{SSHA}70j61M5q2NdnyP9j1LVP+K4H9aTxr1iw

# ldapmodify -Y EXTERNAL -H ldapi:/// << '__EOF__'

dn: olcDatabase#{1}mdb,cnconfig
changetype: modify
replace: olcSuffix
olcSuffix: dc#mysite,dc=example,dccom

dn: olcDatabase#{1}mdb,cnconfig
changetype: modify
replace: olcRootDN
olcRootDN: cn#Manager,dc=mysite,dc=example,dccom

dn: olcDatabase#{1}mdb,cnconfig
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}70j61M5q2NdnyP9j1LVP+K4H9aTxr1iw

__EOF__
```


# Base DN の作成 
Base DN を作成します。


```text:BaseDNの登録
ldapadd -x -D "cn#Manager,dc=mysite,dc=example,dccom" -w password2 << '__EOF__'

dn: dc#mysite,dc=example,dccom
objectClass: dcObject
objectClass: organization
dc: mysite
o: Example Inc.

__EOF__
```


# hosts の設定 
/etc/hosts ファイルに自分自身のFQDN を追加します。


```text:/etc/hosts
192.168.1.42    ldap.mysite.example.com
```


# Samba で使用するベーススキーマを登録する 
Samba をインストールした時にSamba のスキーマ定義ファイルも一緒にダウンロードされています。
Samba スキーマファイルは通常、/usr/share/doc/samba ディレクトリ配下に格納されています。


```text:Sambaスキーマファイルの検索
# find /usr/share/doc/samba -type f -regextype posix-extended -regex '.*/samba.ldif(.gz)?$'
/usr/share/doc/samba/examples/LDAP/samba.ldif.gz
```


debian の場合、"/usr/share/doc/samba/examples/LDAP/samba.ldif.gz" が該当します。
このファイルのスキーマをOpenLDAP に登録します。


```text:Sambaスキーマを登録する
# gunzip -c /usr/share/doc/samba/examples/LDAP/samba.ldif.gz | ldapadd -Y EXTERNAL -H ldapi:///
```


# インデックスを作成する 
OpenLDAP の基本情報と、先ほど登録したSamba スキーマのインデックスを作成します。

```text:Sambaスキーマのインデックスを作成する
# ldapmodify -x -D "cn#admin,cnconfig" -w password << '__EOF__'
dn: olcDatabase#{1}mdb,cnconfig
changetype: modify
replace: olcDbIndex
olcDbIndex: objectClass eq,pres
olcDbIndex: ou eq,pres,sub
olcDbIndex: cn eq,pres,sub
olcDbIndex: mail eq,pres,sub
olcDbIndex: surname eq,pres,sub
olcDbIndex: givenname eq,pres,sub
olcDbIndex: member pres,eq
olcDbIndex: uidNumber eq,pres
olcDbIndex: gidNumber eq,pres
olcDbIndex: loginShell eq,pres
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: nisMapName eq,pres,sub
olcDbIndex: nisMapEntry eq,pres,sub

dn: olcDatabase#{1}mdb,cnconfig
changetype: modify
replace: olcDbIndex
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub
__EOF__
```


# smb.conf の設定 
Samba のメインとなる/etc/samba/smb.conf ファイルを編集します。
編集過程は割愛していきます。編集した結果は下記のようになります。


```text:/etc/samba/smb.conf
# egrep -v '(^#|^$)' /etc/samba/smb.conf

root@ldap:~# cat /etc/samba/smb.conf
[global]
        workgroup = MYSITE
        netbios name = LDAP
        server role = auto
        deadtime = 10
        log level = 1
        log file = /var/log/samba/log.%m
        max log size = 5000
        debug pid = yes
        debug uid = yes
        syslog = 3
        utmp = yes
        security = user
        domain logons = yes
        os level = 64
        logon path = 
        logon home = 
        logon drive = 
        logon script = 
        passdb backend = ldapsam:"ldap://ldap.mysite.example.com/"
        ldap ssl = off
        ldap admin dn # cn=Manager,dc=mysite,dc=example,dccom
        ldap delete dn = no
        ldap password sync = yes
        ldap suffix # dc=mysite,dc=example,dccom
        ldap user suffix # ouUsers
        ldap group suffix # ouGroups
        ldap machine suffix # ouComputers
        ldap idmap suffix # ouIdmap
        add user script = /usr/sbin/smbldap-useradd -m '%u' -t 1
        rename user script = /usr/sbin/smbldap-usermod -r '%unew' '%uold'
        delete user script = /usr/sbin/smbldap-userdel '%u'
        set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
        add group script = /usr/sbin/smbldap-groupadd -p '%g'
        delete group script = /usr/sbin/smbldap-groupdel '%g'
        add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
        delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
        add machine script = /usr/sbin/smbldap-useradd -w '%u' -t 1
        nt acl support = yes
        socket options # TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF8192 SO_KEEPALIVE
[NETLOGON]
        path = /var/lib/samba/netlogon
        browseable = no
        share modes = no
[PROFILES]
        path = /var/lib/samba/profiles
        browseable = no
        writeable = yes
        create mask = 0611
        directory mask = 0700
        profile acls = yes
        csc policy = disable
        map system = yes
        map hidden = yes
```


# smbldap_bind.conf の設定 
Samba のbind に関する情報を設定します。
/etc/smbldap-tools/smbldap_bind.conf ファイルを編集しますが、今回使用している環境では規定の場所にファイルが置かれていません。
ここではサンプルファイルを使用していきます。


```text:サンプルファイルの用意
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
# chown root:root /etc/smbldap-tools/smbldap_bind.conf
# chmod 600 /etc/smbldap-tools/smbldap_bind.conf
```


サンプルファイルの編集手順は割愛します。
編集した結果は以下のようになります。


```text:/etc/smbldap-tools/smbldap_bind.conf
# egrep -v '(^#|^$)' /etc/smbldap-tools/smbldap_bind.conf
masterDN#"cn=Manager,dc=mysite,dc=example,dccom"
masterPw="password2"
```


# smbldap-tools 設定ファイルの編集 
/etc/smbldap-tools/smbldap.conf ファイルを編集します。
今回使用しているdebian では規定の場所にあらかじめ置かれていないバメ、sample ファイルを利用することにします。


```text:サンプルファイルを展開する
# gunzip -c /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
# chmod 644 /etc/smbldap-tools/smbldap.conf
```


SID を取得します。後ほどこの値をsmbldap.conf ファイルに記載します。


```text:SIDの取得
# net getlocalsid
SID for domain LDAP is: S-1-5-21-2871212629-2838730456-1868381876
```


/etc/smbldap-tools/smbldap.conf ファイルを編集していきますが、細かい手順は割愛します。
編集後の各値は以下のようになります。


```text:/etc/smbldap-tools/smbldap.conf定義内容
SID="S-1-5-21-2871212629-2838730456-1868381876"
sambaDomain="MYSITE"
masterLDAP="ldap://ldap.mysite.example.com/"
ldapTLS="0"
verify="none"
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.example.com.pem"
clientkey="/etc/smbldap-tools/smbldap-tools.example.com.key"
suffix#"dc=mysite,dc=example,dccom"
usersdn#"ouUsers,${suffix}"
computersdn#"ouComputers,${suffix}"
groupsdn#"ouGroups,${suffix}"
idmapdn#"ouIdmap,${suffix}"
sambaUnixIdPooldn#"sambaDomainName${sambaDomain},${suffix}"
scope="sub"
password_hash="SSHA"
password_crypt_salt_format="%s"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
shadowAccount="1"
defaultMaxPasswordAge="45"
userSmbHome="\\PDC-SRV\%U"
userProfile="\\PDC-SRV\profiles\%U"
userHomeDrive="H:"
userScript="logon.bat"
mailDomain="mysite.example.com"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
```


# smbldap-populate を使用してOpenLDAP データベースを生成する 
smbldap-populate コマンドを実行してOpenLDAP データベースを作成します。


```text
# smbldap-populate
Populating LDAP directory for domain MYSITE (S-1-5-21-2871212629-2838730456-1868381876)
(using builtin directory structure)

entry dc#mysite,dc=example,dccom already exist. 
adding new entry: ou#Users,dc=mysite,dc=example,dccom
adding new entry: ou#Groups,dc=mysite,dc=example,dccom
adding new entry: ou#Computers,dc=mysite,dc=example,dccom
adding new entry: ou#Idmap,dc=mysite,dc=example,dccom
adding new entry: sambaDomainName#MYSITE,dc=mysite,dc=example,dccom
adding new entry: uid#root,ou=Users,dc=mysite,dc=example,dccom
adding new entry: uid#nobody,ou=Users,dc=mysite,dc=example,dccom
adding new entry: cn#Domain Admins,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Domain Users,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Domain Guests,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Domain Computers,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Administrators,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Account Operators,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Print Operators,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Backup Operators,ou=Groups,dc=mysite,dc=example,dccom
adding new entry: cn#Replicators,ou=Groups,dc=mysite,dc=example,dccom

Please provide a password for the domain root: 
Changing UNIX and samba passwords for root
New password:           # <- "pw-root
Retype new password:    # <- "pw-root
```


LDAP データベースを作成したら、smbd とnmbd を再起動します。


```text:smbdとnmbdを再起動する
# service smbd restart
# update-rc.d smbd defaults
# service nmbd restart
# update-rc.d nmbd defaults
```




# Samba ドメイングループとLinux グループのマッピング 
Samba のドメイングループとLinux のグループのマッピングを行います。
現在のSamba ドメイングループとLinux のグループのマッピングについては下記のコマンドを実行して確認します。


```text:ドメイングループとLinuxグループのマッピング確認
# net groupmap list
Replicators (S-1-5-32-552) -> 552
Domain Users (S-1-5-21-2871212629-2838730456-1868381876-513) -> 513
Domain Admins (S-1-5-21-2871212629-2838730456-1868381876-512) -> 512
Domain Guests (S-1-5-21-2871212629-2838730456-1868381876-514) -> 514
Administrators (S-1-5-32-544) -> 544
Print Operators (S-1-5-32-550) -> 550
Backup Operators (S-1-5-32-551) -> 551
Domain Computers (S-1-5-21-2871212629-2838730456-1868381876-515) -> 515
Account Operators (S-1-5-32-548) -> 548
```


上記の出力結果では、どのSamba ドメイングループもLinux のグループとマッピングしていないことがわかります。
そこで、Samba ドメイングループを以下のような規則でマッピングしていくことにします。


```text:Replicatorsドメイングループとsmb_replicatorsグループのマッピング
# groupadd -g 552 smb_replicators
```


このように他のグループについても同様に登録していきます。


```text:他のドメイングループのマッピング
# groupadd -g 513 smb_domain_users
# groupadd -g 512 smb_domain_admins
# groupadd -g 514 smb_domain_guests
# groupadd -g 544 smb_administrators
# groupadd -g 550 smb_print_operators
# groupadd -g 551 smb_backup_operators
# groupadd -g 515 smb_domain_computers
# groupadd -g 548 smb_account_operators
```


マッピングが終わった後の結果は次のようになります。


```text:マッピングの確認
# net groupmap list
Replicators (S-1-5-32-552) -> smb_replicators
Domain Users (S-1-5-21-2871212629-2838730456-1868381876-513) -> smb_domain_users
Domain Admins (S-1-5-21-2871212629-2838730456-1868381876-512) -> smb_domain_admins
Domain Guests (S-1-5-21-2871212629-2838730456-1868381876-514) -> smb_domain_guests
Administrators (S-1-5-32-544) -> smb_administrators
Print Operators (S-1-5-32-550) -> smb_print_operators
Backup Operators (S-1-5-32-551) -> smb_backup_operators
Domain Computers (S-1-5-21-2871212629-2838730456-1868381876-515) -> smb_domain_computers
Account Operators (S-1-5-32-548) -> smb_account_operators
```


# ユーザの登録 
Windows からログインできるドメインユーザを登録します。
まずは、Windows コンピュータをLinux ユーザとして登録します。
コンピュータ名を登録する場合、コンピュータ名の最後に"$" をつけて登録するようにしてください。


```text:Windowsコンピュータの登録
# useradd -M -g smb_domain_computers -s /bin/false workstation$
```


次に、そのコンピュータからログインするドメインユーザを登録します。


```text:ユーザの登録
# useradd -M saburo-suzuki
# smbldap-useradd -a -G 'Domain Users' -m -s /bin/bash -d /home/saburo-suzuki -F "" -P saburo-suzuki
Changing UNIX and samba passwords for saburo-suzuki
New password:            # <- pw-saburo-suzuki
Retype new password:     # <- pw-saburo-suzuki

# smbpasswd -e saburo-suzuki
Enabled user saburo-suzuki.
```


ドメインにマシンを参加させる権利を付与します。


```text:マシンの追加
# net sam rights grant saburo-suzuki SeMachineAccountPrivilege
Granted SeMachineAccountPrivilege to MYSITE\saburo-suzuki
```


# Windows 7 でログインテストしてみる 
## レジストリ値の変更 
既知の問題として、Windows 7 では、ドメイン認証を行う前にレジストリ値を以下のように変更する必要があります。
Windows 7 で"ファイル名を指定して実行" から"regedit" と入力し、レジストリエディタを開きます。
レジストリエディタが開いたら、下記の用にパラメータを設定します。


* 場所:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters
<table><tbody>
  </tr>
  <tr>
    <th> 変数</th>
    <th> 型</th>
    <th> 値</th>
  </tr>
  <tr>
    <td> DNSNameResolutionRequired</td>
    <td> DWORD</td>
    <td> 0</td>
  </tr>
  <tr>
    <td> DomainCompatibilityMode</td>
    <td> DWORD</td>
    <td> 1</td>
  </tr>
</tbody></table>

![SambaBackendsOpenLDAP_0001.png](https://qiita-image-store.s3.amazonaws.com/0/70152/aedcac8c-e7d0-3f4f-85e3-8fbd81ac9eac.png)


## ドメインへの参加 
※一部英語と日本語の表記が混じっています。
Windows のメニューからComputer を右クリックし、Properties をクリックします。
System ウィンドウの左側のAdvanced system settings をクリックします。
![SambaBackendsOpenLDAP_0002.png](https://qiita-image-store.s3.amazonaws.com/0/70152/859e29a6-dd1c-a855-bf19-199ba619eabe.png)


System Properties ウィンドウのChange ボタンを押下します。
![SambaBackendsOpenLDAP_0003.png](https://qiita-image-store.s3.amazonaws.com/0/70152/2b764ecc-db77-d994-af73-688b4e11d7c4.png)

Computer Name/Domain Changes ウィンドウが出てきたら、次の図の用にDomain のラジオボタンにチェックを入れ、MYSITE と入力し、OK ボタンをクリックします。
![SambaBackendsOpenLDAP_0004.png](https://qiita-image-store.s3.amazonaws.com/0/70152/88a0fdc2-0193-34b4-9018-db6dde6c92f4.png)

すると、認証ダイアログが出てくるので、先ほど登録したユーザとパスワード(saburo-suzuki/pw-saburo-suzuki)を入力してOK をクリックします。
![SambaBackendsOpenLDAP_0005.png](https://qiita-image-store.s3.amazonaws.com/0/70152/3e619866-7f46-edf6-0675-fa98616f8236.png)

しばらくして、以下のような成功のダイアログが出現してくれば認証成功です。
![SambaBackendsOpenLDAP_0006.png](https://qiita-image-store.s3.amazonaws.com/0/70152/ed9d4f44-8b35-878c-aa09-6c99b66b2640.png)

認証に成功すると、マシンの再起動が要求されるので、それに従いマシンを再起動してください。

## ドメインユーザでのログイン 
ログイン画面が出てきたら、"ユーザの切り替え" -> "その他のユーザ" をクリックし、以下の図のように"ドメイン名\ユーザ名" という形式で上段にユーザ名を入力し、そのユーザのパスワードを下段に入力してください。
![SambaBackendsOpenLDAP_0007.png](https://qiita-image-store.s3.amazonaws.com/0/70152/22f703b7-f74a-a94d-bb47-df023c3f9114.png)


正常にログインできたら、コマンドプロンプトからユーザ名を確認してみましょう。Domain ユーザの名前になっていることが確認できると思います。

```text:コマンドプロンプトからユーザの確認
> whoami
mysite\saburo-suzuki
```


# 参考 
<dl>
  <dt> Setup Samba Domain Controller with LDAP Backend in Ubuntu 13.04</dt>
  <dd> http://www.unixmen.com/setup-samba-domain-controller-with-openldap-backend-in-ubuntu-13-04/</dd>
</dl>

<dl>
  <dt> HostoForge</dt>
  <dd> https://www.howtoforge.com/centos-5.x-samba-domain-controller-with-ldap-backend</dd>
</dl>

<dl>
  <dt> Dependencies</dt>
  <dd> https://wiki.samba.org/index.php/Operating_system_requirements/Dependencies_-_Libraries_and_programs</dd>
</dl>