過去ページです
sambaをご覧下さい


本家様 https://wiki.samba.org/index.php/Main_Page

SAMBA4でActiveDirectoryドメインコントローラを作ってwindowsPCを参加させ、Linuxマシンも参加させて
ユーザアカウント/パスワード、ホームディレクトリらを一元管理することを目的とする。
OSはCentOS6.5を使用。yum installで導入できたら嬉しいのだが、現在該当するyumパッケージ samba4-dc には
ドメインコントローラの機能は含まれていない。

*CentOS7からsambaにドメインコントローラの機能が含まれる予定参照

ここではソースからコンパイルしてsamba4を作ります。

結論:基本的にsamba4ADDCを中心にwindowsクライアントとLinuxのアカウント/パスワードを一元管理できる。
ホームディレクトリの共有も可能で、ファイルをwindowsマシンからLinuxマシンへと転送も不要かと。
GPOも(一部?)使えます。ADには関係ないけどボリュームシャドーコピーサービス(vss)も使えます。
でもお金に余裕があるならwindowsServerを導入した方が宜しいかも。

以前のページ samba4/140321,samba4/140607

更新

samba 4.1のリリーススケジュールは ここ から確認できます。
2014.08.01に samba4.1.11 がリリースされた。当サイトでの更新作業

方針

cerius.localADドメインにしてc.cerius.localADドメインコントローラとして機能させる。
同時にこのサーバはchaperone.jpのDNSだったりDHCPサーバだったりも、QEMUな仮想化サーバでもある。
2014y03m22d_120536609.png
弊サイトで採用していたsambaのバージョン番号を付けたインストール方法は辞める。管理が面倒すぎる。
また、前回はBINDとの連携をファイルベースで行うBIND9_FLATFILEを利用していたが、今回はBIND9_DLZを利用します。

下準備

マシンは最小構成でインストール後、コンパイラ環境、samba4のコンパイルに必要な追加パッケージをインストールする。参照
BIND DNSもソースからコンパイル、インストールする。参照
ここでは、/etc/hostsと/etc/resolv.confは下記のように調整した。

[root@c ~]# vi /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.3     c.cerius.local  c
192.168.0.3     c.chaperone.jp  c
[root@c ~]#
[root@c ~]# vi /etc/resolv.conf
search cerius.local chaperone.jp
nameserver 192.168.0.3
nameserver 192.168.0.1
[root@c ~]#

Step 1: Download Samba

ソースを取得します。

[root@c ~]# mkdir -p /opt/src
[root@c ~]# cd /opt/src
[root@c src]# wget http://ftp.samba.org/pub/samba/stable/samba-4.1.8.tar.gz

Step 2: Compile Samba

[root@c src]# gzip -cd samba-4.1.8.tar.gz | tar xf -
[root@c src]# cd samba-4.1.8
[root@c samba-4.1.8]#
[root@c samba-4.1.8]# export PATH=/bin:/usr/bin:/usr/sbin:/sbin
[root@c samba-4.1.8]# ./configure  --prefix=/opt/samba --enable-selftest --with-utmp --with-ads
[root@c samba-4.1.8]# time ( make -j3 ; make quicktest ) | tee -a make.log
(中略)
ALL OK (2061 tests in 310 testsuites)
 
A summary with detailed information can be found in:
  ./st/summary
'testonly' finished successfully (37m4.398s)
 
real    57m43.644s
user    51m50.427s
sys     7m45.735s
[root@c samba-4.1.8]#

Step 3: Install Samba

[root@c samba-4.1.8]# make install

関連ライブラリはリンクとして貼ります。

[root@c ~]# cd /lib64
[root@c lib64]#
[root@c lib64]# ln -sv /opt/samba/lib/libnss_* .
`./libnss_winbind.so' -> `/opt/samba/lib/libnss_winbind.so'
`./libnss_winbind.so.2' -> `/opt/samba/lib/libnss_winbind.so.2'
`./libnss_wins.so' -> `/opt/samba/lib/libnss_wins.so'
`./libnss_wins.so.2' -> `/opt/samba/lib/libnss_wins.so.2'
[root@c lib64]#
 
