〔備忘録〕 Samba4 Active Directory on Ubuntu 16.04

Ubuntu 16.04 に Samba4 (最新版でソースコードのビルドを含む)をインストールしたときのメモ。


(1) Samba4 のインストール

基本的には、Samba wiki (https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller#Installation) に記載されている手順のとおりです。

まずは、静的な IP アドレスを設定し、/etc/hosts にホスト名とIPアドレスの対応を記載します。
静的アドレスの設定は、 以下のように /etc/network/interfaces に設定します。
iface enp0s3 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.254
dns-nameservers 192.168.0.1 192.168.0.254
dns-search local.***.mydns.jp

注)dns-nameservers には Samba4 を起動する自身のIPアドレスを追加しておきます。

また、上記のように NIC に静的IPを割り当てたら、/etc/hosts には以下のように記載します。
192.168.0.1 dc.local.***.mydns.jp dc

Samba でCIFSファイル共有をする場合には、 /etc/fstab にオプションを追加しておきます。
/dev/sda1 / ext4 errors=remount-ro,defaults,barrier=1 0 1
※ 一応、https://wiki.samba.org/index.php/Operating_system_requirements/File_system_support#Testing_your_filesystem のテストはしておくように。

次に、Samba wiki の Operating system requirements (https://wiki.samba.org/index.php/Operating_system_requirements/Dependencies_-_Libraries_and_programs#Debian_.2F_Ubuntu) に従って、build 環境を準備します。

準備ができたら、 Samba wiki Build from samba source (https://wiki.samba.org/index.php/Build_Samba_from_source#Introduction) を参考にビルドします。
ビルド手順はおおよそ以下のとおりです。

  • source のダウンロード
  • tar ball の展開
  • configure の実行
  • make
  • make install

上記の場合、samba4 一式は、 /usr/local/samba の下にインストールされますので、
PATH に /usr/local/samba/sbin:/usr/local/samba/bin を追加する等、実行できるように環境を整えます。

次に、Active Directory Controller にするための設定= Provisioninig (https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller#Provisioning_the_Samba_Active_Directory) を行います。
# samba-tools domain provision --use-rfc2307 --interactive
Realm [LOCAL.***.MYDNS.JP]: LOCAL.***.MYDNS.JP
Domain [LOCAL]: LOCAL
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.0.254]: 192.168.0.254
Administrator password: Passw0rd
Retype password: Passw0rd

interactive モードで provisioning すると、Realm名, NT Domain名, Server Role, DNS backend, DNS forwarder, Administrator のパスワードを問われるので、適切に入力します。
(ほとんどデフォルトのままでOKでした。)

設定ファイル(/usr/local/samba/etc/smb.conf) ができたら、Samba wiki Testing your samba domain controller (https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller#Testing_your_Samba_Domain_Controller) を参考に、手動で Samba を起動し、テストします。


(2) 自動起動スクリプトの用意と設定

テストで問題がなければ、自動起動スクリプトを用意します。
Ubuntu 16.04 では、System Init Deamon として systemd が採用されていますので、
以下の内容を /etc/systemd/system/samba.service として保存します。
参考サイト: http://wiki.eri.ucsb.edu/stadm/AD_Samba4_Centos_7#Adding_Samba_to_Systemd
[Unit]
Description=Samba4 Active Directory
After=network.target syslog.target

[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba

[Install]
WantedBy=multi-user.target

スクリプトを用意したら、以下のコマンドを実行して、自動起動するように設定します。
# systemctl enable samba

OSを再起動して、samba が起動されていれば、完了です。