Sambaインストール · 5 min read · Dec 09, 2025

CentOS 7におけるSamba 4ドメインコントローラーのインストール

バージョン4.0以降、SambaはActive Directory (AD) ドメインコントローラー (DC) として動作することができます。このチュートリアルでは、Samba 4をWindows 10、CentOS 7、およびCentOS 6クライアントのドメインコントローラーとして設定する方法を示します。

このチュートリアルでは、Samba 4をソースからコンパイルします。Samba 4のRPMベースのインストールおよびSELinuxの設定を探している場合は、こちらの新しいSamba 4チュートリアルをご覧ください。

3つのシステムを使用します。1つのCentOS 7サーバーとリモート管理用のWindows 10クライアント、CentOS 7およびCentOS 6クライアントです。

  • 192.168.1.190 Samba4 AD centos7
  • 192.168.1.191 リモート管理 win 10
  • 192.168.1.22 - クライアント認証 - centos 7
  • 192.168.1.192 - クライアント認証 - centos 6

Samba 4のインストール

192.168.1.190 Samba4 AD centos 7

基本は、最小インストールとSELinuxが無効になっているCentOS 7です。


[root@samba4 ~]# sestatus
SELinux status: disabled
[root@samba4 ~]#

/etc/hostsファイルにエントリを作成します。

