RHEL/CentOS 7でphp 7.xを使う方法(2023/10/30更新)


RHEL7 / CentOS7のphpは5.4.16である。

新しいバージョンのphpを使う場合はソースからコンパイルして導入するか、3rdレポジトリを利用する必要がある。

有名なのはremiだが、Oracle Linuxにもあった。

うちはCentOS7だけど、 Oracle Linuxのol7_developer_php72 ol7_developer_php74レポジトリを追加する形で使っている。

1. remi-php?? レポジトリ

標準のphpを新しいバージョンで置き換える「remi-php??」レポジトリ(こちらはphpコマンドが置き換わる)と、標準のPHPはそのままに、そして後述のSCLとも共存できる「remi-safe」レポジトリ(こちらはphp73コマンドなどになる)というものもある。

意外なことに2022年秋リリース予定のphp 8.2についてもRC版で php 8.3も提供され始めた

Web: https://rpms.remirepo.net/enterprise/7/
提供中PHPバージョン: 8.3, 8.2, 8.1, 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6
EOLしたもの: 5.5, 5.4

2. PHP for Oracle Linux

Web: http://yum.oracle.com/oracle-linux-php.html
PHPバージョン: 7.4, 7.2, 7.1, 7.0
EOLしたもの: 7.2, 7.1, 7.0

php v7.2に置き換える場合の手順

# yum install yum-utils
# curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7
# curl -o /etc/yum.repos.d/public-yum-ol7.repo https://yum.oracle.com/public-yum-ol7.repo
# yum-config-manager --disable ol7_\*
# yum-config-manager --enable ol7_developer_php72
# 「yum install php」もしくは「yum update」で既存phpパッケージをphp72にアップデート
# systemctl restart httpd

上記でdisableを忘れるとOracle Linuxにアップデートしてしまうかもしれないので注意すること。また、先にyum-utilsをインストールしておくこと

2019/09/30 追記

Oracle Linux(Oracle Cloud Always Freeインスタンスなど)を使っている場合は「yum install oracle-php-release-el7」を実行することで、PHP拡張レポジトリが導入されます。導入直後は「ol7_developer_php72」が有効化されているので、上記と同じ「yum-config-manager –disable ol7_*」とか「yum-config-manager –enable ol7_developer_php72」で有効/無効を切り替えてください。

2020/07/20 追記 、2020/09/07修正

ol7_developer_php74は上記の http://yum.oracle.com/public-yum-ol7.repo には含まれてないようです。(Oracle Linuxで提供されるoracle-php-releaseパッケージに分離している)

また、Oralcleのphp 7.4はol7_addons収録のoniguruma-5.9.5が要求されます。 epel収録のoniguruma-6.8.2 がインストールされていると「Requires: libonig.so.2()(64bit)」というエラーになりますので、注意が必要です。

これを考慮して /etc/yum.repos.d/ol7_developer_php74.repo を書くと以下の様になる。

[ol7_developer_php74]
name=Oracle Linux $releasever PHP 7.4 Packages for Development and test ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/developer/php74/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol7_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

そしてepelのonigurumaを使用しないよう、 epelに関する設定の中に「exclude=oniguruma jq」を追加しておく必要がある。(epelのjqパッケージはepelのonigurumaを要求しているので一緒に除外する必要がある)

/etc/yum.repos.d/epel.repo の該当部分だけ抜き出したもの

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=oniguruma jq

3. webtatic

2019/10/26の更新が最後になっており、現状使うべきでは無い。

Web: https://webtatic.com/
提供中PHPバージョン: 7.2, 7.1
EOLしたもの:7.0, 5.6

4. Software Collection (SCL)

CentOSのwikiに「Using PHP 7.x on CentOS 7.4」という記載があった。
CentOS Software Collectionレポジトリにあるという。

確認してみると、「rh-php70~」「rh-php71~」「rh-php72~」と標準のパッケージ名とは別に設定されているものがあった。また、rh-phpにないものを補完するための「sclo-php~」というのもあった。

PHP 7.2 by Software Collections」とRedHat DEVELOPER BLOGの「PHP Configuration Tips」に参考になる記述があるが、FastCGIを使うための装備はあるが、mod_phpを使うための装備はない。

Remiさんとこのblog「PHP 7.2 as Software Collection」にSCLとRemiレポジトリの違いが書かれている。また、複数バージョンのPHPを1サーバで共存させる場合の手法「My PHP Workstation」も公開されている。

# yum -y install centos-release-scl.noarch
<略>
================================================================================
 Package                    アーキテクチャー
                                        バージョン            リポジトリー
                                                                           容量
================================================================================
インストール中:
 centos-release-scl         noarch      2-2.el7.centos        extras       12 k
依存性関連でのインストールをします:
 centos-release-scl-rh      noarch      2-2.el7.centos        extras       12 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 24 k
インストール容量: 39 k
<略>
# yum search rh-php
<略>
============================= N/S matched: rh-php ==============================
rh-php70-runtime.x86_64 : Package that handles rh-php70 Software Collection.
rh-php70-scldevel.x86_64 : Package shipping development files for rh-php70
rh-php71-runtime.x86_64 : Package that handles rh-php71 Software Collection.
rh-php71-scldevel.x86_64 : Package shipping development files for rh-php71
rh-php72-runtime.x86_64 : Package that handles rh-php72 Software Collection.
rh-php72-scldevel.x86_64 : Package shipping development files for rh-php72
rh-php70.x86_64 : Package that installs PHP 7.0
rh-php70-build.x86_64 : Package shipping basic build configuration
rh-php70-php.x86_64 : PHP scripting language for creating dynamic web sites
rh-php70-php-bcmath.x86_64 : A module for PHP applications for using the bcmath
                           : library
