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
移行元でsambaとldapのファイルを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でのActive Directory構築 - OSSでLinuxサーバ構築
samba4 で active directoryしよう。 - お前の血は何色だ!! 4
Samba 4によるWindowsネットワーク構築 [移行編] - 第1回 Samba 3(NTドメイン)からの移行準備:ITpro