[root@c lib64]# cd /lib64/security
[root@c security]#
[root@c security]# ln -sv /opt/samba/lib/security/* .
`./pam_smbpass.so' -> `/opt/samba/lib/security/pam_smbpass.so'
`./pam_winbind.so' -> `/opt/samba/lib/security/pam_winbind.so'
[root@c security]#

あと、yum install/updateでsamba関係がインストールされないように /etc/yum.conf を調整する

[root@c ~]# vi /etc/yum.conf
[main]
   exclude=kernel* samba* bind-utils
[root@c ~]#

Step 4: Provision Samba

BIND DNSとの連携に BIND9_DLZ 形式を採用します。

[root@c ~]# /opt/samba/bin/samba-tool domain provision --use-rfc2307 --interactive
Realm [CERIUS.LOCAL]:
 Domain [CERIUS]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
 
(中略)
 
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              c
NetBIOS Domain:        CERIUS
DNS Domain:            cerius.local
DOMAIN SID:            S-1-5-21-2748853593-4211642512-1995452271
 
[root@c ~]#

再度provisionを実行するには、一端設定ファイルらを削除してから行う事

[root@c ~]# rm -rf /opt/samba/private/*
[root@c ~]# rm -rf /opt/samba/etc/smb.conf

Step 5: Starting Samba

シングルモードでテスト実行。インタラクティブモード?デバックモード?と言ってもいいような感じだけど。。。

[root@c ~]# /opt/samba/sbin/samba -i -M single
samba version 4.1.8 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model
Attempting to autogenerate TLS self-signed keys for https for hostname 'C.cerius.local'
TLS self-signed keys generated OK
/opt/samba/sbin/samba_dnsupdate: Traceback (most recent call last):
/opt/samba/sbin/samba_dnsupdate:   File "/opt/samba/sbin/samba_dnsupdate", line 511, in <module>
/opt/samba/sbin/samba_dnsupdate:     get_credentials(lp)
/opt/samba/sbin/samba_dnsupdate:   File "/opt/samba/sbin/samba_dnsupdate", line 124, in get_credentials
/opt/samba/sbin/samba_dnsupdate:     raise e
/opt/samba/sbin/samba_dnsupdate: RuntimeError: kinit for C$@CERIUS.LOCAL failed (Cannot contact any KDC for requested realm)
/opt/samba/sbin/samba_dnsupdate:
../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_ACCESS_DENIED

っとエラーが発生しますが、まだ慌てる時間ではない。これは単にBIND DNSにcerius.localドメインが存在しないためである。

Step 6: Testing Samba

BIND DNSが未調整と言う課題もあるけど、このまま少々動作確認をします。別ターミナルを立ち上げて下記の接続テストを行います。

[root@c ~]# /opt/samba/bin/smbclient //c.cerius.local/netlogon -Uadministrator
Enter administrator's password:
Domain=[CERIUS] OS=[Unix] Server=[Samba 4.1.8]
smb: \> ls
  .                                   D        0  Fri Mar 21 23:22:08 2014
  ..                                  D        0  Fri Mar 21 23:22:34 2014
 
                51175 blocks of size 524288. 29748 blocks available
smb: \> quit
[root@c ~]#

と接続はできている。次にsmbclientからも確認すると、

[root@c ~]# /opt/samba/bin/smbclient -L c -U%
Domain=[CERIUS] OS=[Unix] Server=[Samba 4.1.8]
 
        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.1.8)
Domain=[CERIUS] OS=[Unix] Server=[Samba 4.1.8]
 
        Server               Comment
        ---------            -------
 
        Workgroup            Master
        ---------            -------
[root@c ~]#

と見えている。正しく稼働しているみたい。
っで、テスト実行させているsamba4を[Control+C]で停めます。

(中略)
/opt/samba/sbin/samba_dnsupdate:
../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_ACCESS_DENIED
^C
[root@c ~]#

Step 7: Configure DNS

BIND DNSにcerius.localゾーンを加えます。
この追加ゾーンはsamaba4ADドメインコントローラのDLZモジュールを経由して動的に書き換えられます。
*前回までは、この部分をファイルベースで行うBIND9_FLATFILEを使用していたが、今回はBIND9_DLZ形式を採用した。

