KUSONEKOの見る世界

CentOS 7.3 で Samba 4.5.3 (Active Directory Domain Controller) をインストールしてみた

昨年度末にLPIC300の受験対策として、CentOSでActive Drectoryを構築しました。

大変参考になるサイト様がありますが、そのままでは自分の環境では動作しなかった事と、
自分として使いやすい設定にしたので、メモを残しておきます。

DNS backendとしてBINDを使用します。

インストール

[root@server~]# yum install perl gcc attr libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base popt-devel libxml2-devel libattr-devel keyutils-libs-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel autoconf python-crypto pam-devel

[root@server~]# wget http://www.samba.org/samba/ftp/samba-latest.tar.gz

[root@server~]# tar zxvf samba-latest.tar.gz

[root@server~]# cd samba-4.5.3/
[root@server samba-4.5.3]#./configure && make
[root@server samba-4.5.3]# make install

プロビジョニング

[root@server samba-4.5.3]# cd

[root@server~]# vi /etc/krb5.conf
includedir /etc/krb5.conf.d/

#includedir /etc/krb5.conf.d/  ←コメントアウト

[root@server~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008__R2
Realm: EXAMPLE.COM  ←任意のレルム
 Domain [EXAMPLE]: 空エンター
 Server Role (dc, member, standalone) [dc]: 空エンター
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ  ←BINDを使用
Administrator password: Administratorのパスワードを設定
Retype password: Administratorのパスワードを設定

[root@server~]# vi /etc/rc.d/init.d/samba
(他サイト様を参考に作成)

[root@server~]# chmod +x /etc/rc.d/init.d/samba

BIND関連の設定

[root@server~]# vi /etc/named.conf
(略)
include "/usr/local/samba/private/named.conf";   ←追加
}; ←最終行

[root@server ~]# named -v
BIND 9.9.4-RedHat-9.9.4-38.el7_3 (Extended Support Version)  ←BINDのバージョンを確認

[root@server~]# cat /usr/local/samba/private/named.conf
(略)
    # For BIND 9.9.x
     database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";  ←対象のBINDのバージョンがコメントアウトではないことを確認
(略)

[root@server~]# vi /etc/named.conf
 (略)
options {
            (略)
           tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";  ←追加
};

[root@server~]# chmod 640 /usr/local/samba/private/dns.keytab

[root@server~]# chown root:named /usr/local/samba/private/dns.keytab

[root@server~]# systemctl restart named

起動

[root@server~]# vi /etc/hosts
サーバのIPアドレス   server.example.com   server ←追加

[root@server~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0
DNS1=127.0.0.1 ←自身が問合せ先であることを確認

[root@server~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1 ←自身が問合せ先であることを確認

[root@server~]# /bin/cp /usr/local/samba/private/krb5.conf /etc/

[root@server~]# systemctl start samba
[root@server~]# systemctl enable samba

↓必要な人のみ
[root@server~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=off ←パスワードの複雑性をオフ
[root@server~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=0 ←パスワードの有効期限解除

ディレクトリ作成、設定

sambaのユーザディレクトリとプロファイルのディレクトリを/home で作成します。
[root@server~]# mkdir /home/samba
[root@server~]# mkdir /home/samba/profiles
[root@server~]# chmod 1777 /home/samba/profiles

↓試行錯誤して作成した設定なので、あまり綺麗ではありません。
[root@server~]# vi /usr/local/samba/etc/smb.conf
(略)
[Profiles]
        path = /home/samba/profiles
        read only = No
        guest ok = Yes
        browseable = No
        hide unreadable = yes

[home]
        comment = Home Directories
        path = /home/samba
        read only = No
        vfs objects = recycle
        recycle:repository = /home/samba/%U/.recycle
        recycle:keeptree = no
        recycle:versions = yes
        recycle:touch = no
        recycle:maxsize = 0
        recycle:exclude = *.tmp ~$*

        hide unreadable = yes
        veto files = /共有ディレクトリ名/   ←/home/samba/内にユーザのディレクトリとユーザのプロファイルディレクトリのみ見えるようにするため
        recycle:exclude_dir = .recycle

[共有ディレクトリ名]   ←特定のユーザのみアクセスできる共有ディレクトリ
        path = /home/samba/共有ディレクトリ名
        read only = No
        vfs objects = recycle
        recycle:repository = /home/samba/共有ディレクトリ名/.recycle
        recycle:keeptree = no
        recycle:versions = yes
        recycle:touch = no
        recycle:maxsize = 0
        recycle:exclude = *.tmp ~$*
        hide unreadable = yes
        recycle:exclude_dir = .recycle

[root@server~]# /usr/local/samba/bin/smbcontrol all reload-config

ユーザ作成

[root@server~]# usr/local/samba/bin/samba-tool user create ユーザ名 パスワード --profile-path="\\\server\profiles\%USERNAME%"

[root@server~]# systemctl restart samba

Windows側での設定

やることが多いので、別の記事で書きます。


動作が遅い場合

ファイルサーバの動作が遅い!という方はこちらを試してみてください。
名前解決にIPv6を返さないようにします。
これで、サーバへのアクセスがIPv4になります。
[root@server~]# vi /etc/named.conf
 (略)
options {
            (略)
        filter-aaaa-on-v4 yes;
        filter-aaaa { 192.168.0.0/24; }; ←ローカルネットワークを指定
};

[root@server~]# systemctl restart named