[root@samba4 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.190   samba4.sunil.cc samba4
[root@samba4 ~]#

epelリポジトリをインストールします。

[root@samba4 ~]# yum install epel-release -y

samba4をコンパイルするために必要なすべてのパッケージをインストールします。

[root@samba4 ~]# yum install perl gcc 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 setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\
cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -y

次にsamba4パッケージをダウンロードします。私はこのセットアップ中に最新のsamba-4.6.0を使用します。

[root@samba4 ~]#  wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gz

次にsamba4をインストールします。

  [root@samba4 ~]# tar -zxvf samba-4.6.0.tar.gz
  [root@samba4 ~]# cd samba-4.6.0
  [root@samba4 samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind
  [root@samba4 samba-4.6.0]# make && make install
  

インストールにはシステムの速度に応じて約10分かかります。

次にドメインのプロビジョニングを行います。

[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
 Domain [SUNIL]:
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=sunil,DC=cc
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 471, in run
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision
    skip_sysvolacl=skip_sysvolacl)
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill
    next_rid=next_rid, dc_rid=dc_rid)
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif
    ldb.add_ldif(data, controls)
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 225, in add_ldif
    self.add(msg, controls)

[root@samba4 samba]#

ドメインのプロビジョニングを行うときにいくつかのエラーが発生します。

それらを修正するには、/etc/krb5.confの以下の行をコメントアウトしてください。

  --------
  #includedir /etc/krb5.conf.d/
  --------

再度ドメインのプロビジョニングを実行すると、エラーなくドメインが作成されます。

  [root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
 Domain [SUNIL]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=sunil,DC=cc
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
上記のファイルがインストールされると、Samba4サーバーは使用可能になります
サーバーロール:           アクティブディレクトリドメインコントローラー
ホスト名:              samba4
NetBIOSドメイン:        SUNIL
DNSドメイン:            sunil.cc
DOMAIN SID:            S-1-5-21-2936486394-2075362935-551615353

[root@samba4 etc]#
  

ファイアウォールでポートが開いていることを確認してください。

[root@samba4 etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent; 
firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent; 
firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent; 
firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent; 
firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent
[root@samba4 ~]# firewall-cmd --reload
  

再起動時にサービスを自動起動するためのスタートアップスクリプトを作成します。

[root@samba4 ~]# cat /etc/systemd/system/samba.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba

[Install]
WantedBy=multi-user.target
[root@samba4 ~]#

[root@samba4 ~]# systemctl enable samba
Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl start samba
  

Windowsホストをドメインに追加する

192.168.1.191 リモート管理 win 10

ホストが静的IPアドレスで追加されていることを確認してください。

静的IPを持つWindowsホスト

ホストをドメインに追加します。

WindowsからSamba4を管理するには、Microsoft Remote Server Tools (RSAT) をインストールする必要があります。

ウィキページにはリンクがあります https://wiki.samba.org/index.php/Installing_RSAT

Windows 10にRSATツールをインストールする

インストーラーを実行します。

再起動後、実行を開いてdsa.mscと入力します。

sunil.ccドメインをクリックし、右クリックして新規 -> ユーザーを選択します。

テストユーザーを作成します。

CentOS 7でのSamba 4によるクライアント認証

192.168.1.22 - CentOS 7でのクライアント認証

パッケージのインストール:

[root@centos7 ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-common

samba4との接続を確認します:

   [root@centos7 ~]# realm discover SUNIL.CC
sunil.cc
  type: kerberos
  realm-name: SUNIL.CC
  domain-name: sunil.cc
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
  login-formats: %U
  login-policy: allow-realm-logins
[root@centos7 ~]#
   

ドメインに参加します。

[root@centos7 ~]#  realm join SUNIL.CC
Password for Administrator:
[root@centos7 ~]#

samba4からユーザーを取得できるか確認します。

[root@centos7 ~]# id SUNIL\testuser
uid=1570001104([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected])
[root@centos7 ~]#

sssdを設定します。

[root@centos7 ~]# cat /etc/sssd/sssd.conf

[sssd]
domains = sunil.cc
config_file_version = 2
services = nss, pam

[domain/sunil.cc]
ad_domain = sunil.cc
krb5_realm = SUNIL.CC
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
[root@centos7 ~]#

sssdを再起動します。

[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# systemctl enable sssd

ユーザーを確認します。

[root@centos7 ~]# id [email protected]
uid=1570001105([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected]),1570000512(domain [email protected]),1570000572(denied rodc password replication [email protected])
[root@centos7 ~]#

ドメイン名なしでユーザーを取得するには。

[root@centos7 ~]# vim /etc/sssd/sssd.conf
-----------
------------
use_fully_qualified_names = False
-----------
-----------

sssdを再起動し、idコマンドを確認します。

[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos7 ~]#

CentOS 6でのSamba 4によるクライアント認証

192.168.1.192 - CentOS 6でのクライアント認証。

パッケージのインストール。

   [root@centos6 db]#  yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
   

kerberos設定ファイルを変更します。

   [root@centos6 db]# cat /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 = SUNIL.CC
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 SUNIL.CC = {
  kdc = samba4.sunil.cc
  admin_server = samba4.sunil.cc
 }

[domain_realm]
 .sunil.cc = SUNIL.CC
 sunil.cc = SUNIL.CC
[root@centos6 db]#
   

adcliコマンドを使用してドメインに参加します。

   [root@centos6 db]# adcli info sunil.cc
[domain]
domain-name = sunil.cc
domain-short = SUNIL
domain-forest = sunil.cc
domain-controller = samba4.sunil.cc
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = samba4.sunil.cc
[computer]
computer-site = Default-First-Site-Name
[root@centos6 db]#
[root@centos6 db]# adcli join sunil.cc
Password for [email protected]:
[root@centos6 db]#
   

kerberosチケットが作成されていることを確認します。

   [root@centos6 db]# klist -ke
   

認証を設定します。

   [root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
   

認証を行うためにsssd設定を変更します。

   [root@centos6 db]# cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam, ssh, autofs
config_file_version = 2
domains = sunil.cc

[domain/sunil.cc]
id_provider = ad
# Uncomment if service discovery is not working
# ad_server = server.win.example.com
default_shell = /bin/bash
fallback_homedir = /home/%u
[root@centos6 db]#
   

sssdサービスを再起動します。

   [root@centos6 db]# chkconfig sssd on
[root@centos6 db]# service sssd restart
Stopping sssd:                                             [  OK  ]
Starting sssd:                                             [  OK  ]
[root@centos6 db]#
   

ユーザーを検証します。

   [root@centos6 db]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos6 db]#
   
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。