rh-php70-php-cli.x86_64 : Command-line interface for PHP
rh-php70-php-common.x86_64 : Common files for PHP
rh-php70-php-dba.x86_64 : A database abstraction layer module for PHP
                        : applications
rh-php70-php-dbg.x86_64 : The interactive PHP debugger
rh-php70-php-devel.x86_64 : Files needed for building PHP extensions
rh-php70-php-embedded.x86_64 : PHP library for embedding in applications
rh-php70-php-enchant.x86_64 : Enchant spelling extension for PHP applications
rh-php70-php-fpm.x86_64 : PHP FastCGI Process Manager
rh-php70-php-gd.x86_64 : A module for PHP applications for using the gd graphics
                       : library
rh-php70-php-gmp.x86_64 : A module for PHP applications for using the GNU MP
                        : library
rh-php70-php-intl.x86_64 : Internationalization extension for PHP applications
rh-php70-php-json.x86_64 : JavaScript Object Notation extension for PHP
rh-php70-php-ldap.x86_64 : A module for PHP applications that use LDAP
rh-php70-php-mbstring.x86_64 : A module for PHP applications which need
                             : multi-byte string handling
rh-php70-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL
                            : databases
rh-php70-php-odbc.x86_64 : A module for PHP applications that use ODBC databases
rh-php70-php-opcache.x86_64 : The Zend OPcache
rh-php70-php-pdo.x86_64 : A database access abstraction module for PHP
                        : applications
rh-php70-php-pear.noarch : PHP Extension and Application Repository framework
rh-php70-php-pgsql.x86_64 : A PostgreSQL database module for PHP
rh-php70-php-process.x86_64 : Modules for PHP script using system process
                            : interfaces
rh-php70-php-pspell.x86_64 : A module for PHP applications for using pspell
                           : interfaces
rh-php70-php-recode.x86_64 : A module for PHP applications for using the recode
                           : library
rh-php70-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed
                         : devices
rh-php70-php-soap.x86_64 : A module for PHP applications that use the SOAP
                         : protocol
rh-php70-php-xml.x86_64 : A module for PHP applications which use XML
rh-php70-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC
                           : protocol
rh-php70-php-zip.x86_64 : ZIP archive management extension for PHP
rh-php71.x86_64 : Package that installs PHP 7.1
rh-php71-build.x86_64 : Package shipping basic build configuration
rh-php71-php.x86_64 : PHP scripting language for creating dynamic web sites
rh-php71-php-bcmath.x86_64 : A module for PHP applications for using the bcmath
                           : library
rh-php71-php-cli.x86_64 : Command-line interface for PHP
rh-php71-php-common.x86_64 : Common files for PHP
rh-php71-php-dba.x86_64 : A database abstraction layer module for PHP
                        : applications
rh-php71-php-dbg.x86_64 : The interactive PHP debugger
rh-php71-php-devel.x86_64 : Files needed for building PHP extensions
rh-php71-php-embedded.x86_64 : PHP library for embedding in applications
rh-php71-php-enchant.x86_64 : Enchant spelling extension for PHP applications
rh-php71-php-fpm.x86_64 : PHP FastCGI Process Manager
rh-php71-php-gd.x86_64 : A module for PHP applications for using the gd graphics
                       : library
rh-php71-php-gmp.x86_64 : A module for PHP applications for using the GNU MP
                        : library
rh-php71-php-intl.x86_64 : Internationalization extension for PHP applications
rh-php71-php-json.x86_64 : JavaScript Object Notation extension for PHP
rh-php71-php-ldap.x86_64 : A module for PHP applications that use LDAP
rh-php71-php-mbstring.x86_64 : A module for PHP applications which need
                             : multi-byte string handling
rh-php71-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL
                            : databases
rh-php71-php-odbc.x86_64 : A module for PHP applications that use ODBC databases
rh-php71-php-opcache.x86_64 : The Zend OPcache
rh-php71-php-pdo.x86_64 : A database access abstraction module for PHP
                        : applications
rh-php71-php-pear.noarch : PHP Extension and Application Repository framework
rh-php71-php-pecl-apcu.x86_64 : APC User Cache
rh-php71-php-pecl-apcu-devel.x86_64 : APCu developer files (header)
rh-php71-php-pgsql.x86_64 : A PostgreSQL database module for PHP
rh-php71-php-process.x86_64 : Modules for PHP script using system process
                            : interfaces
rh-php71-php-pspell.x86_64 : A module for PHP applications for using pspell
                           : interfaces
rh-php71-php-recode.x86_64 : A module for PHP applications for using the recode
                           : library
rh-php71-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed
                         : devices
rh-php71-php-soap.x86_64 : A module for PHP applications that use the SOAP
                         : protocol
rh-php71-php-xml.x86_64 : A module for PHP applications which use XML
rh-php71-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC
                           : protocol
rh-php71-php-zip.x86_64 : ZIP archive management extension for PHP
rh-php72.x86_64 : Package that installs PHP 7.2
rh-php72-build.x86_64 : Package shipping basic build configuration
rh-php72-php.x86_64 : PHP scripting language for creating dynamic web sites
rh-php72-php-bcmath.x86_64 : A module for PHP applications for using the bcmath
                           : library
rh-php72-php-cli.x86_64 : Command-line interface for PHP
rh-php72-php-common.x86_64 : Common files for PHP
rh-php72-php-dba.x86_64 : A database abstraction layer module for PHP
                        : applications
rh-php72-php-dbg.x86_64 : The interactive PHP debugger
rh-php72-php-devel.x86_64 : Files needed for building PHP extensions
rh-php72-php-embedded.x86_64 : PHP library for embedding in applications
rh-php72-php-enchant.x86_64 : Enchant spelling extension for PHP applications
rh-php72-php-fpm.x86_64 : PHP FastCGI Process Manager
rh-php72-php-gd.x86_64 : A module for PHP applications for using the gd graphics
                       : library
