はじめに
Samba4.1 がリリースされていた。 またセットアップしてみようかなと Samba Wiki をぶらぶらしていると Samba4 の yum リポジトリを公開しているサイトを見つけた。 おぉ!これは助かる!! という訳で今回は、yum で Samba4 をしてみようと思います。 ではでは Getting Started!
yum リポジトリの設定
これがないと始まらない。 EnterpriseSamba.com というところが Samba4 yum リポジトリを公開しているようだ。 利用するためにはユーザ登録が必要になる。 このサイトの Samba のページに移動して register のリンクから Sign up を行う。 メールアドレスの確認やなんやかんやあって一通りユーザ登録が終わったら Login してみる。 ログインしたページをよ~く見ると username と accesskey が表示されているので これをしっかりメモっておく。
さて準備が整ったところで yum リポジトリの設定をします。 まず yum リポジトリを取得します。 以下のコマンドの USERNAME:ACCESSKEY の部分を 先ほどメモった username と accesskey に置き換えて実行します。
cd /etc/yum.repos.d wget https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/sernet-samba-4.1.repo
今度は、取ってきた yum リポジトリをエディタで開いて baseurl と gpgkey の USERNAME:ACCESSKEY の部分を先ほどメモった username と accesskey に置き換えて保存します。/etc/yum.repos.d/sernet-samba-4.1.repo
[sernet-samba-4.1] name=SerNet Samba 4.1 Packages (centos-6) type=rpm-md baseurl=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/ gpgcheck=1 gpgkey=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/repodata/repomd.xml.key enabled=1
最後に gpg build key の設定をして終わりです。
cd /root wget http://ftp.sernet.de/pub/sernet-build-key-1.1-4.noarch.rpm rpm -i sernet-build-key-1.1-4.noarch.rpm
インストール
といっても yum を実行するだけです。
yum install -y sernet-samba sernet-samba-ad sernet-samba-client
/var/lib/samba ディレクトリにデータファイルがインストールされていると思います。 smb.conf は /etc/samba ディレクトリに出力されるようです。 ただ、サービス名が sernet-samba-ad、sernet-samba-smbd、sernet-samba-nmbd、sernet-samba-winbindd となりソースからインストールした時と異なるのがちょっと微妙かなぁ。
PDC の構築
せっかくなので Primary Domain Controller も構築してみたいと思います。環境
OS | ContOS 6.5(CentOS-6.5-x86_64-minimal.iso) |
---|---|
Samba | 4.1.7 |
Bind | 9.8.2 |
NTP | 4.2.6p5 |
レルム | MYDOMAIN.LOCAL |
ドメイン | MYDOMAIN |
Host | pdc |
IP | 192.168.0.10 |
Gateway | 192.168.0.1 |
DNS | 127.0.0.1 |
Samba 以外の設定でハマりたくないので SELinux と iptables は止めておく。/etc/selinux/config
... SELINUX=disabled ...
service iptables stop service ip6tables stop chkconfig iptables off chkconfig ip6tables off
ネットワークの設定は次のような感じ。/etc/sysconfig/network-scripts/ifcfg-eth0
... ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.10 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 .../etc/sysconfig/network
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=pdc/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.10 pdc.mydomain.local pdc
Samba のサービスのなかで PDC で使わないものを止めておきます。
chkconfig sernet-samba-ad on chkconfig sernet-samba-smbd off chkconfig sernet-samba-nmbd off chkconfig sernet-samba-winbindd off
このあたりで再起動してみる。
reboot
セットアップに必要なライブラリは一通り yum でインストールされているのだけど Bind と NTP がインストールされていないので追加します。 Kerbors のコマンド類もインストールされていないのでそれも追加します。 NTP も signed ntp が サポートされたものが yum で提供されているようなので 合わせてインストールします。
yum install -y bind ntp krb5-workstation
サービスの起動設定をしておく。
chkconfig named on chkconfig ntpd on
では、ドメインコントローラーの設定します。 まず、Samba が Active Directory モードで起動するように sernet-samba ファイルを編集します。/etc/default/sernet-samba
... SAMBA_START_MODE="ad" ...
smb.conf などドメインコントローラーに必要なファイル一式を出力します。
samba-tool domain provision \ --use-rfc2307 \ --function-level=2008_R2 \ --use-ntvfs \ --realm=MYDOMAIN.LOCAL \ --domain=MYDOMAIN \ --server-role=dc \ --dns-backend=BIND9_DLZ \ --adminpass 'passwd-123'
--use-ntvfs
--function-level=2008_R2 にした場合 --use-ntvfs オプションも必要になるみたいです。
出力された smb.conf をチェックする。
testparm
smb.conf は以下のような感じ。/etc/samba/smb.conf
[global] workgroup = MYDOMAIN realm = MYDOMAIN.LOCAL netbios name = PDC server role = active directory domain controller server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc idmap_ldb:use rfc2307 = yes winbind use default domain = yes template shell = /bin/bash [netlogon] path = /var/lib/samba/sysvol/fummy.local/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No
Kerberos の設定ファイルが出力されているので差し替える。
mv /etc/krb5.conf /etc/krb5.conf.original cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
krb5.conf は以下のような感じ。
/etc/krb5.conf[libdefaults] default_realm = MYDOMAIN.LOCAL dns_lookup_realm = false dns_lookup_kdc = true
Bind の設定は次のような感じ。 ソースからインストールした時と変わらないのだけど ファイル Path が違っているのでそのあたりを確認する。/etc/named.conf
options { ... listen-on port 53 { any; }; ... allow-query { any; }; ... tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab"; }; ... include "/var/lib/samba/private/named.conf";
dns.keytab の権限の設定をする。
chgrp named /var/lib/samba/private/ chgrp named /var/lib/samba/private/named.conf chmod g+r /var/lib/samba/private/dns.keytab chown -R named:named /var/lib/samba/private/dns
/etc/rndc.key を生成する。
rndc-confgen -a -r /dev/urandom
resolv.conf の設定をする。/etc/resolv.conf
domain mydomain.local nameserver 127.0.0.1
Samba4、Bindを再起動する。
service sernet-samba-ad start service named restart
ここで NTP の設定もしておこう。 ここもソースからインストールした時と変わらないのだけど ntp_signd ディレクトリの Path が違っているのでそのあたりを確認する。/etc/ntp.conf
server 127.127.1.0 fudge 127.127.1.0 stratum 10 server 0.pool.ntp.org iburst prefer server 1.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd restrict default kod nomodify notrap nopeer mssntp restrict 127.0.0.1 restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
NTP との連動ために ntp_signd ディレクトリの権限を変更する。 時刻合せした後、NTP を起動する。
chmod 750 /var/lib/samba/ntp_signd ntpdate ntp.nict.jp service ntpd start
DNS を更新する。
samba_dnsupdate --verbose --all-names
更新した DNS の設定を確認する。 not found: 3(NXDOMAIN) とかが返ってこないことを確認する。
host -t SRV _ldap._tcp.mydomain.local. host -t SRV _kerberos._udp.mydomain.local. host -t A pdc.mydomain.local.
Kerberos のチケットを一旦クリアした後、初期化と確認をします。 administrator@MYDOMAIN.LOCAL のパスワードは今回の場合、passwd-123 になります。
kdestroy kinit administrator@MYDOMAIN.LOCAL klist
とりあえず以下のコマンドで ログインできれば設定は OK だ。
smbclient //localhost/netlogon -U administrator
以下のようにして administrator のパスワードの期限を無効にしておく方が検証には便利かも?
samba-tool user setexpiry --noexpiry administrator
ドメインユーザを追加してログインしてみる。 Windows からだとこの状態でもログインできるのだけれども CentOS からだと、もうすこし設定が必要だ。 Winbind を使ってドメインユーザがログインできるように PAM の設定する。
LANG=en_US.UTF-8 authconfig --enablewinbindauth --update LANG=en_US.UTF-8 authconfig --enablemkhomedir --update
authconfig について
authconfig コマンドで Winbind の PAM 設定をすると 「サービス winbind に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません winbind: 認識されていないサービスです。 error reading information on service winbind: No such file or directory winbind: unrecognized service」 というようなエラーメッセージが表示されると思います。 原因はきっと winbind のサービス名が sernet-samba-winbindd になっているからだと思います。 なので sernet-samba-winbindd のサービス名を winbind に変更して authconfig を実行してみると 今度は「sernet-samba ファイルの SAMBA_START_MODE の設定を ad から classic に変更してほしい」的な 警告が出ます。 エラーメッセージや警告は出るものの PAM 設定自体はできている。 また、Samba AD にした場合、Winbind そのものを使う訳でもない。 この辺りは PAM 設定でなく yum のパッケージング(winbind の起動スクリプト?)の問題だと思う。 エラーメッセージや警告が気になるからといって PAM を手動で設定するのはちょっと… またいつの日にかこの問題が解消されることを期待しましょう。
nsswitch.conf を以下のように編集して/etc/nsswitch.conf
... passwd: compat winbind shadow: files group: compat winbind ...
ドメインユーザを追加したら
samba-tool user add user01
ドメインログイン!!!
ssh user01@pdc
administrator でドメインログイン
やっぱり administrator は ssh で 自身の PDC に CentOS からドメインログインできなかった。 普通に追加したドメインユーザであればログインはできるのに。 まぁこれはこんなもんなんだろう。
Member Server の構築
Member Server も構築してみたいと思います。 先ほど構築した PDC にドメイン参加する形になります。環境
OS | ContOS 6.5(CentOS-6.5-x86_64-minimal.iso) VMware Player 6.0.2 |
---|---|
Samba | 4.1.7 |
Bind | 9.8.2 |
NTP | 4.2.6p5 |
レルム | MYDOMAIN.LOCAL |
ドメイン | MYDOMAIN |
Host | mbr01 |
IP | 192.168.0.100 |
Gateway | 192.168.0.1 |
DNS | 192.168.0.10 |
PDC の時と同様に SELinux と iptables は一旦止めておいた方がハマらないと思う… ネットワークの設定は次のような感じ。/etc/sysconfig/network-scripts/ifcfg-eth0
... ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.100 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 .../etc/sysconfig/network
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=mbr01/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.100 mbr01.mydomain.local mbr01
DNS は PDC のものを利用しようと思うので DNS を PDC に設定する。/etc/resolv.conf
domain mydomain.local nameserver 192.168.0.10
ipv6 を無効化しておきます。 以下のような内容で disable-ipv6.conf を作成します。/etc/modprobe.d/disable-ipv6.conf
options ipv6 disable=1
ipv6 の無効化
ドメイン参加時に 「print_kdc_line: can't resolve name for kdc with non-default port [::]. Error 名前またはサービスが不明です」的なエラーメッセージは出るものの ipv6 を無効にしなくてもドメイン参加はできているようです。
Samba のサービスのなかで Member Server で使わないものを止めておきます。
chkconfig sernet-samba-ad off chkconfig sernet-samba-smbd off chkconfig sernet-samba-nmbd off chkconfig sernet-samba-winbindd on
ここで一度、再起動する。
reboot
追加で必要なライブラリをインストールする。
yum install -y ntp krb5-workstation
サービスの起動設定をしておく。
chkconfig ntpd on
今回の Member Server では Bind を使わないのでインストールしている場合は OFF っておいてください。
まずは、Kerberos の設定から行います。
mv /etc/krb5.conf /etc/krb5.conf.original
以下のような内容で krb5.conf を作成します。/etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYDOMAIN.LOCAL dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h forwardable = yes [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
Kerberos のチケットをクリアしてから初期化と確認をします。 administrator@MYDOMAIN.LOCAL のパスワードは今回の場合、passwd-123 になります。
kdestroy kinit administrator@MYDOMAIN.LOCAL klist
では Member Server の設定をします。 きっと Winbind を使うことになりそうなので Samba が Classic モードで起動するように sernet-samba ファイルを編集します。/etc/default/sernet-samba
... SAMBA_START_MODE="classic" ...
smb.conf は以下のような感じ。/etc/samba/smb.conf
[global] netbios name = MBR01 workgroup = MYDOMAIN security = ads realm = MYDOMAIN.LOCAL encrypt passwords = yes idmap config *:backend = tdb idmap config *:range = 70001-80000 idmap config MYDOMAIN:default = yes idmap config MYDOMAIN:backend = rid idmap config MYDOMAIN:range = 10000 - 19999 winbind nss info = rfc2307 winbind trusted domains only = no winbind use default domain = yes winbind enum users = yes winbind enum groups = yes template shell = /bin/bash
ドメインに参加します。
net ads join -U administrator
DNS を確認しておきます。
dig mbr01.mydomain.local
samba-tool について
Setup_a_Samba_AD_Member_Server によると samba-tool コマンドを使った Member Server のドメイン参加は、まだ未対応のようで 現段階では、traditional な方法でのセットアップになるみたいだ。
以下のように smb.conf など Member Server に必要なファイル一式を出力するとか
samba-tool domain provision \ --realm=MYDOMAIN.LOCAL \ --domain=MYDOMAIN \ --server-role=member \ --dns-backend=NONE \ --adminpass 'passwd-123'
以下のようにしてドメイン参加もできないみたいだ。
samba-tool domain join mydomain.local MEMBER \ -U administrator \ --password=passwd-123 \ --realm=mydomain.local
NTP の設定もしておこう。/etc/ntp.conf
server 127.127.1.0 fudge 127.127.1.0 stratum 10 server pdc.mydomain.local iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp restrict default ignore restrict 127.0.0.1 restrict pdc.mydomain.local mask 255.255.255.255 nomodify notrap nopeer noquery
設定が終わったら時刻合せをして Winbind、NTP を起動する。
ntpdate ntp.nict.jp service ntpd start service sernet-samba-winbindd start
ドメインユーザを追加してログインできるか確かめてみる。 Winbind の PAM を設定することになるのだけど この状態で authconfig を使うとサービス名が違うたら無いたらふぅたらいわれる。 別に設定はできるので問題ないと思うのだが うるさいと感じる場合はサービス名を変更してしまう。
service sernet-samba-winbindd stop cd /etc/rc.d/init.d cp sernet-samba-winbindd winbind chkconfig --del sernet-samba-winbindd chkconfig --add winbind chkconfig winbind on chkconfig --list service winbind start
静になったところで Winbind の PAM の設定する。
LANG=en_US.UTF-8 authconfig --enablewinbindauth --update LANG=en_US.UTF-8 authconfig --enablemkhomedir --update
nsswitch.conf を以下のように編集したら/etc/nsswitch.conf
... passwd: compat winbind shadow: files group: compat winbind ...
あとは PDC 側でドメインユーザを追加したら
ssh root@pdc samba-tool user add user02
ログインして Member Server に戻ってこれればとりあえず OK だ。
ssh user02@mbr01
おわりに
微妙なところ(サービス名など)もあったが yum を使うと格段にセットアップが楽になった。 検証用には十分楽しめると思う。 しかし実運用となると MS AD を使いたいというのが本音か?!