以前から気になっていましたSOHO用Sambaサーバーを構築してみます。Ubuntu14.04LTSでは、Samba4.1.6が搭載されており、こちらはSamba3/4双方に対応しているようです。SOHO用ならSamba3で充分ですが、何となく古い。ということで、Samba3はNTドメイン用のドメイン・コントローラー(DC)、Samba4はアクディブ・ディレクトリ用のDCの構築に挑戦してみました。ADDCの構築にあたっては、Samba内蔵DNSはあまり実績を聞かないので、既存のBIND9を使って構築してみました。
※本投稿記事につきましては、Sambaのオリジナル・パッケージ版とコンパイル版が混じって分かりにくくなっています。後ほど、コンパイル版で、①内蔵DNSを使う場合②フラットファイルを使う場合−をそれぞれ投稿しますので、この投稿記事は無視してください。大変、失礼いたしました。
【1】環境
【2】NT DCの構築
NT DCの構築については特記すべき点があり、Windows7ではレジストリへのキーの追加が必要だということです。詳細はこちらのサイト(slashdot.jp/のサイト)に記してありますから、踏襲すればよいです。そのうえで、高橋元信さんの「Samba実践入門」を参考にしました。$ apt-get install samba samba-common smbclientで関係ソフトをインストールした上で、/etc/sambaのsmb.confをsmb-original.confに名前変更。
そのうえで、次のようなsmb.confを書きました。
[global] dos charset = CP932 unix charset = UTF-8 workgroup = IT-ISHIN.COM # workgroup = SAMBA security = user domain logons = yes passdb backend = tdbsam encrypt passwords = yes os level = 32 domain master = auto prefered master = auto local master = yes # Setting of Wins Server wins support = yes # auto creation of UNIX user add machine script = /usr/sbin/useradd -d /dev/null -s /bin/false %u # Setting of Management User admin users = Administrator # Effective User Manager add user script = /usr/sbin/useradd -m '%U' delete user script = /usr/sbin/userdel -r '%U' rename user script = /usr/sbin/usermod -l '%unew' '%old' add group script = sh -c "/user/sbin/groupadd '%g';getent group '%g' | awk -f: '{print \$3}'" delete group script = /usr/sbin/groupdel '%g' add user to group script = /usr/bin/gpasswd -a '%u' '%g' delete user from group script = /usr/bin/gpasswd -d '%u' '%g' set primary group script = /usr/sbin/useradd -g '%g' '%u' # Synchronization unix password sync = yes pam password change = yes [neglogon] comment = Net Logon Share path = /var/lib/samba/netlogon browseable = yes # writeable = no writeable = yes write list = @Administrators [public] path = /var/lib/samba/public writeable = yes profile acls = yes
こうしておいて、VirtualBox上のWindows7 ProfesssionalをNT DCに参加させればよいです。次の図のように入力すると良いです(後ほど、追加)。
【3】AD DCの構築
まず、大事なことはKVM関係のパッケージを一掃しておきます。理由は良く分かりませんが、NT_STATUSなんとかエラーというのが頻発してしまいます。
(1)AD DC構築の前に
うまく行かない場合に備えて、Samba3の設定をバックアップしておくべです。Sambaの設定ファイルは、/etc/samba, /var/lib/sambaディレクトリに作成されますので、/etc/samba3、/var/lib/samba3を作成し、そちらに $ sudo cp -a /etc/samba/* /etc/samba3/、そして、$sudo cp -a /var/lib/samba/* /var/lib/samba3としてバックアップをとっておきましょう。なお、Sambaの再インストールはsynapticを使って、設定ファイルごと削除する必要があります。コマンドラインでやるなら、$ apt-get purge samba samba-commonということになるでしょうか。
次に、必要と思われるパッケージをインストールしておきます。
libattr1-dev libacl1-dev python-dev krb5-user dnsutils libpopt-dev
krb5-userのインストール時に、レルム名とケルベロス関係のサーバー名2つを聞かれますが、レルム名はit-ishin.com、サーバー名はいずれもubuntu01.it-ishin.comとしておきました。なお、krb5-admin-server、krb5-kdc、krb5-configも入れましたが、Samba4をコンパイルしてインストールした際には、インストールしてません。恐らく、要らないと思いますが、Kerberos認証とかOpenldapについて時間をとって勉強してみます。まあ、Linuxはイントラネット構築のシステムとしても強力なんですね。(^^ゞ。
(2)samba-tool domain provisionの実行(BIND9_FLATFILEの選択)
$ sudo samba-tool domain provisionで、いろいろ設定してくれます。良くは分かりませんが、レルム名でDNSドメイン名のit-ishin.com、ドメイン名はそのままエンター、DNSはInternalではなく、BIND9_FLATFILEを選択します。なお、/etc/samba/smb.confを/etc/samba/smb-original.confなどに変更しておきませんと、スクリプトの実行がストップします。それと、samba-toolではAD DCの機能レベルは2003くらいに固定されますので、少なくとも2008R2レベルまで引き上げる必要があります。後述予定。
(3)実行結果
重要なのは、スクリプトが生成する/var/lib/sambaの中身です。/var/lib/samba/private以下が、環境ごとに生成される独自ファイルです。sudo root:bind chown -R /var/lib/samba/private/dnsでbindがアクセスできるようにしておく必要があります。
michiaki@ubuntu01:/var/lib/samba$ tree . ├── account_policy.tdb ├── group_mapping.tdb ├── ntp_signd [error opening dir] ├── printers │ ├── COLOR │ ├── IA64 │ ├── W32ALPHA │ ├── W32MIPS │ ├── W32PPC │ ├── W32X86 │ ├── WIN40 │ └── x64 ├── private │ ├── dns │ │ └── it-ishin.com.zone │ ├── dns.keytab │ ├── dns_update_list │ ├── hklm.ldb │ ├── idmap.ldb │ ├── krb5.conf │ ├── ldap_priv [error opening dir] │ ├── ldapi │ ├── named.conf │ ├── named.conf.update │ ├── named.txt │ ├── passdb.tdb │ ├── privilege.ldb │ ├── randseed.tdb │ ├── sam.ldb │ ├── sam.ldb.d [error opening dir] │ ├── schannel_store.tdb │ ├── secrets.keytab │ ├── secrets.ldb │ ├── secrets.tdb │ ├── share.ldb │ ├── smbd.tmp │ │ └── msg [error opening dir] │ ├── spn_update_list │ └── tls [error opening dir] ├── public ├── registry.tdb ├── share_info.tdb ├── sysvol [error opening dir] ├── usershares [error opening dir] ├── var ├── winbindd_privileged [error opening dir] ├── wins.dat └── wins.tdb 22 directories, 26 files
次に/et/samba/smb.confの中身です。
# Global parameters [global] workgroup = IT-ISHIN realm = IT-ISHIN.COM netbios name = UBUNTU01 server role = active directory domain controller server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate [netlogon] path = /var/lib/samba/sysvol/it-ishin.com/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No [public] path = /var/lib/samba/public read only = No
最後の[public]は自分で付け加えました。