rh-php72-php-gmp.x86_64 : A module for PHP applications for using the GNU MP
                        : library
rh-php72-php-intl.x86_64 : Internationalization extension for PHP applications
rh-php72-php-json.x86_64 : JavaScript Object Notation extension for PHP
rh-php72-php-ldap.x86_64 : A module for PHP applications that use LDAP
rh-php72-php-mbstring.x86_64 : A module for PHP applications which need
                             : multi-byte string handling
rh-php72-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL
                            : databases
rh-php72-php-odbc.x86_64 : A module for PHP applications that use ODBC databases
rh-php72-php-opcache.x86_64 : The Zend OPcache
rh-php72-php-pdo.x86_64 : A database access abstraction module for PHP
                        : applications
rh-php72-php-pear.noarch : PHP Extension and Application Repository framework
rh-php72-php-pecl-apcu.x86_64 : APC User Cache
rh-php72-php-pecl-apcu-devel.x86_64 : APCu developer files (header)
rh-php72-php-pgsql.x86_64 : A PostgreSQL database module for PHP
rh-php72-php-process.x86_64 : Modules for PHP script using system process
                            : interfaces
rh-php72-php-pspell.x86_64 : A module for PHP applications for using pspell
                           : interfaces
rh-php72-php-recode.x86_64 : A module for PHP applications for using the recode
                           : library
rh-php72-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed
                         : devices
rh-php72-php-soap.x86_64 : A module for PHP applications that use the SOAP
                         : protocol
rh-php72-php-xml.x86_64 : A module for PHP applications which use XML
rh-php72-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC
                           : protocol
rh-php72-php-zip.x86_64 : ZIP archive management extension for PHP

  Name and summary matches only, use "search all" for everything.
#

vpopmail代替としてのpostfix+dovecotメールサーバ環境iRedMail



vpopmail+qmailを使って複数ドメインのメールサーバを運用していた。
さすがにきつくなってきたので乗り換え先をいろいろ検討していた。

・いままで使っていたパスワードが継続できること
 (元の平文パスワードは不明で、MySQL上のvpopmailにあるパスワード文字列を引き継げること)
・POP3 before SMTPは廃止する
・とりあえず20ドメインぐらいあり、各ドメインのユーザは20個程度
・Maildir形式のメールデータは移行する
・Web UIでメールアカウントを作成できること
・無償版の範囲であること

いろいろ探した結果、「iRedMail」を乗り換え先として選定した。

vpopmailとiRedMail無償版を比較した場合、機能が足らない点は以下である。
・各ドメイン内の管理者ユーザが使用できない
  全体管理者と一般ユーザの2種類のみが使用できる
  ドメイン内の管理者ユーザは有償版の機能
・エイリアスはWeb UIで管理できない
  有償版での機能
  手動でMySQL DB上に設定を入れることでエイリアスを使用することはできる
  (Set mail forwarding with SQL command line)
・メーリングリストをWeb UIで管理できない
  有償版での機能
  mlmmjベースであるため手動で設定することはできる
・アップデートが面倒
  無償版だと手動でいろいろ設定しつつアップデートを行う必要がある。

ドメイン内管理者が使用できないというところが痛いが、必須要素ではないため、目をつぶった。

新しい利点として
・Exchange対応
  POP3/IMAPだけでなく「SOGo」というExchange互換サーバ機能を利用できる
  カレンダー(CalDAV)、住所録(CardDAV)も対応
・WebMailが2種類使える
  「Roundcube」と「SOGo」の2種類のWebMailが使える
・SMTP AUTH対応
・LetsEncryptによるSSL対応
 「Use a SSL certificate
・DKIM対応
 「Sign DKIM signature on outgoing emails for new mail domain

設定は、初期インストール直後のCentOS 7/Ubuntuなどで「iRedMail」公式からファイルをダウンロードして、インストールスクリプトを実行するだけで良い。

インストールスクリプト実行完了後に、初期の設定パスワードなどを記載したファイルを出力するので、どこか別の場所に保存しておく必要がある。

インストール後、「postfix/dovecotメールサーバでWindows Live Mail 2012がエラーになる」に記載した設定は行った方が良い。

また、今後、パッケージのアップデートを行う場合は「php.iniを変更せずにdisable_functionsの内容を無効化してroundcubeのアップグレードスクリプトを動作させる方法」の知識が必要になる。

なお、実際に切り替えてみると、Windows Live Mail 2012ユーザでは問題が発生した。
Windows Live Mail 2012の場合、同じパスワードであってもパスワードの設定をやり直さなければ認証エラーとなる仕様であるようだ。

Samba 4.7.xでActive Directoryを1から立てる


2019/06/14追記

Samba 4.10.xでActive Directoryを1から立てる」という記事を更新版の記事を作成しています。違いは必要となるパッケージが増えたことについてです。


CentOS7とSamba 4.7.5で環境を作成しなおしたので、記事更新

過去の記事はこちら
2014年2月版「Samba 4.xでActive Directoryを1から立てる
2016年7月版「Samba 4.4.xでActive Directoryを1から立てる


Linux上でSambaを使ってActive Directoryサーバを立てるメリット
Windows Serverを買わなくてもActive Directoryを作れる
 ライセンス費用の低減
Active Directoryユーザの作成などのユーザ管理をWindowsマシンからWindows標準ツールで行える
 ユーザ作成/変更、コンピュータアカウントの作成、DNS管理など、Active Directoryの管理を行う際に
 良く使う動作については、Linuxのコマンドではなく、WindowsのActive Directory管理ツールで行える
 具体的にはADに参加しているWindowsマシンにWindows機能のActive Directory管理ツールを追加インストールしたあと、
 ADの管理者ユーザでログオンすることでAD管理を行うことができる
設定が難しくない
 いまのsambaは、DNSサーバとLDAPサーバ機能が統合されており、AD名とAD上の役割と
 管理者パスワードを決めてしまえば、あとは良きに計らってくれるので
 設定の難易度が非常に低い

