Samba · 5 min read · Dec 14, 2025

CentOS 7でのActive Directoryを使用したSamba 4のrpmベースのインストールと共有サポート

前回のチュートリアルでは、RedHatが提供するパッケージがActive Directoryをサポートしていないため、ソースからSambaをコンパイルしてCentOS 7でSambaを構成する方法を示しました。ADサポート付きのsamba4 rpmを提供するWingというリポジトリがあることに気付きました。このチュートリアルでは、このリポジトリを使用してSambaをインストールします。また、samba共有を作成する方法も示します。

このチュートリアルでは、SELinuxが有効な最小インストールのCentOS 7サーバーを基に使用します。

CentOS 7サーバーの準備

SELinuxのステータスを確認します。

[root@samba4 ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
[root@samba4 ~]#

サーバーのIPアドレスの後に完全な(fqdn)ホスト名を続けて、ホストファイルにエントリを作成します。

[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 CentOSリポジトリをインストールします。

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

基本パッケージをインストールします。

[root@samba4 ~]# yum install vim wget authconfig krb5-workstation -y
    

次に、wingリポジトリをインストールします。

[root@samba4 ~]# cd /etc/yum.repos.d/
[root@samba4 yum.repos.d]# wget http://wing-net.ddo.jp/wing/7/EL7.wing.repo
[root@samba4 yum.repos.d]# sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/EL7.wing.repo
[root@samba4 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates wing wing-source
Cleaning up everything
Cleaning up list of fastest mirrors
[root@samba4 yum.repos.d]#
   

CentOS 7にSamba 4をインストール

yumを使用してwingリポジトリからSamba4パッケージをインストールします。

[root@samba4 yum.repos.d]# yum install -y samba45 samba45-winbind-clients samba45-winbind samba45-client\
samba45-dc samba45-pidl samba45-python samba45-winbind-krb5-locator perl-Parse-Yapp\
perl-Test-Base python2-crypto samba45-common-tools
    

これらのファイルを削除します。

 
[root@samba4 ~]# rm -rf /etc/krb5.conf
[root@samba4 ~]# rm -rf /etc/samba/smb.conf
    

Samba 4の構成

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

[root@samba4 ~]# 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 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        SUNIL
DNS Domain:            sunil.cc
DOMAIN SID:            S-1-5-21-1578983437-3114190590-2362936743
[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-3500/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent
[root@samba4 ~]# firewall-cmd --reload

パッケージはinitスクリプトを提供しないため、今から追加します。

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

[Service]
Type=forking
PIDFile=/var/run/samba.pid
ExecStart=/usr/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 restart samba

他のすべての手順は、以前の記事と同様です。 WindowsおよびLinuxホストの構成については、そちらを参照してください。 ソースからのSamba4ドメインコントローラーのインストール

Windows ACLサポートを持つSamba共有の作成

samba4のために拡張ACLを構成する必要があります。smb.confファイルのglobalの下に次の内容を追加します。

[root@samba4 ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
        ------------
        -------------
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes
        ------------
        -------------

[root@samba4 ~]#

次に、Sambaサービスを再起動します。

[root@samba4 ~]# systemctl restart samba

SeDiskOperatorPrivilege権限が付与されたユーザーとグループのみが共有権限を構成できます。

[root@samba4 ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Enter USER\administrator's password:
Successfully granted rights.
[root@samba4 ~]#

共有を作成する前に、samba4サーバーが自分自身で認証されることを確認する必要があります。

通常の方法では、wingからの既存のパッケージがRedHatが提供するパッケージと競合するため、ここではsssdを使用できません。winbindを使用してこれを機能させます。

以下の方法を使用してください。これは、特定の権限でsamba共有を作成するために必要です。

以下のパッケージをインストールします。

[root@samba4 ~]#yum -y install authconfig-gtk*

コマンドを実行します。

[root@samba4 yum.repos.d]# authconfig-tui

winbindを選択し、次の手順に従ってください。

パスワードを入力することはできませんので、ただ「OK」を押してください。

次に、/etc/samba/smb.confの行をコメントアウトし、sambaサービスを再起動します。

あなたの構成は次のようになるはずです。

[root@samba4 ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
#--authconfig--start-line--

# Generated by authconfig on 2017/05/26 17:23:04
# DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--)
# Any modification may be deleted or altered by authconfig in future

#   workgroup = SUNIL
#   password server = samba4.sunil.cc
#   realm = SUNIL.CC
#   security = ads
#   idmap config * : range = 16777216-33554431
#   template shell = /sbin/nologin
#  kerberos method = secrets only
#   winbind use default domain = false
#   winbind offline logon = false

#--authconfig--end-line--
        netbios name = SAMBA4
        realm = SUNIL.CC
        workgroup = SUNIL
        dns forwarder = 4.2.2.1
        server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes

[netlogon]
        path = /var/lib/samba/sysvol/sunil.cc/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
[root@samba4 ~]#
[root@samba4 ~]# systemctl restart samba

ユーザーとグループをポピュレートできるかどうかを確認します。

[root@samba4 ~]# wbinfo -u
SUNIL\administrator
SUNIL\sambauser
SUNIL\testuser
SUNIL\krbtgt
SUNIL\guest
[root@samba4 ~]# wbinfo -g
SUNIL\cert publishers
SUNIL\ras and ias servers
SUNIL\allowed rodc password replication group
SUNIL\denied rodc password replication group
SUNIL\dnsadmins
SUNIL\enterprise read-only domain controllers
SUNIL\domain admins
SUNIL\domain users
SUNIL\domain guests
SUNIL\domain computers
SUNIL\domain controllers
SUNIL\schema admins
SUNIL\enterprise admins
SUNIL\group policy creator owners
SUNIL\read-only domain controllers
SUNIL\dnsupdateproxy
[root@samba4 ~]#

nsswitch.confの行を修正します。

[root@samba4 ~]# cat /etc/nsswitch.conf
----------
---------
passwd:     files winbind
shadow:     files winbind
group:      files winbind
hosts:      files dns wins
services:   files winbind
netgroup:   files winbind

---------
----------

idコマンドを使用してユーザー名を取得できるかどうかを確認します。

[root@samba4 ~]# id testuser
uid=3000019(SUNIL\testuser) gid=100(users) groups=100(users),3000019(SUNIL\testuser),3000009(BUILTIN\users)
[root@samba4 ~]#

Samba共有の作成

私は、testuserのみがアクセスできる共有と、ドメインユーザーグループのすべてのユーザーがアクセスできる共有の2つを作成します。

testuserがアクセスできる共有はtestshareと呼ばれます。

すべてのユーザーがアクセスできる共有はcommonshareと呼ばれます。

[root@samba4 ~]# mkdir /testshare
[root@samba4 ~]# mkdir /commonshare
[root@samba4 ~]# chmod 770 /testshare
[root@samba4 ~]# chmod 770 /commonshare
[root@samba4 ~]# chown -R root:testuser /testshare
[root@samba4 ~]# chown -R root:"Domain Users" /commonshare

次に、smb.confにエントリを追加します。

[root@samba4 ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
        netbios name = SAMBA4
        realm = SUNIL.CC
        workgroup = SUNIL
        dns forwarder = 4.2.2.1
        server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes

[netlogon]
        path = /var/lib/samba/sysvol/sunil.cc/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
[TestShare]
        comment = Test share accessible by testuser
        path = /testshare
        valid users = SUNIL\testuser
        writable = yes
        read only = no
        force create mode = 0660
        create mask = 0770
        directory mask = 0770
        force directory mode = 0770
        access based share enum = yes
        hide unreadable = yes
[CommonShare]
         comment = Accessible by all the users
          path = /commonshare
          valid users = "@SUNIL\Domain Users"
          writable = yes
        read only = no
        force create mode = 0660
        create mask = 0777
        directory mask = 0777
        force directory mode = 0770
        access based share enum = yes
        hide unreadable = yes
[root@samba4 ~]#

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

[root@samba4 ~]# systemctl restart samba

testuserとしてsamba共有にアクセスします。

ここでは、testshareとcommonshareの両方が表示されます。

testshareの下にファイルとフォルダーを作成することをテストしました。

[root@samba4 /]# cd /testshare/
[root@samba4 testshare]# ls -l
total 8
-rwxrwx---+ 1 SUNIL\testuser users 0 May 27 22:56 1.txt
drwxrwx---+ 2 SUNIL\testuser users 6 May 27 22:56 test
[root@samba4 testshare]#

今、別のユーザーとしてログインしていますので、commonshareのみが表示されます。

commonshareの下にファイルを作成します。

[root@samba4 commonshare]# ls -l
total 8
drwxrwxrwx+ 2 SUNIL\testuser  users 6 May 27 23:02 test
drwxrwxrwx+ 2 SUNIL\sambauser users 6 May 27 23:07 test2
[root@samba4 commonshare]#

これがSamba 4で共有を作成する方法です。

Share: X/Twitter LinkedIn

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

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