huruyosi’s blog

プログラミングとかインフラとかのメモです。

samba3からsamba4へ移行 samba編

インストール

samba4

$ sudo yum install -y gcc libacl-devel libblkid-devel gnutls-devel    readline-devel python-devel gdb pkgconfig krb5-workstation    zlib-devel setroubleshoot-server libaio-devel    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
$ sudo yum install -y docbook-style-xsl libxslt openldap-devel pam-devel perl
$ cd /usr/local/src
$ sudo wget http://ftp.samba.org/pub/samba/stable/samba-4.1.13.tar.gz
$ sudo tar xvfz samba-4.1.13.tar.gz
$ cd samba-4.1.13
$ sudo ./configure ; make
$ sudo make install
$ /usr/local/samba/sbin/samba -V
Version 4.1.13

ntpサーバ

$ sudo yum install -y ntp

sambaの設定

既存環境のSIDを確認する

移行元のsamba3でSIDを確認する

net getdomainsid
SID for local machine PDCSV is: S-1-5-21-XXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX
SID for domain TESTDOMAIN is: S-1-5-21-XXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX

移行元でldapデータのバックアップを取得する

# /usr/sbin/slapcat -l /tmp/samba-backup.ldif

移行元でsambaldapのファイルをtarにまとめて、移行先に持っていく

# service samba stop
# cd /
# tar cvfz /tmp/samba3-to-samba4.tgz var/lib/samba etc/samba/smb.conf tmp/samba-backup.ldif etc/openldap
# scp /tmp/samba3-to-samba4.tgz 192.168.11.12:/tmp

移行先でldiffからAdministratorとGustを

$ cd /usr/local/src
$ sudo mv /tmp/samba3-to-samba4.tgz .
$ sudo mkdir samba3-to-samba4
$ sudo tar xvfz samba3-to-samba4.tgz -C samba3-to-samba4
$ vi samba3-to-samba4/tmp/samba-backup.ldif
uid=Administratorとuid=Guestのエントリーを削除する

移行のためにldapサーバを起動し、ldifのデータを投入する

$ sudo yum install openldap-servers openldap-clients
$ sudo mv /etc/openldap /etc/openldap.save
$ sudo mv /usr/local/src/samba3-to-samba4/etc/openldap /etc/openldap
$ sudo slapadd -wvl /usr/local/src/samba3-to-samba4/tmp/samba-backup.ldif
$ sudo chown -R ldap:ldap /var/lib/ldap/
$ sudo chgrp ldap /etc/openldap/slapd.conf
$ sudo /usr/sbin/slapd -u ldap

ldapのデータ投入を確認する。
$ ldapsearch -x -W -D cn=Manager,dc=local,dc=example,dc=co,dc=jp
Enter LDAP Password:パスワード[enter]

slapdが起動しない場合には -d オプションを指定してデバッグログを表示し、原因を判断する。
$ sudo /usr/sbin/slapd -u ldap -d 1

samba-toolでsamba4の設定を行う

$ sudo /usr/local/samba/bin/samba-tool domain classicupgrade --dbdir=/usr/local/src/samba3-to-samba4/var/lib/samba/private --use-xattrs=
yes --realm=example.co.jp --dns-backend=BIND9_DLZ --use-ntvfs /usr/local/src/sa
mba3-to-samba4/etc/samba/smb.conf

firewallのポートを開放する

$ sudo firewall-cmd --zone=public --permanent --add-service=samba
$ sudo firewall-cmd --zone=public --permanent --add-service=kerberos
$ sudo firewall-cmd --zone=public --permanent --add-service=dns
$ sudo firewall-cmd --zone=public --permanent --add-service=ntp
$ sudo firewall-cmd --zone=public --permanent --add-service=ldap
$ sudo firewall-cmd --reload

確認

openldapを停止する

移行のために起動したopenldapのサーバを停止する。
$ ps -ef |grep slap
$ sudo kill -9 slapのpid

sambaを起動する

$ sudo /usr/local/samba/sbin/samba -D

ps でsamba プロセスが起動しているのを確認する。プロセスが起動していない場合には /usr/local/samba/var/log.samba のログファイルを見て原因を探す。ldapのサーバを止め忘れると下のメッセージが表示されていた。

 [2014/10/26 23:09:40.878337,  0] ../source4/smbd/service_task.c:35(task_server_terminate)
  task_server_terminate: [Failed to startup ldap server task]
  STATUS=daemon 'samba' finished starting up and ready to serve connectionssamba_terminate: Failed to startup ldap server task

sambaにアクセスして移行元の情報と比較する

$ sudo /usr/local/samba/bin/net getdomainsid
SID for domain TESTDOAMIN is: S-1-5-21-XXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX

$ /usr/local/samba/bin/samba-tool user list
ユーザの一覧が表示される

netlogonしてみる

$ /usr/local/samba/bin/smbclient -L localhost -U%

Domain=[TESTDOAMIN] OS=[Unix] Server=[Samba 4.1.13]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service
Domain=[TESTDOAMIN] OS=[Unix] Server=[Samba 4.1.13]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

 

 sambaでアクセスした時の共有の一覧が表示される。

$ sudo /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'

Enter Administrator's password:
Domain=[TESTDOAMIN] OS=[Unix] Server=[Samba 4.1.13]
  .                                   D        0  Mon Nov  3 12:37:35 2014
  ..                                  D        0  Mon Nov  3 12:37:35 2014

                54864 blocks of size 131072. 39791 blocks available

 パスワードは provisionを実行したときに表示されていた。「Admin password」の値。再設定する場合には

$ sudo /usr/local/samba/bin/smbpasswd Administrator

を行い、任意のパスワードに変更する。

 

kerberos認証を試す

$ kinit administrator@TESTDOMAIN.EXAMPLE.CO.JP

Password for administrator@TESTDOAMIN.EXAMPLE.CO.JP:
Warning: Your password will expire in 89 days on 2015年02月01日 12時01分17秒

パスワードはnetlogonで入力したものと同じ。

$ klist

Ticket cache: KEYRING:persistent:1000:1000
Default principal: administrator@TESTDOAMIN.EXAMPLE.CO.JP

Valid starting       Expires              Service principal
2014-11-03T12:03:22  2014-11-03T22:03:22  krbtgt/TESTDOAMIN.EXAMPLE.CO.JP@TESTDOAMIN.EXAMPLE.CO.JP
        renew until 2014-11-10T12:03:17

KerberosのDBが無いって言われる

kinitを実行すると下のエラーメッセージが出る場合には sambaの設定を疑う

kinit: Server not found in Kerberos database while getting initial credentials

/usr/local/samba/etc/smb.conf の realm と kinit の引数に指定した レルムが同じであることを確認する。

 

sambaデバッグモードで動作させる

思い通りに動かない / 原因が分からない 場合には 一時的に デバッグモードで起動する。

$ sudo /usr/local/samba/sbin/samba -d 1 -i -M single

オプション -d の値はログレベル。数字を大きくすると、より詳細なエラーメッセージを得られる。が、相応にログの量も増える

参考にしたサイト

samba4 - Chaperone

Samba4でのActive Directory構築 - OSSでLinuxサーバ構築


samba4 で active directoryしよう。 - お前の血は何色だ!! 4


Samba 4によるWindowsネットワーク構築 [移行編] - 第1回 Samba 3(NTドメイン)からの移行準備:ITpro