はじめに
今回は、Member Server を構築したいと思います。
そして
『Samba4 で Active Directory / PDC編- わたしもやってみた -』
で構築した
Primary Domain Controller に CentOS をドメイン参加させたいと思います。
ドメインコントローラーから見るとコンピューターアカウントになります。
前提としては、 Primary Domain Controller の構築が終わっていること
そして Samba4 と Bind のインストール、NTP の時間合わせが済んでいることとします。
まだの場合は、
『Samba4 で Active Directory / インストール編 - わたしもやってみた -』
を参考に
Samba4 HOWTO にある
Domain_Member をベースに
先人の方々の情報も踏まえつつ、わたしもやってみたいと思います。
ではでは Getting Started!!
環境
Domain| レルム | MYDOMAIN.LOCAL |
|---|---|
| ドメイン | MYDOMAIN |
Primary Server
| OS | ContOS 6.4(CentOS-6.4-i386-minimal.iso) |
|---|---|
| Samba | 4.0.5 |
| Bind | 9.8.2 |
| NTP | ntp-4.2.6p5 |
| Host | pdc |
| IP | 192.168.0.10 |
| Gateway | 192.168.0.1 |
| DNS | 127.0.0.1 |
Member Server
| OS | ContOS 6.4(CentOS-6.4-i386-minimal.iso) VMware Player 5.0.2 |
|---|---|
| Samba | 4.0.5 |
| Bind | 9.8.2 |
| NTP | ntp-4.2.6p5 |
| Host | mbr01 |
| IP | 192.168.0.100 |
| Gateway | 192.168.0.1 |
| DNS | 192.168.0.10 |
環境設定
ネットワークを設定する。
まず IP の設定
/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
そして IP とホスト名の関連付け
/etc ディレクトリにある hosts ファイルを以下のように変更する。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.100 mbr01 mbr01.mydomain.local
今回は Primary Server の DNS を利用しようと思うので Bind を止めておく。
service named stop chkconfig named off
そして DNS を Primary Server に設定する。
/etc ディレクトリにある resolv.conf を以下のように変更する。
domain mydomain.local nameserver 192.168.0.10
ここで一度、再起動する。
reboot
ホスト名と IP 確認する。
hostname ping mbr01 ping mbr01.mydomain.local
Kerberos の設定
Kerberos の設定ファイル krb5.conf を差し替える。
とりあえず、今の設定をバックアップして
mv /etc/krb5.conf /etc/krb5.conf_org
そして以下のような内容で /etc ディレクトリに 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
}
ここで ログインと チケットの一覧を確認しておく。
administrator のパスワードは、 Primary Domain Controller 構築の時に
samba-tool domain provision で指定したものになる。
kinit administrator@MYDOMAIN.LOCAL klist
Samba4 の設定
Member Server の設定をする。
とりあえず、samba-tool domain provision を使って
smb.conf を生成することにした。
/usr/local/samba/etc ディレクトリに smb.conf が無いことを確認する。
有れば削除する。
では、以下のコマンドで、smb.conf を生成します。
/usr/local/samba/bin/samba-tool domain provision\ --realm=MYDOMAIN.LOCAL \ --domain=MYDOMAIN \ --server-role=member \ --dns-backend=NONE \ --adminpass 'passwd-123'
生成された smb.conf を以下のように変更する。
/usr/local/samba/etc/smb.conf[global] workgroup = MYDOMAIN security = ads realm = MYDOMAIN.LOCAL encrypt passwords = yes netbios name = MBR01 server role = member server passdb backend = samba_dsdb server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate idmap config *:backend = tdb idmap config *:range = 70001-80000 #idmap config MYDOMAIN:backend = ad #idmap config MYDOMAIN:schema_mode = rfc2307 #idmap config MYDOMAIN:range = 500-40000 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 homedir = /home/%U template shell = /bin/bash
- idmap config MYDOMAIN:backend = rid
-
RID で id と gid のマップングをすることにした。
MYDOMAIN ユーザの id と gid は、10000 ~ 19999 の範囲に
それ以外は、70001 ~ 80000 の範囲にマップングするようにした。 - template homedir = /home/%U
-
Samba4 をドメインコントローラーで構成した場合、
%U がユーザ名に展開されず、/home ディレクトリ 直下に %U ディレクトリができしまったのだけど
Member Server の場合、これが問題なく展開された。
ユーザディレクトリは /home 以下に生成されます。
今回は、Samba4 を使わず Winbind を使うことになりそうなので
Samba4 を止めておく。
service samba4 stop
Member Server として、Samba4 を構成する場合、
直接 winbind を使うことになるようだ。
ソースは、Samba4 のものをビルドしているけど
これって Samba3 なの?
最後に Member Server としてドメイン参加する。
/usr/local/samba/bin/net ads join -U administrator
Winbind の設定
モジュールをコピーする。
cp /usr/local/samba/lib/libnss_winbind.so /lib ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2 ln -s /usr/local/samba/lib/security/pam_winbind.so /lib/security ldconfig
この状態で authconfig を実行すれば Winbind の PAM 関連のファイルがいい感じに更新される。
authconfig --enablewinbindauth --update
もう一点、初回ログイン時にホームディレクトリが自動作成されるに authconfig しておく。
authconfig --enablemkhomedir --update
nsswitch.conf を編集する。
/etc ディレクトリにある nsswitch.conf を以下の部分を変更する。
... passwd: compat winbind group: compat winbind ...
やっぱり、起動スクリプトは、ほしいということで
yum でインストールされる samba 3.6.9 の Winbind の起動スクリプトを元に作成した。
変更したところは、smb.conf と winbindd のパスになる。
/etc/rc.d/init.d ディレクトリに 以下のような内容でファイルを作成し winbind の名前で保存する。
#!/bin/sh
#
# chkconfig: - 27 73
# description: Starts and stops the Samba winbind daemon
# #
# pidfile: /var/run/winbindd.pid
# config: /usr/local/samba/etc/smb.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Avoid using root's TMPDIR
unset TMPDIR
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1
# Check that smb.conf exists.
[ -f /usr/local/samba/etc/smb.conf ] || exit 6
[ -f /etc/sysconfig/samba ] && . /etc/sysconfig/samba
RETVAL=0
start() {
KIND="Winbind"
echo -n $"Starting $KIND services: "
daemon /usr/local/samba/sbin/winbindd "$WINBINDOPTIONS"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/winbindd || RETVAL=1
return $RETVAL
}
stop() {
echo
KIND="Winbind"
echo -n $"Shutting down $KIND services: "
killproc winbindd
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/winbindd
echo ""
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading smb.conf file: "
killproc winbindd -HUP
RETVAL=$?
echo
return $RETVAL
}
rhstatus() {
status winbindd
return $?
}
# Allow status as non-root.
if [ "$1" = status ]; then
rhstatus
exit $?
fi
# Check that we can write to it... so non-root users stop here
[ -w /usr/local/samba/etc/smb.conf ] || exit 4
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/winbindd ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}"
exit 2
esac
exit $?
サービスに登録しておく。
chmod 755 /etc/rc.d/init.d/winbind chkconfig --add winbind chkconfig winbind on
Samba4 を Member Server として構成しファイル、プリンタ共有をする場合、
smbd と nmbd を直接使うことになるようだ。
うむむ… ここまでくると、Member Server の場合は、
yum で samba3 をインストールする方が無難なのか?
CentOS でドメインログイン
まず、Winbind を起動する。
service winbind start
とりあえず、ドメインユーザとグループを確認しておこう。
/usr/local/samba/bin/wbinfo -u /usr/local/samba/bin/wbinfo -g
では!ドメインログイン!!
ssh administrator@mbr01
uid と gid のマッピングはキャッシュされるようで
マッピングを変えてもすぐに反映されない。
そんな時は、以下のようにキャッシュを確認して
/usr/local/samba/bin/net cache list
そして、削除!
/usr/local/samba/bin/net cache flush
おわりに
なんだかんだで Samba4 はいい感じになっていると思う。
けど今後、まだ、どんどん進化していきそう。
とり残されないようにウォッチしていこう。