多くのサイトがidmap backend=ridでの構築方法を紹介していますが、本稿はSamba4 の AD DC(Active directory Domain Controller)を idmap backend=ad にて構築する方法です。要点としては、グループとユーザに対し、rfc2307スキーマ拡張分のデータを設定する必要がある、ということになります。
以下、フレッシュインストールの方法です。なお、OSはDebian 10/Buster, Samba4のバージョンは、4.9.5、インストール言語は日本語(LANG=ja_JP.UTF-8)、ファイルシステムはbtrfsにて確認しています。
また、先に、a. hostname, b. Active Directory Domain Name, c. fqdn domain name, d4. server ipv4 address, d6. server ipv6 address, e. dns forwarder を決めておきます。本稿では、
a. sv63
b. MYDOMAIN
c. mydomain.site
d4. 10.1.4.63/24
d6. 2www.xxxx.yyyy.zzzz::63/64
e. 2606:4700:4700::1111 1.1.1.1
としました。(2021/04/29:IPv6設定を追加しました。)上述のOSへの設定方法は割愛します。また、本稿では、ad dcにwinbindにてログインはしない前提としています。
信頼関係については設定しない前提でのインストールとしています。このため、DNSについては、SAMBA_INTERNALを使用します。(信頼関係を設定する場合、信頼関係を設定するドメインに対して名前解決する必要があるので、BIND9_DLZを使用する必要があります。)
なお、AD DC上では、そもそもidmapについては、backend adはbackend ridと同じくサポートされません。(samba wikiより)Identity Mapping works different on a Samba domain controller (DC) than on a domain member. For example, setting up an ID mapping back end, such as
また、samba wikiによるとad dc上での共有設定は非推奨ですので、本稿では共有設定は外してあります。Winbindありかつ共有設定ありについてはこちらで投稿しているので参考にしてください。
1. パッケージのインストール
debianはデフォルトではsudoが入っていないので、初めにsudoを入れてください。sudoの設定方法は割愛します。
(2021/04/07追記:samba-dsdb-modulesとsamba-vfs-modulesを追加しました。)
(2021/04/25:libpam-winbind libnss-winbind はad dc上では非推奨のため削除しました。なおwinbindは作業上必要なのでインストールしています。)
Debian 10 Busterの場合、以下のようにすることでsamba-ad-dcが起動できるようになります。(ちなみにUBUNTU 1804 Bionicでも同じです。)
まず、defaultのsmb.confをバックアップしておきます。
最後のsrvはテスト共有となります。(2021/04/25追記)samba ad dc上での共有設定はsamba wikiにあるように非推奨ですので、/srv 共有設定は削除しました。
2021/04/25:ad dc上でのwinbind認証は非推奨のため削除
4. 認証関連の設定。
使用するパッケージは先にインストールされているので、必要な設定を行います。
まずは、/etc/nsswitch.confです。passwdとgroupの行にだけ、winbindを追加します。
passwd: compat systemd winbind group: compat systemd winbind shadow: compat
これは、passwdとgroupに対し、winbind認証を追加する、という意味になります。なお、shadowについては、samba wikiによると、設定しないように書いてありました。
続いて、ad dc上でwinbind認証を使ってログインさせ、ホームディレクトリを自動で作成させたい場合は、
sudo pam-auth-update
としてください。設定したい項目を聞いてくるので、
[*] Create home directory on login
のようにチェックを入れます。(スペースキーでチェックが入ります。)
5. SAMBA DNSの動作確認とシステムプライマリDNSの変更
システムのプライマリDNSを、SAMBAのDNSに変更します。/etc/resolv.confを
6. samba ad dcの起動
以下のコマンドで起動します。今回の設定ではDNSはSAMBA_INTERNALなので、これだけでOKです。
7. デフォルトユーザとグループに対するuid/gidの付与
ここからが、idmap backend = ridと全く違うところです。(この時、idmapの範囲や付与するIDのベースを先に検討・決定する必要があり、idmap range=20000-3999999とし、BUILTINおよびGroupに対する付与は、28000からを割り当ててあります。2021/04/02追記:なおidmap rangeはたとえば10000-19999999などとして運用しても問題ありませんが、他のドメインと信頼関係を結ぶ場合、idmap rangeは重複させてはいけませんのでその点ご注意ください。)(2021/04/25 ad dc上でのWinbindなし、共有設定なしの場合、BULTINに対するidmapは不要なので削除しました。)
まず、builtin groupに対し、gidを付与します。mod-builtin-grp.shというスクリプトを/etc/samba以下に作成します。
2021/04/02: DN指定が抜けている点、修正しました。
2021/04/27: ビルトイングループはsamba上では内部的にDOM01とは異なるドメインとして取り扱うので、UID_BASEを18000に変更しました。
sudo sh mod-builtin-grp.sh
としBUILTIN Groupにgidを付与します。
続いて、同様に、
まず、Domain のグループに対し、gidを付与します。mod-mydomain.site-grp.shという名前のスクリプトとします。
Builtin, Domain Groups, Administrator, Guest, krbtgtに対してuid/gid等を付与できました。続いて最後にテスト用のユーザを登録します。通常のsambaのユーザ登録と異なるのは、uid, uidNumber, gidNumber, loginShell, nisdomainといったrfc2307スキーマ拡張で必要な情報を付与している点です。なお、gid-number=28513は、domain usersのSID513に、スクリプトに記述してある前述のUID_BASEである28000を加算したものです。uid-numberについては、本稿では、idmap range = 20000-3999999としていますので、最初のテストユーザということで、uid-number=20000としてあります。また、idmap config MYDOMAIN: backend=ridとは異なり、ユーザの個別にlogin shellやhome directoryを設定できますので、パラメータを適宜置き換えてください。こちらのコマンドも、ad dc上で行ってください。
8.NTPの設定
NTPはインストールしてあるので、
編集後、ntpを再起動しておいてください。
続いて、動作確認のため、メンバーマシンにsambaおよびwinbind等をインストールします。
続いてメンバーマシンの/etc/samba/smb.confの一部は例として以下の様にします。
これでもDNSレコードの追加に失敗する場合、samba-toolやrsatを使って手動でレコードを追加してください。 ドメインに参加できたら、以下の様にしてwinbindの設定を行います。
続いてメンバーマシン上でid確認をします。wbinfo のコマンドだけだと面倒なのでスクリプト化しました。(2021/04/25削除)まず、builtin に対して、gidが指定された範囲に入っているか確認します。(2021/04/25:追記: winbind認証はad dc上では非推奨ですので、gid/uidの確認は参加済のメンバーサーバ・メンバーマシンで行ってください。)スクリプトは以下の通りです。
既存グループの確認を行います。
最後にユーザのuid/gidを確認します。スクリプトは以下の通りです。
ここまでで設定が(2021/04/25追記:メンバーマシン・メンバーサーバ上で)反映されない場合は、AD DC上で
9. 確認
最後に、windowsマシンのプライマリDNS serverを 2www.xxxx.yyyy.zzzz::63、10.1.4.63 に設定し、Samba AD DCのドメインに参加させてください。ドメイン参加後、RSATでメンバーサーバ・メンバーマシンの共有設定変更などができれば、Samba AD DCのidmap config MYDOMAIN: backend = ad の基本設定は完了です!お疲れさまでした!
2021/04/02追記: IPv6を使用している環境では、2021/04/02現在Windows10(20H2,19042.867)でネットワーク参加しようとした場合、IPv6ネームサーバアドレスをsamba ad dcのアドレスにする必要がありましたので、ドメイン参加の前にクライアントのIPv6ネームサーバの設定を確認してください。
追記:時刻同期(NTP)はメンバーサーバ/メンバーマシン上では、firewallにて、udp/123を送信受信のいずれも空けておいてください。また、Windowsでの時刻同期関係のコマンドは以下の通りです。
以下、フレッシュインストールの方法です。なお、OSはDebian 10/Buster, Samba4のバージョンは、4.9.5、インストール言語は日本語(LANG=ja_JP.UTF-8)、ファイルシステムはbtrfsにて確認しています。
また、先に、a. hostname, b. Active Directory Domain Name, c. fqdn domain name, d4. server ipv4 address, d6. server ipv6 address, e. dns forwarder を決めておきます。本稿では、
a. sv63
b. MYDOMAIN
c. mydomain.site
d4. 10.1.4.63/24
d6. 2www.xxxx.yyyy.zzzz::63/64
e. 2606:4700:4700::1111 1.1.1.1
としました。(2021/04/29:IPv6設定を追加しました。)上述のOSへの設定方法は割愛します。また、本稿では、ad dcにwinbindにてログインはしない前提としています。
信頼関係については設定しない前提でのインストールとしています。このため、DNSについては、SAMBA_INTERNALを使用します。(信頼関係を設定する場合、信頼関係を設定するドメインに対して名前解決する必要があるので、BIND9_DLZを使用する必要があります。)
なお、AD DC上では、そもそもidmapについては、backend adはbackend ridと同じくサポートされません。(samba wikiより)Identity Mapping works different on a Samba domain controller (DC) than on a domain member. For example, setting up an ID mapping back end, such as
ad (RFC2307) or rid, in the smb.conf file is not supported an can cause the samba service to fail. また、samba wikiによるとad dc上での共有設定は非推奨ですので、本稿では共有設定は外してあります。Winbindありかつ共有設定ありについてはこちらで投稿しているので参考にしてください。
1. パッケージのインストール
debianはデフォルトではsudoが入っていないので、初めにsudoを入れてください。sudoの設定方法は割愛します。
su apt-get install sudo exit続いて、sambaと関連パッケージをインストールします。
(2021/04/07追記:samba-dsdb-modulesとsamba-vfs-modulesを追加しました。)
(2021/04/25:libpam-winbind libnss-winbind はad dc上では非推奨のため削除しました。なおwinbindは作業上必要なのでインストールしています。)
sudo apt-get install ntp samba smbclient krb5-config krb5-user \ winbind ldb-tools dnsutils rsync acl samba-dsdb-modules samba-vfs-modulesここで、Kerberos関係の設定が必要な場合、以下のように設定します。Default realmの大文字小文字は区別されますので、注意してください。
"Default Kerveros version 5 realm:" MYDOMAIN.SITE Kerberos servers for your realm: sv63.mydomain.site Administrative server for your Kerberos realm: sv63.mydomain.site2. samba-ad-dcの起動関連の設定
Debian 10 Busterの場合、以下のようにすることでsamba-ad-dcが起動できるようになります。(ちなみにUBUNTU 1804 Bionicでも同じです。)
sudo /etc/init.d/smbd stop sudo /etc/init.d/nmbd stop sudo /etc/init.d/winbind stop sudo systemctl mask smbd nmbd winbind sudo systemctl disable smbd nmbd winbind sudo systemctl unmask samba-ad-dc sudo systemctl enable samba-ad-dc3. AD DCのプロビジョンと/etc/samba/smb.confの設定。
まず、defaultのsmb.confをバックアップしておきます。
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig続いてプロビジョンを行います。以下の様にするとプロンプトなしでプロビジョンできます。
sudo samba-tool domain provision \ --use-rfc2307 \ --realm=MYDOMAIN.SITE \ --domain=MYDOMAIN \ --host-name=SV63 \ --host-ip=10.1.4.63 \ --host-ip6=2www.xxxx.yyyy.zzzz::63 \ --server-role=dc \ --dns-backend=SAMBA_INTERNAL \ --adminpass P@ssw0rd01234プロビジョンが完了すると、新しいsmb.confができますが、これもバックアップしておきます。
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.00新しいsmb.confは以下の様にします。(2021/04/25: samba wikiの通り、ad dc上でのidmap_ldb:use rfc2307 = yes は非推奨のため本行およびwinbind設定行をコメント化しました。)
[global]
dns forwarder = 2606:4700:4700::1111 1.1.1.1
netbios name = SV63
realm = MYDOMAIN.SITE
server role = active directory domain controller
workgroup = MYDOMAIN
; idmap_ldb:use rfc2307 = yes ; 非推奨
; winbind nested groups =yes ; 非推奨
template shell = /usr/sbin/nologin
template homedir = /home/%D/%U
; username map = /etc/samba/user.map; 使わない場合、コメント化または空の/etc/samba/user.mapを作成する。
ea support = yes
vfs objects = acl_xattr streams_xattr
store dos attributes = yes
map acl inherit = yes
inherit permissions = yes
load printers = no
printing = bsd
printcap name = /dev/null
[netlogon]
path = /var/lib/samba/sysvol/mydomain.site/scripts
read only = No
[sysvol]
path = /var/lib/samba/sysvol
read only = No
簡単にざっくり説明しますと、dns forwarderからwinbind nested groupsまでが、backend ad(rid)のad dc基本設定です。templateはad dc サーバ上でのunix userのログイン設定です。username map については、こちらを参照してください。ea support から inherit permissionsまでが共有の基本的な共通設定です。load printersからprintcap nameまでは、プリンターをad dc上では使わない設定となります。netlogonとsysvolはad dcのシステム共有です。2021/04/25:ad dc上でのwinbind認証は非推奨のため削除
使用するパッケージは先にインストールされているので、必要な設定を行います。
まずは、/etc/nsswitch.confです。passwdとgroupの行にだけ、winbindを追加します。
passwd: compat systemd winbind group: compat systemd winbind shadow: compat
これは、passwdとgroupに対し、winbind認証を追加する、という意味になります。なお、shadowについては、samba wikiによると、設定しないように書いてありました。
続いて、ad dc上でwinbind認証を使ってログインさせ、ホームディレクトリを自動で作成させたい場合は、
sudo pam-auth-update
としてください。設定したい項目を聞いてくるので、
[*] Create home directory on login
のようにチェックを入れます。(スペースキーでチェックが入ります。)
システムのプライマリDNSを、SAMBAのDNSに変更します。/etc/resolv.confを
search mydomain.site domain mydomain.site nameserver 2www.xxxx.yyyy.zzzz::63 nameserver 10.1.4.63の様に、変更してください。変更がすんだら、samba-ad-dcを起動させます。
systemctl start samba-ad-dc続いてSAMBA DNSが動作しているか確認します。
host -t SRV _ldap._tcp.mydomain.site _ldap._tcp.mydomain.site has SRV record 0 100 389 sv63.mydomain.site.このような応答が帰ってきたら、SAMBA AD DCは起動できているということになります。
以下のコマンドで起動します。今回の設定ではDNSはSAMBA_INTERNALなので、これだけでOKです。
sudo systemctl start samba-ad-dc
ここからが、idmap backend = ridと全く違うところです。(この時、idmapの範囲や付与するIDのベースを先に検討・決定する必要があり、idmap range=20000-3999999とし、BUILTINおよびGroupに対する付与は、28000からを割り当ててあります。2021/04/02追記:なおidmap rangeはたとえば10000-19999999などとして運用しても問題ありませんが、他のドメインと信頼関係を結ぶ場合、idmap rangeは重複させてはいけませんのでその点ご注意ください。)(2021/04/25 ad dc上でのWinbindなし、共有設定なしの場合、BULTINに対するidmapは不要なので削除しました。)
2021/04/02: DN指定が抜けている点、修正しました。
2021/04/27: ビルトイングループはsamba上では内部的にDOM01とは異なるドメインとして取り扱うので、UID_BASEを18000に変更しました。
#!/bin/sh
UID_BASE=18000
SAM_LDB=/var/lib/samba/private/sam.ldb
DN="dc=mydomain,dc=site"
rm -rf wrk
mkdir -p wrk
wbinfo -g --domain=BUILTIN | awk 'BEGIN{FS="\\"}{print $2}' > wrk/grp.txt
while IFS= read grpString; do \
RID=`wbinfo -n "BUILTIN\\\\$grpString" | awk '{print $1}' | sed -e 's/-/ /g' | awk '{print $5}'`
echo $RID
cat > wrk/$RID.ldif <<EOF;
dn: cn=$grpString,cn=Builtin,$DN
changetype: modify
-
replace: gidNumber
gidNumber: $(($UID_BASE + $RID))
-
EOF
echo modifying $grpString ...
ldbmodify -H $SAM_LDB wrk/$RID.ldif
done < wrk/grp.txt
これを、
sudo sh mod-builtin-grp.sh
としBUILTIN Groupにgidを付与します。
続いて、同様に、
#!/bin/sh
UID_BASE=28000
DN="dc=mydomain,dc=site"
SAM_LDB=/var/lib/samba/private/sam.ldb
rm -rf wrk
mkdir -p wrk
wbinfo -g | awk 'BEGIN{FS="\\"}{print $2}' > wrk/grp.txt
#wbinfo -g --domain=BUILTIN | awk 'BEGIN{FS="\\"}{print $2}' >> wrk/grp.txt
while IFS= read grpString; do \
RID=`wbinfo -n "$grpString" | awk '{print $1}' | sed -e 's/-/ /g' | awk '{print $8}'`
cat > wrk/$RID.ldif <<EOF;
dn: cn=$grpString,cn=Users,$DN
changetype: modify
-
replace: gidNumber
gidNumber: $(($UID_BASE + $RID))
-
EOF
echo modifying $grpString RID=$RID ...
ldbmodify -H $SAM_LDB wrk/$RID.ldif
done < wrk/grp.txt
cd /etc/samba/ sudo sh mod-mydomain.site-grp.shとし、Domainのグループに対し、gidを付与します。 追記:2021/04/09: krbtgtの記述漏れを加筆修正しました。 さらに、最小限のDefaultユーザ(administrator、guest, krbtgt)に対し、uidNumber, gidNumber, loginShell, unixHomeDirectoryを付与します。 (メンバーマシンではログインはできない設定にしてあります。administratorにどうしてもログインさせたい場合は、書き換えてください。)スクリプトファイル名は、mod-mydomain.site-usr.shとします。
#!/bin/sh UID_BASE=28000 DOMAIN=MYDOMAIN HOME_BASE=/home/$DOMAIN DN="dc=mydomain,dc=site" SAM_LDB=/var/lib/samba/private/sam.ldb rm -rf wrk mkdir -p wrk cat > wrk/mod-administrator.ldif <<EOF; dn: cn=administrator,cn=Users,$DN changetype: modify - replace: uidNumber uidNumber: $(($UID_BASE + 500)) - replace: gidNumber gidNumber: $(($UID_BASE + 512)) - replace: loginShell loginShell: /usr/sbin/nologin - replace: unixHomeDirectory unixHomeDirectory: $HOME_BASE/administrator - EOF echo modifying administrator... ldbmodify -H $SAM_LDB wrk/mod-administrator.ldif cat > wrk/mod-guest.ldif <<EOF; dn: cn=guest,cn=Users,$DN changetype: modify - replace: uidNumber uidNumber: $(($UID_BASE + 501)) - replace: gidNumber gidNumber: $(($UID_BASE + 513)) - replace: loginShell loginShell: /usr/sbin/nologin - replace: unixHomeDirectory unixHomeDirectory: /nonexistent - EOF echo modifying guest... ldbmodify -H $SAM_LDB wrk/mod-guest.ldif cat > wrk/mod-krbtgt.ldif <<EOF; dn: cn=krbtgt,cn=Users,$DN changetype: modify - replace: uidNumber uidNumber: $(($UID_BASE + 502)) - replace: gidNumber gidNumber: $(($UID_BASE + 513)) - replace: loginShell loginShell: /usr/sbin/nologin - replace: unixHomeDirectory unixHomeDirectory: /nonexistent - EOF echo modifying krbtgt... ldbmodify -H $SAM_LDB wrk/mod-krbtgt.ldifこれも同様に
cd /etc/samba/ sudo sh mod-mydomain.site-usr.shとします。ここまでで、
sudo samba-tool user create user20000 P@ssw0rd98765 --description user20000 \ --nis-domain=mydomain.site --uid=user20000 --uid-number=20000 --gid-number=28513 \ --login-shell=/bin/bash --unix-home=/home/WORKS/user20000ここまで、uid/gid等の付与がすんだら、一旦、以下のコマンドで、cacheをクリアします。
sudo net cache flushさて、これで、基本的なrfc2307拡張スキーマデータを付与したわけですが、それを(2021/04/25追記:メンバーサーバ・メンバーマシンをドメインに参加させ、その上で)確認しますので先にad dc上でのNTPの設定を済ませておきます。
8.NTPの設定
NTPはインストールしてあるので、
sudo chown root:ntp /var/lib/samba/ntp_signd/ sudo chmod 750 /var/lib/samba/ntp_signd/とします。続いて/etc/ntp.confを編集します。
#以下二行にmssntpを追加。 restrict -4 default kod notrap nomodify nopeer noquery limited mssntp restrict -6 default kod notrap nomodify nopeer noquery limited mssntp #以下を追加(2021/05/10:IPv6を追記) listen on 10.1.4.63 restrict 10.1.4.0 mask 255.255.255.0 nomodify notrap nopeer noquery listen on 2www.xxxx.yyyy.zzzz::63 restrict 2www.xxxx.yyyy.zzzz:: mask ffff:ffff:ffff:ffff:: nomodify notrap nopeer noquery ntpsigndsocket /var/lib/samba/ntp_signd tinker panic 0追記:2021/04/07: ntpsigndsocketのパスの誤りを訂正しました。
編集後、ntpを再起動しておいてください。
続いて、動作確認のため、メンバーマシンにsambaおよびwinbind等をインストールします。
apt-get install libpam-winbind libnss-winbind winbind sambaパッケージのインストールエラーが出ますが、後に設定させるので無視して大丈夫です。
続いてメンバーマシンの/etc/samba/smb.confの一部は例として以下の様にします。
[global]
workgroup = MYDOMAIN
security = ADS
realm = MYDOMAIN.SITE
netbios name = SV104
vfs objects = acl_xattr streams_xattr
store dos attributes = yes
map acl inherit = yes
inherit permissions =yes
idmap config MYDOMAIN : backend = ad
idmap config MYDOMAIN : range = 20000-3999999
idmap config MYDOMAIN : schema_mode = rfc2307
idmap config MYDOMAIN : unix_nss_info = yes
idmap config MYDOMAIN : unix_primary_group = yes
idmap config * : backend = tdb
idmap config * : range = 18000-19999
winbind use default domain = yes
winbind offline logon = yes
winbind nested groups = yes
winbind enum users = yes
winbind enum groups = yes
[srv]
path = /srv
read only = No
メンバーマシンの/etc/samba/smb.confの編集が済んだら、/etc/resolv.confが以下の様になるようにしてください。
search mydomain.site domain mydomain.site nameserver ipv6_address_of_ad_dc_here nameserver ipv4_address_of_ad_dc_here名前解決ができたら、メンバーマシンからもad dcのサービスが動いているかどうか以下の様にして確認します。
nslookup > set type=SRV > _ldap._tcp.mydomain.site Server: ipv6_address_of_ad_dc_here Address: ipv6_address_of_ad_dc_here4#53 _ldap._tcp.mydomain.site service = 0 100 389 sv63.mydomain.site.次にNTPの設定をメンバーマシンで行っておきます。(2021/05/10:IPv6設定およびserver句の修正)
$ sudo apt-get install ntp $ sudo mv /etc/ntp.conf /etc/ntp.conf.orig $ sudo vi /etc/ntp.conf ###以下 # Local clock. server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Where to retrieve the time from server -6 sv63.mydomain.site iburst prefer server -4 sv63.mydomain.site iburst driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp # deny all. restrict default ignore # allow from localhost restrict -6 ::1 restrict -4 127.0.0.1 # Enable the time source(ad dc) to provide the time to this host. restrict -6 sv63.mydomain.site mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff nomodify notrap nopeer noquery restrict -4 sv63.mydomain.site mask 255.255.255.255 nomodify notrap nopeer noquery ###以上 $ sudo systemctl restart ntpNTPの設定と名前解決ができたら、以下の様にしてドメインに参加します。
net ads join -UAdministrator Enter Administrator's password: Using short domain name -- MYDOMAIN Joined 'SV104' to dns domain 'mydomain.site'なお、DNSレコードの追加に失敗する場合は、参加するメンバーマシンの/etc/hostsに以下の様に記述し、一旦 net ads leave -Uadministratorでドメインから離脱し、再度net ads join -Uadministratorとしてみてください。(固定アドレスの場合)
192.168.2.104 sv104.mydomain.site sv104 2WWWW:XXXX:YYYY:ZZZZ::104 sv104.mydomain.site sv104追記2024/05/31: ダメな場合は、join コマンドの後に
net ads dns register -U Administratorで試してください。
これでもDNSレコードの追加に失敗する場合、samba-toolやrsatを使って手動でレコードを追加してください。 ドメインに参加できたら、以下の様にしてwinbindの設定を行います。
# /etc/nsswitch.conf passwd: files winbind group: files winbind設定が済んだらnmbd smbd winbindを起動させます。
systemctl start smbd nmbd winbindメンバーマシンのsamba/winbindの基本設定は以上です。
続いてメンバーマシン上でid確認をします。wbinfo のコマンドだけだと面倒なのでスクリプト化しました。(2021/04/25削除)
#!/bin/sh rm -rf wrk mkdir -p wrk wbinfo -g --domain=BUILTIN | sed -e 's/^/getent group "/g' -e 's/$/"/g' > wrk/grp.txt sh wrk/grp.txtこれで、18000番台以降(かつ19999以下)の番号がad dc上で付与されていればBuiltinグループはOKです。続いて
#!/bin/sh DN=MYDOMAIN rm -rf wrk mkdir -p wrk wbinfo -g --domain=$DN | sed -e 's/^/getent group "/g' -e 's/$/"/g' > wrk/grp.txt sh wrk/grp.txtこちらも、28000番台以降(かつ3999999以下)の番号が(2021/04/25追記:メンバーマシン・メンバーサーバ上で)付与されていればOKです。
最後にユーザのuid/gidを確認します。スクリプトは以下の通りです。
#!/bin/sh rm -rf wrk mkdir -p wrk wbinfo -u | sed -e 's/^/getent passwd "/g' -e 's/$/"/g' > wrk/usr.txt sh wrk/usr.txtuserについては、Administrator, Guest, krbtgtにuid/gid等を付与したので、先ほどのスクリプトで付与した28000から3999999の番号が(2021/04/25追記:メンバーマシン・メンバーサーバ上で)確認できればOKです。
ここまでで設定が(2021/04/25追記:メンバーマシン・メンバーサーバ上で)反映されない場合は、AD DC上で
sudo net cache flush sudo systemctl restart samba-ad-dcまたはAD DCを再起動させてみてください。また、メンバーマシンでも
sudo net cache flush sudo systemctl restart smbd nmbd winbindとしてみてください。
9. 確認
最後に、windowsマシンのプライマリDNS serverを 2www.xxxx.yyyy.zzzz::63、10.1.4.63 に設定し、Samba AD DCのドメインに参加させてください。ドメイン参加後、RSATでメンバーサーバ・メンバーマシンの共有設定変更などができれば、Samba AD DCのidmap config MYDOMAIN: backend = ad の基本設定は完了です!お疲れさまでした!
2021/04/02追記: IPv6を使用している環境では、2021/04/02現在Windows10(20H2,19042.867)でネットワーク参加しようとした場合、IPv6ネームサーバアドレスをsamba ad dcのアドレスにする必要がありましたので、ドメイン参加の前にクライアントのIPv6ネームサーバの設定を確認してください。
追記:時刻同期(NTP)はメンバーサーバ/メンバーマシン上では、firewallにて、udp/123を送信受信のいずれも空けておいてください。また、Windowsでの時刻同期関係のコマンドは以下の通りです。
w32tm /config /update /syncfromflags:DOMHIER w32tm /config /syncfromflags:manual /manualpeerlist:"10.1.4.61,0x8 10.1.4.62,0x8" /update w32tm /resync w32tm /query /status一つ目は、同期をドメインヒエラルキーに更新するコマンドです。2番目が、同期相手の指定です。3番目が同期。4番目が確認です。 追記2021/04/12:idmap range設定を20000-3999999に変更しました。
大変有用な記事、とてもありがたく読ませていただきました。
返信削除1点、builtinのグループにgidを振るスクリプトの中で、
自分の環境だと動きが異なるところがありました。
RID=`wbinfo -n "BUILTIN\\\\$grpString" | awk '{print $1}' | sed -e 's/-/ /g' | awk '{print $5}'`
最後の方の$5が私の環境だと$8でした。
違いが出るものなのか確信できていませんが例としてコメントさせていただきました。
大変失礼しました。
削除Builtinでは上記書き込みの$5はそのままで
DNを追加すれば問題ありませんでした。
訂正いたします。
ご指摘ありがとうございます。またお越しになってください。
削除