BIND DNSに読み込ませるsamba4ADDC由来の設定ファイルの中身をBIND DNSのバージョンに合わせます。

[root@c ~]# vi /opt/samba/private/named.conf
dlz "AD DNS Zone" {
    # For BIND 9.8.0
    #database "dlopen /opt/samba/lib/bind9/dlz_bind9.so";
 
    # For BIND 9.9.0
    database "dlopen /opt/samba/lib/bind9/dlz_bind9_9.so";         **動かしているBIND DNSに合わせて有効にする
};
[root@c ~]#

そして、BIND DNS設定ファイル(/etc/named.conf)に対して

  • samba4ADDC由来の設定ファイルを付け加える
    [root@c ~]# vi /etc/named.conf
    (最終行として下記一行を加える) 
    include "/opt/samba/private/named.conf";
    [root@c ~]#
  • provision時に示された/opt/samba/private/named.txtに従いoptions枠にkeytabを付け加える
    [root@c ~]# vi /etc/named.conf
    options {
    (中略)
    tkey-gssapi-keytab "/opt/samba/private/dns.keytab";
    (中略)
    };
    (中略)
    [root@c ~]#
  • keytabファイルのパーミッションを変更する
    [root@c ~]# chgrp named /opt/samba/private/dns.keytab
    [root@c ~]# chmod g+r /opt/samba/private/dns.keytab

その上でBIND dnsを再起動させて、samba4を再びシングルモードで立ち上げます。

[root@c ~]# /etc/init.d/named restart
Shutting down named:                                       [  OK  ]
named を起動中:                                            [  OK  ]
[root@c ~]#
[root@c ~]# /opt/samba/sbin/samba -i -M single
samba version 4.1.8 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model

とエラーは発生しない。再び別ターミナルを立ち上げてsamba4ADDCのDNS機能の確認を行う

[root@c ~]# /etc/init.d/samba start
SAMBA4 サービスを起動中:                                   [  OK  ]
[root@c ~]#
 
[root@c ~]# host -t SRV _ldap._tcp.cerius.local.
_ldap._tcp.cerius.local has SRV record 0 100 389 c.cerius.local.
 
[root@c ~]# host -t SRV _kerberos._udp.cerius.local.
_kerberos._udp.cerius.local has SRV record 0 100 88 c.cerius.local.
 
[root@c ~]# host -t A c.cerius.local.
c.cerius.local has address 192.168.0.3
[root@c ~]#

と問題なくcerius.localのゾーン情報が引けるようになった。確認できたのでsamba4を[Control+C]で停めます。

Step 8: Configure Kerberos

samba-toolのprovisionコマンドで作成された krb5.conf を /etc/krb5.conf と差し替えてsamba4を再びシングルモードで立ち上げます。

[root@c ~]# mv /etc/krb5.conf /etc/krb5.conf_
[root@c ~]# cp /opt/samba/private/krb5.conf /etc/krb5.conf
[root@c ~]# vi /etc/krb5.conf
[libdefaults]
        default_realm = CERIUS.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true
[root@c ~]#
[root@c ~]# /opt/samba/sbin/samba -i -M single
samba version 4.1.8 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model

Kerberosの動作チェックは動的更新で確かめてみる。まずは再び別ターミナルを立ち上げて