もちろん、デメリット、もあります
ActiveDirectoryの全機能が搭載されていない
 ドメイン/フォレストの機能レベルが「Windows Server 2008 R2」までとなっている。
 なお、フェールオーバクラスタについては作成できるようになっていました。
 →「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました

それでは、実際の手順について・・・
元ネタは公式ページの「Setting up Samba as an Active Directory Domain Controller」となります。

0. CentOS7の最小インストールを実施

1. /etc/hostsの修正
自ホスト名を/etc/hostsに追加
追加の際は、ショートのホスト名と、ドメイン付きのFQDNの両方を列挙すること。

[root@adserver ~]# cat /etc/hosts&lt;br&gt;<br>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4&lt;br&gt;<br>
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6&lt;br&gt;<br>
172.17.44.40    adserver adserver.adosakana.local&lt;br&gt;<br>
[root@adserver ~]#

2. 好みに応じて使うツールをインストール
セッションが途中で切れても良い様に「screen」と、ファイルダウンロードするためにwget(curlでもいいのですが)をインストールします。

[root@adserver ~]# yum install wget screen&lt;br&gt;<br>
<略>&lt;br&gt;<br>
[root@adserver ~]#

3. 必要なパッケージをインストール
Samba公式の「Operating system requirements/Dependencies – Libraries and programs」に記載されているパッケージをインストール

[root@adserver ~]# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \&lt;br&gt;<br>
       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \&lt;br&gt;<br>
       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \&lt;br&gt;<br>
       python-crypto gnutls-devel libattr-devel keyutils-libs-devel \&lt;br&gt;<br>
       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \&lt;br&gt;<br>
       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel&lt;br&gt;<br>
<略>&lt;br&gt;<br>
[root@adserver ~]#

4. sambaのtar.gzをダウンロード

[root@adserver ~]# wget https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz&lt;br&gt;<br>
--2016-xx-xx xx:xx:xx--  https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz&lt;br&gt;<br>
download.samba.org をDNSに問いあわせています... 144.76.82.156&lt;br&gt;<br>
download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。&lt;br&gt;<br>
HTTP による接続要求を送信しました、応答を待っています... 200 OK&lt;br&gt;<br>
長さ: 20715838 (20M) [application/gzip]&lt;br&gt;<br>
`samba-4.7.5.tar.gz' に保存中&lt;/p&gt;<br>
&lt;p&gt;100%[======================================&amp;gt;] 16,862,398  3.71MB/s 時間 5.5s&lt;/p&gt;<br>
&lt;p&gt;2018-03-xx xx:xx:xx (2.93 MB/s) - `samba-4.7.5.tar.gz' へ保存完了 [16862398/16862398]&lt;/p&gt;<br>
&lt;p&gt;[root@adserver ~]#

5. configure実施

[root@adserver ~]# tar xfz samba-4.7.5.tar.gz&lt;br&gt;<br>
[root@adserver ~]# cd samba-4.7.5&lt;br&gt;<br>
[root@adserver samba-4.7.5]# ./configure&lt;br&gt;<br>
Checking for program gcc or cc           : /usr/bin/gcc&lt;br&gt;<br>
Checking for program cpp                 : /usr/bin/cpp&lt;br&gt;<br>
<略>&lt;br&gt;<br>
Checking if toolchain accepts -fstack-protector                                                 : yes&lt;br&gt;<br>
'configure' finished successfully (2m43.587s)&lt;br&gt;<br>
[root@adserver samba-4.7.5]#

6. make & make install

[root@adserver samba-4.7.5]# make&lt;br&gt;<br>
WAF_MAKE=1 python ./buildtools/bin/waf build&lt;br&gt;<br>
Waf: Entering directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
<略>&lt;br&gt;<br>
Note: Writing nmblookup4.1&lt;br&gt;<br>
Waf: Leaving directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
'build' finished successfully (22m56.876s)&lt;br&gt;<br>
[root@adserver samba-4.7.5]# make install&lt;br&gt;<br>
WAF_MAKE=1 python ./buildtools/bin/waf install&lt;br&gt;<br>
Waf: Entering directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
<略>&lt;br&gt;<br>
* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm&lt;br&gt;<br>
Waf: Leaving directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
'install' finished successfully (6m48.094s)&lt;br&gt;<br>
[root@adserver samba-4.7.5]#

7. インストール完了確認

sambaのバージョン確認

[root@adserver ~]# /usr/local/samba/sbin/samba -V&lt;br&gt;<br>
Version 4.7.5&lt;br&gt;<br>
[root@adserver ~]#

8. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。

なお、「–use-rfc2307」はADにNIS連携機能を追加するオプションです。AD上にUnix用のUID/GID/shell情報なども格納できるようにします。Samba環境では有効にしておくべきものです。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive&lt;br&gt;<br>
Realm [ADOSAKANA.LOCAL]:&lt;br&gt;<br>
 Domain [ADOSAKANA]:&lt;br&gt;<br>
 Server Role (dc, member, standalone) [dc]:&lt;br&gt;<br>
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:&lt;br&gt;<br>
 DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]:&lt;br&gt;<br>
