はじめに
今回は、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 はいい感じになっていると思う。
けど今後、まだ、どんどん進化していきそう。
とり残されないようにウォッチしていこう。