[root@c ~]# kinit administrator@CERIUS.LOCAL
Password for administrator@CERIUS.LOCAL:
Warning: Your password will expire in 41 days on Sun Jul 20 01:02:10 2014
[root@c ~]#
[root@c ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@CERIUS.LOCAL
 
Valid starting     Expires            Service principal
06/08/14 13:29:12  06/08/14 23:29:12  krbtgt/CERIUS.LOCAL@CERIUS.LOCAL
        renew until 06/09/14 13:29:05
[root@c ~]#

とkerberosのチケットを貰って、動的更新を確かめる

[root@c ~]# nsupdate -g
> update add c200.cerius.local 100 in a 192.168.0.200
> send
> quit
[root@c ~]# nslookup c200
Server:         192.168.0.3
Address:        192.168.0.3#53
 
Name:   c200.cerius.local
Address: 192.168.0.200
 
[root@c ~]#
[root@c ~]# nsupdate -g
> update delete c200.cerius.local 100 in a 192.168.0.200
> send
> quit
[root@c ~]# nslookup c200
Server:         192.168.0.3
Address:        192.168.0.3#53
 
** server can't find c200: NXDOMAIN
 
[root@c ~]#

追加も削除も問題なく行われた。確認できたのでsamba4を[Control+C]で停めます。

Step 9: Configure NTP

CentOS6.5で提供されているntpは、signed ntp(MS独自のSNTP)は有効みたい。
vault.centos.org/6.5/os/Source/SPackages/ntp-4.2.6p5-1.el6.centos.src.rpm を取得して、ntp.specを開くと

%configure \
        --sysconfdir=%{_sysconfdir}/ntp/crypto \
        --with-openssl-libdir=%{_libdir} \
        --enable-all-clocks --enable-parse-clocks \
        --enable-ntp-signd=%{_localstatedir}/run/ntp_signd

とある。--enable-ntp-signdが有効なら再構築する必要はない。なのでそのままインストール。

[root@c ~]# yum install ntp

ntpにはsambaが作ったntp_signdを読ませるので、パーミッションを与える。
sambaが作るntp_signdの場所は、sambaのビルド情報のNTP_SIGND_SOCKET_DIRに示されている。

[root@c ~]# /opt/samba/sbin/samba -b | grep NTP_SIGND_SOCKET_DIR
   NTP_SIGND_SOCKET_DIR: /opt/samba/var/lib/ntp_signd
[root@c ~]#
[root@c ~]# chgrp ntp /opt/samba/var/lib/ntp_signd
[root@c ~]# ls -ld /opt/samba/var/lib/ntp_signd/
drwxr-x--- 2 root ntp 19  6月  8 13:28 2014 /opt/samba/var/lib/ntp_signd/
[root@c ~]#

ntp_signdの場所をntpsigndsocketとして反映させたntpの設定ファイル(/etc/ntp.conf)を作成して、ntpを起動させる

[root@c ~]# /etc/init.d/ntpd start
ntpd を起動中:                                             [  OK  ]
[root@c ~]# chkconfig ntp on

ログファイル(/var/log/messages)に

Mar 22 10:49:41 c ntpd[23174]: MS-SNTP signd operations currently block ntpd degrading service to all clients.

エラーメッセージっぽい文言がでますが、構わないみたい。
参照 https://lists.samba.org/archive/samba/2013-March/171959.html

smb.conf

samba4ADの設定ファイルを定義します。
provisionの際にテンプレートが /opt/samba/etc/smb.conf に用意されますが調整を加えます。

[root@c ~]# vi /opt/samba/etc/smb.conf
# Global parameters
[global]
        workgroup = CERIUS
        realm = CERIUS.LOCAL
        netbios name = C
        server role = active directory domain controller
        server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate
        idmap_ldb:use rfc2307 = yes
 
        nsupdate command = /opt/bind/bin/nsupdate -g
        printing = bsd
        log level=1
        syslog = 0
        log file = /var/log/samba.log
[netlogon]
        path = /opt/samba/var/locks/sysvol/cerius.local/scripts
        read only = No
 
[sysvol]
        path = /opt/samba/var/locks/sysvol
        read only = No
 
[export]
        path = /export
        writable = yes
        vfs objects = shadow_copy, btrfs
 
[home]
        browseable = no
        path = /home/%D
        read only = no
        create mask = 0644
        directory mask = 0755
        vfs objects = shadow_copy2, btrfs
        shadow:snapdir=.snapshot
[root@c ~]#

samba4起動スクリプト

自動起動スクリプトを用意します。
これで

[root@c ~]# chkconfig --add samba
[root@c ~]# chkconfig samba on
[root@c ~]# /etc/init.d/samba start
SAMBA4 サービスを起動中:                                   [  OK  ]
[root@c ~]#

と自動起動の設定を行う

以上でsamba4の構築は完了で、次はSAMBAユーザの作成を行います。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-06-04 (月) 17:31:40 (72d)