Administrator password:&lt;br&gt;<br>
Retype password:&lt;br&gt;<br>
Looking up IPv4 addresses&lt;br&gt;<br>
Looking up IPv6 addresses&lt;br&gt;<br>
No IPv6 address will be assigned&lt;br&gt;<br>
Setting up secrets.ldb&lt;br&gt;<br>
Setting up the registry&lt;br&gt;<br>
Setting up the privileges database&lt;br&gt;<br>
Setting up idmap db&lt;br&gt;<br>
Setting up SAM db&lt;br&gt;<br>
Setting up sam.ldb partitions and settings&lt;br&gt;<br>
Setting up sam.ldb rootDSE&lt;br&gt;<br>
Pre-loading the Samba 4 and AD schema&lt;br&gt;<br>
Adding DomainDN: DC=adosakana,DC=local&lt;br&gt;<br>
Adding configuration container&lt;br&gt;<br>
Setting up sam.ldb schema&lt;br&gt;<br>
Setting up sam.ldb configuration data&lt;br&gt;<br>
Setting up display specifiers&lt;br&gt;<br>
Modifying display specifiers&lt;br&gt;<br>
Adding users container&lt;br&gt;<br>
Modifying users container&lt;br&gt;<br>
Adding computers container&lt;br&gt;<br>
Modifying computers container&lt;br&gt;<br>
Setting up sam.ldb data&lt;br&gt;<br>
Setting up well known security principals&lt;br&gt;<br>
Setting up sam.ldb users and groups&lt;br&gt;<br>
Setting up self join&lt;br&gt;<br>
Adding DNS accounts&lt;br&gt;<br>
Creating CN=MicrosoftDNS,CN=System,DC=adosakana,DC=local&lt;br&gt;<br>
Creating DomainDnsZones and ForestDnsZones partitions&lt;br&gt;<br>
Populating DomainDnsZones and ForestDnsZones partitions&lt;br&gt;<br>
Setting up sam.ldb rootDSE marking as synchronized&lt;br&gt;<br>
Fixing provision GUIDs&lt;br&gt;<br>
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf&lt;br&gt;<br>
Setting up fake yp server settings&lt;br&gt;<br>
Once the above files are installed, your Samba AD server will be ready to use&lt;br&gt;<br>
Server Role:           active directory domain controller&lt;br&gt;<br>
Hostname:              adserver&lt;br&gt;<br>
NetBIOS Domain:        ADOSAKANA&lt;br&gt;<br>
DNS Domain:            adosakana.local&lt;br&gt;<br>
DOMAIN SID:            S-1-5-21-98280047-2622333268-1688910966&lt;/p&gt;<br>
&lt;p&gt;[root@adserver ~]#

なお、password_hashでエラーとなるとおもいます。
現状の /etc/krb5.conf の内容が問題で発生しています。
この後の手順で正しいものに置き換えるので、この段階では単純に「mv /etc/krb5.conf /etc/krb5.conf.org」などの手段で別の名前として使わなくすれば大丈夫です。

Setting up sam.ldb users and groups&lt;br&gt;<br>
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:3132&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run&lt;br&gt;<br>
    return self.run(*args, **kwargs)&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 474, in run&lt;br&gt;<br>
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision&lt;br&gt;<br>
    skip_sysvolacl=skip_sysvolacl)&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill&lt;br&gt;<br>
    next_rid=next_rid, dc_rid=dc_rid)&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb&lt;br&gt;<br>
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif&lt;br&gt;<br>
    ldb.add_ldif(data, controls)&lt;br&gt;<br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 229, in add_ldif&lt;br&gt;<br>
    self.add(msg, controls)

9. sambaを起動

[root@adserver ~]# ps -ef|grep samba&lt;br&gt;<br>
root     11129 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba&lt;br&gt;<br>
[root@adserver ~]# /usr/local/samba/sbin/samba&lt;br&gt;<br>
[root@adserver ~]# ps -ef|grep samba&lt;br&gt;<br>
root     11131     1 14 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11132 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11133 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11134 11132  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11135 11134 19 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
root     11136 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11137 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11138 11131 21 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11139 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11140 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11141 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11142 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11143 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11144 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11145 11142  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11146 11131  2 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11147 11145 18 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
root     11148 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11151 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11152 11151 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_dnsupdate&lt;br&gt;<br>
root     11153 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
root     11154 11153 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_spnupdate&lt;br&gt;<br>
root     11157 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
root     11158 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
root     11160 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba&lt;br&gt;<br>
root     11161 11147  0 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
[root@adserver ~]#

10.動作確認
CentOS内部からSMB接続を行うテストを実施。

[root@adserver ~]# /usr/local/samba/bin/smbclient --version&lt;br&gt;<br>
Version 4.7.5&lt;br&gt;<br>
[root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U%&lt;/p&gt;<br>
&lt;p&gt;        Sharename       Type      Comment&lt;br&gt;<br>
        ---------       ----      -------&lt;br&gt;<br>
        netlogon        Disk&lt;br&gt;<br>
        sysvol          Disk&lt;br&gt;<br>
        IPC$            IPC       IPC Service (Samba 4.7.5)&lt;br&gt;<br>
Reconnecting with SMB1 for workgroup listing.&lt;/p&gt;<br>
&lt;p&gt;        Server               Comment&lt;br&gt;<br>
        ---------            -------&lt;/p&gt;<br>
&lt;p&gt;        Workgroup            Master&lt;br&gt;<br>
        ---------            -------&lt;br&gt;<br>
[root@adserver ~]#

以前は「Domain=[ADOSAKANA.LOCAL] OS=[Unix] Server=[Samba x.y.z]」という出力もあったのですが、Samba 4.7.5では無くなったようです。

netlogon共有にAdministrator権限でアクセスできるか確認。

[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'&lt;br&gt;<br>
Enter Administrator's password:&lt;br&gt;<br>
  .                                   D        0  Fri Mar  2 15:53:48 2018&lt;br&gt;<br>
  ..                                  D        0  Fri Mar  2 15:58:16 2018&lt;/p&gt;<br>
&lt;p&gt;                14034944 blocks of size 1024. 11789628 blocks available&lt;br&gt;<br>
[root@adserver ~]#

11.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。

まず、どんなzoneが登録されているのか確認

[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator&lt;br&gt;<br>
Password for [ADOSAKANA\Administrator]:&lt;br&gt;<br>
  2 zone(s) found&lt;/p&gt;<br>
&lt;p&gt;  pszZoneName                 : adosakana.local&lt;br&gt;<br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE&lt;br&gt;<br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY&lt;br&gt;<br>
  Version                     : 50&lt;br&gt;<br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED&lt;br&gt;<br>
  pszDpFqdn                   : DomainDnsZones.adosakana.local&lt;/p&gt;<br>
&lt;p&gt;  pszZoneName                 : _msdcs.adosakana.local&lt;br&gt;<br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE&lt;br&gt;<br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY&lt;br&gt;<br>
  Version                     : 50&lt;br&gt;<br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED&lt;br&gt;<br>
  pszDpFqdn                   : ForestDnsZones.adosakana.local&lt;br&gt;<br>
[root@adserver ~]#

Active Directoryで使用するDNSのSRVレコードが登録されているかをhostコマンドを使って確認。

[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1&lt;br&gt;<br>
Using domain server:&lt;br&gt;<br>
Name: 127.0.0.1&lt;br&gt;<br>
Address: 127.0.0.1#53&lt;br&gt;<br>
Aliases:&lt;/p&gt;<br>
&lt;p&gt;_ldap._tcp.adosakana.local has SRV record 0 100 389 adserver.adosakana.local.&lt;br&gt;<br>
[root@adserver ~]# host -t SRV _kerberos._udp.adosakana.local 127.0.0.1&lt;br&gt;<br>
Using domain server:&lt;br&gt;<br>
Name: 127.0.0.1&lt;br&gt;<br>
Address: 127.0.0.1#53&lt;br&gt;<br>
Aliases:&lt;/p&gt;<br>
&lt;p&gt;_kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local.&lt;br&gt;<br>
[root@adserver ~]#

ADサーバのホスト名が登録されているか確認

[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1&lt;br&gt;<br>
Using domain server:&lt;br&gt;<br>
Name: 127.0.0.1&lt;br&gt;<br>
Address: 127.0.0.1#53&lt;br&gt;<br>
Aliases:&lt;/p&gt;<br>
&lt;p&gt;adserver.adosakana.local has address 172.17.44.40&lt;br&gt;<br>
[root@adserver ~]#

12. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え

13. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf に元となるものがあるので、それを使用する。

[root@adserver ~]# cat /etc/krb5.conf&lt;br&gt;<br>
[logging]&lt;br&gt;<br>
 default = FILE:/var/log/krb5libs.log&lt;br&gt;<br>
 kdc = FILE:/var/log/krb5kdc.log&lt;br&gt;<br>
 admin_server = FILE:/var/log/kadmind.log&lt;/p&gt;<br>
&lt;p&gt;[libdefaults]&lt;br&gt;<br>
 default_realm = EXAMPLE.COM&lt;br&gt;<br>
 dns_lookup_realm = false&lt;br&gt;<br>
 dns_lookup_kdc = false&lt;br&gt;<br>
 ticket_lifetime = 24h&lt;br&gt;<br>
 renew_lifetime = 7d&lt;br&gt;<br>
 forwardable = true&lt;/p&gt;<br>
&lt;p&gt;[realms]&lt;br&gt;<br>
 EXAMPLE.COM = {&lt;br&gt;<br>
  kdc = kerberos.example.com&lt;br&gt;<br>
  admin_server = kerberos.example.com&lt;br&gt;<br>
 }&lt;/p&gt;<br>
&lt;p&gt;[domain_realm]&lt;br&gt;<br>
 .example.com = EXAMPLE.COM&lt;br&gt;<br>
 example.com = EXAMPLE.COM&lt;br&gt;<br>
[root@adserver ~]# cat /usr/local/samba/private/krb5.conf&lt;br&gt;<br>
[libdefaults]&lt;br&gt;<br>
        default_realm = ADOSAKANA.LOCAL&lt;br&gt;<br>
        dns_lookup_realm = false&lt;br&gt;<br>
        dns_lookup_kdc = true&lt;br&gt;<br>
[root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf&lt;br&gt;<br>
cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y&lt;br&gt;<br>
[root@adserver ~]# cat /etc/krb5.conf&lt;br&gt;<br>
[libdefaults]&lt;br&gt;<br>
        default_realm = ADOSAKANA.LOCAL&lt;br&gt;<br>
        dns_lookup_realm = false&lt;br&gt;<br>
        dns_lookup_kdc = true&lt;br&gt;<br>
[root@adserver ~]#

14. Kerberosの動作確認

kinitコマンドを実行して確認します。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL&lt;br&gt;<br>
Password for administrator@ADOSAKANA.LOCAL:&lt;br&gt;<br>
Warning: Your password will expire in 41 days on 2018年04月13日 15時58分15秒&lt;br&gt;<br>
[root@adserver ~]#

正常に設定されていれば、上記の様にAdministratorユーザのパスワード有効期限が表示されます。

ドメイン名指定の大文字/小文字を間違えると下記の様なエラーとなります。

[root@adserver ~]# kinit administrator@adosakana.local&lt;br&gt;<br>
Password for administrator@adosakana.local:&lt;br&gt;<br>
kinit: KDC reply did not match expectations while getting initial credentials&lt;br&gt;<br>
[root@adserver ~]#

また、DNSサーバ指定が誤っている場合は下記の様なエラーです。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL&lt;br&gt;<br>
kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials&lt;br&gt;<br>
[root@adserver ~]#

「klist」コマンドを実行することでも確認出来ます。

[root@adserver ~]# klist&lt;br&gt;<br>
Ticket cache: FILE:/tmp/krb5cc_0&lt;br&gt;<br>
Default principal: administrator@ADOSAKANA.LOCAL&lt;/p&gt;<br>
&lt;p&gt;Valid starting       Expires              Service principal&lt;br&gt;<br>
2018-03-02T16:06:21  2018-03-03T02:06:21  krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL&lt;br&gt;<br>
        renew until 2018-03-03T16:06:18&lt;br&gt;<br>
[root@adserver ~]#

15. フォレストとドメインの機能レベル確認
作成したActive Directoryのドメインの機能レベルとフォレストの機能レベルを確認します。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show&lt;br&gt;<br>
Domain and forest function level for domain 'DC=adosakana,DC=local'&lt;/p&gt;<br>
&lt;p&gt;Forest function level: (Windows) 2008 R2&lt;br&gt;<br>
Domain function level: (Windows) 2008 R2&lt;br&gt;<br>
Lowest function level of a DC: (Windows) 2008 R2&lt;br&gt;<br>
[root@adserver ~]#

Samba 4.7.5では、Windows Sevrer 2008R2と設定されているようです。

16. firewalldの設定

CentOS7ではfirewalldによりポートが制限されています。
現状を「firewall-cmd –list-all」で確認。

# firewall-cmd --list-all&lt;br&gt;<br>
public (active)&lt;br&gt;<br>
  target: default&lt;br&gt;<br>
  icmp-block-inversion: no&lt;br&gt;<br>
  interfaces: ens160&lt;br&gt;<br>
  sources:&lt;br&gt;<br>
  services: ssh dhcpv6-client&lt;br&gt;<br>
  ports:&lt;br&gt;<br>
  protocols:&lt;br&gt;<br>
  masquerade: no&lt;br&gt;<br>
  forward-ports:&lt;br&gt;<br>
  source-ports:&lt;br&gt;<br>
  icmp-blocks:&lt;br&gt;<br>
  rich rules:&lt;br&gt;<br>
# 

開けるべきポートのテンプレートがあらかじめ用意されているので「firewall-cmd –get-services」を実行して確認します。

# firewall-cmd --get-services&lt;br&gt;<br>
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server&lt;br&gt;<br>
#

SambaをADとして使う場合のポートを「Samba AD DC Port Usage」で確認します。

CentOS7のfirewalldで定義されているものと待避させてみると・・・

サービス ポート プロトコル firewalld定義
DNS 53 tcp/udp dns
Kerberos 88 tcp/udp kerberos,freeipa-ldap,freeipa-ldaps
End Point Mapper (DCE/RPC Locator Service) 135 tcp freeipa-trust
NetBIOS Name Service 137 udp samba,samba-client
NetBIOS Datagram 138 udp samba,samba-client,freeipa-trust
NetBIOS Session 139 tcp samba,freeipa-trust
LDAP 389 tcp/udp freeipa-trust(ldap,freeipa-ldapはtcpのみ)
SMB over TCP 445 tcp samba,freeipa-trust(freeipa-trustはudpも含む)
Kerberos kpasswd 464 tcp/udp kpasswd,freeipa-ldap,freeipa-ldaps
LDAPS 636 tcp ldaps,freeipa-ldaps
Dynamic RPC Ports(4.7以前) 1024-1300 tcp freeipa-trust
Dynamic RPC Ports(samba 4.7以降) 49152-65535 tcp ?
Global Catalog 3268 tcp freeipa-trust
Global Catalog SSL 3269 tcp なし

・firewalldの定義「samba」「dns」「freeipa-ldaps」「freeipa-trust」を使用
・「Dynamic RPC Ports(samba 4.7以降):49152-65535」を追加するか、smb.confで「rpc server port」を定義するか。
・「Global Catalog SSL:3269」を追加

# firewall-cmd --permanent --zone=public --add-service=samba&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --permanent --zone=public --add-service=dns&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-ldaps&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-trust&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --reload&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --list-all&lt;br&gt;<br>
public (active)&lt;br&gt;<br>
  target: default&lt;br&gt;<br>
  icmp-block-inversion: no&lt;br&gt;<br>
  interfaces: ens160&lt;br&gt;<br>
  sources:&lt;br&gt;<br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust&lt;br&gt;<br>
  ports:&lt;br&gt;<br>
  protocols:&lt;br&gt;<br>
  masquerade: no&lt;br&gt;<br>
  forward-ports:&lt;br&gt;<br>
  source-ports:&lt;br&gt;<br>
  icmp-blocks:&lt;br&gt;<br>
  rich rules:&lt;/p&gt;<br>
&lt;p&gt;#

# firewall-cmd --permanent --zone=public --add-port=49152-65535/tcp&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --permanent --zone=public --add-port=3269/tcp&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --reload&lt;br&gt;<br>
success&lt;br&gt;<br>
# firewall-cmd --list-all&lt;br&gt;<br>
public (active)&lt;br&gt;<br>
  target: default&lt;br&gt;<br>
  icmp-block-inversion: no&lt;br&gt;<br>
  interfaces: ens160&lt;br&gt;<br>
  sources:&lt;br&gt;<br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust&lt;br&gt;<br>
  ports: 49152-65535/tcp 3269/tcp&lt;br&gt;<br>
  protocols:&lt;br&gt;<br>
  masquerade: no&lt;br&gt;<br>
  forward-ports:&lt;br&gt;<br>
  source-ports:&lt;br&gt;<br>
  icmp-blocks:&lt;br&gt;<br>
  rich rules:&lt;br&gt;<br>
#

17. systemdへの登録
systemdへの登録については「Managing the Samba AD DC Service Using Systemd」を参照のこと
CentOS6の場合は「Managing the Samba AD DC Service Using an Init Script

以上で設定は終了です。

既存のSamba 4.5以前を4.7へアップデートする場合の注意点



あまり考えずに既存のSamba 4.4.x環境を最新のSamba 4.7.xにアップデートをした。
ようは、configure;make;make install。

が・・・「Updating Samba」を見ると、Samba 4.5.0で「replPropertyMetaData」の取り扱いが変わったので修正しなければならない、という記載が・・・

修正が必要かどうかは「samba-tool dbcheck –cross-ncs」で確認出来る、とのこと

問題なければ、下記の出力・・・

# samba-tool dbcheck --cross-ncs
Checking 3602 objects
Checked 3602 objects (0 errors)
#

問題がある場合は下記の様な形でエラーが報告されます。
ちなみに、エラーのテキスト出力が6.5MBありました・・・

# samba-tool dbcheck --cross-ncs --fix --yes
Checking 3602 objects
CN=MHS-OR-Address,CN=Schema,CN=Configuration,DC=adosakana,DC=local: 0x0009030e
CN=MHS-OR-Address,CN=Schema,CN=Configuration,DC=adosakana,DC=local: 0x00090177
<略>
Checked 3602 objects (3467 errors)
#

「samba-tool dbcheck –cross-ncs –fix –yes」を実行することで修正されました。

また、4.0以前のバージョンからアップデートした場合にSYSVOLの修復を行うために「samba-tool ntacl sysvolreset」を実行するという記述があったので、試しにSYSVOLのチェック「samba-tool ntacl sysvolcheck」を実行してみると、下記のエラーが発生。

# samba-tool ntacl sysvolcheck

ERROR(<class 'samba.provision.ProvisioningError'>): uncaught exception - ProvisioningError: DB ACL on GPO directory /usr/local/samba/var/locks/sysvol/adosakana.local/Policies/{20AA5877-2399-4CBC-8BA4-7F23D8810774} O:DAG:DAD:PAI(A;OICI;0x001f01ff;;;DA)(A;OICI;0x001f01ff;;;EA)(A;OICIIO;0x001f01ff;;;CO)(A;OICI;0x001f01ff;;;DA)(A;OICI;0x001f01ff;;;SY)(A;OICI;0x001200a9;;;AU)(A;OICI;0x001200a9;;;ED) does not match expected value O:DAG:DAD:P(A;OICI;0x001f01ff;;;DA)(A;OICI;0x001f01ff;;;EA)(A;OICIIO;0x001f01ff;;;CO)(A;OICI;0x001f01ff;;;DA)(A;OICI;0x001f01ff;;;SY)(A;OICI;0x001200a9;;;AU)(A;OICI;0x001200a9;;;ED) from GPO object
  File "/usr/local/samba/lib64/python2.6/site-packages/samba/netcmd/__init__.py", line 176, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib64/python2.6/site-packages/samba/netcmd/ntacl.py", line 270, in run
    lp)
  File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 1723, in checksysvolacl
    direct_db_access)
  File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 1674, in check_gpos_acl
    domainsid, direct_db_access)
  File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 1621, in check_dir_acl
    raise ProvisioningError('%s ACL on GPO directory %s %s does not match expected value %s from GPO object' % (acl_type(direct_db_access), path, fsacl_sddl, acl))
#

「samba-tool ntacl sysvolreset」を実行して修正。

# samba-tool ntacl sysvolreset
# samba-tool ntacl sysvolcheck
#

samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた



以前試したときはうまくいかなかったが、どうやら、動くらしい、という話を聞いて試してみた。

Samba 4.7.4で、ドメインレベル/フォレストレベルをWindows Server 2008R2に設定した状態で実施。
(レベルの確認・変更については「samba 4.xでドメイン/フォレストの機能レベルを変更する」を参照のこと)

クラスタの検証は問題なく通過し、実際に組んで見るとネットワークへのリソース名登録周りでエラーが発生。

ログの名前:         System
ソース:           Microsoft-Windows-FailoverClustering
日付:            2018/02/28 18:41:44
イベント ID:       1194
タスクのカテゴリ:      ネットワーク名リソース
レベル:           エラー
キーワード:         
ユーザー:          SYSTEM
コンピューター:       server1.adosakana.local
説明:
クラスター ネットワーク名リソース 'クラスタリソース1' は、ドメイン 'adosakana.local' の関連付けられたコンピューター オブジェクトを作成できませんでした (期間: Resource online)。

関連するエラー コードのテキストは次のとおりです: アクセスが拒否されました。

ドメイン管理者と協力して、次のことを確認してください。
- クラスター ID 'クラスタ名$' が、コンピューター オブジェクトを作成するためのアクセス許可を持っていること。既定では、すべてのコンピューター オブジェクトがクラスター ID 'クラスタ名$' と同じコンテナー内に作成されます。
- コンピューター オブジェクトのクォータに達していないこと。
- 既存のコンピューター オブジェクトがある場合は、[Active Directory ユーザーとコンピューター] のツールを使用して、クラスター ID 'クラスタ名$' にそのコンピューター オブジェクトに対するフル コントロールのアクセス許可があることを確認してください。

解決方法はMicrosoftのKB「クラスター環境においてクライアント アクセス ポイントを作成または削除した際、イベント ID 1222 と 1197 が記録される。」にあるままでした。
下記の設定を行ったところ、クラスタが起動するようになりました。

1. Domain Administrator権限を持っているユーザで「Active Directory ユーザーとコンピューター」を開く
2. 「表示」-「拡張機能」を選択し、セキュリティなどの設定が表示される状態に変更
3. 「Computers」コンテナのプロパティを開く
4. 「セキュリティ」タブの「詳細設定」を開く
5. 「追加」を開く
6. まず、「プリンシパルの選択」のリンクをクリック
 「オブジェクトの種類」を開き、「コンピュータ」にチェックを入れる
 「選択するオブジェクト名を入力してください」の下の欄にエラーがでた「クラスタ名」を入力
 「名前を確認」してOK
7. 種類「許可」、適用先「このオブジェクトとすべての子オブジェクト」が選択されていることを確認
8. アクセス許可は「すべてのプロパティの読み取り」と「すべての子オブジェクトの作成」にチェック
 他の項目は標準設定のままで良い
9. この設定でセキュリティの追加を完了する