いわゆる統合認証の一種ですが、idmap backend=adで構築したsamba ad dcから、winbindにてログイン認証を得ることで、WindowsとLinuxとで同じユーザ名とパスワードでログイン・ログオンできるようになります。さらに、idmap backend=adにしているのでlinuxマシン間ではuidが統一されます。今回はLinux端末にWinbind認証を入れ、ユーザー情報をsamba ad dcから取得・認証させる設定をしたので、備忘録として本稿を挙げてみることにしました。なお、サーバ・クライアントは共にDebian10/Busterで構築しています。
2021/05/10追記:winbind経由の認証場合、オフライン認証、サスペンド・ハイバーネーションからの復帰時の認証に難がありますが、sssd経由の場合、いずれもほぼ問題ありませんでしたので、ノートPCなどのモバイルPCでのad認証は、こちらの記事をお勧めします。
前提ですが、idmapのbackendがad(active directory)のsamba ad dc サーバは、こちらですでに構築しているものとします。
まず初めにクライアントのIPv4/IPv6アドレスですが、今回は説明のため固定にしてみました。
つづいて、クライアントマシンでの名前解決に、samba ad dc(sv63.mydomain.site 10.1.4.63)を指定します。
続いて、winbind認証を/etc/nsswitch.confに追加します。追加は、passwdとgroupのみです。
2021/05/10追記:IPv6設定を追加しました。2021/04/03現在、debian 11ではログイン情報(uidなど)を正常に受け取ることができませんでしたので、ご注意ください。今回の設定は、前述の通り、Debian 10/Busterにて動作確認しています。(追記2021/05/10)Debian11でも動作確認できました。参考までに、Windows10 20H2からsamba ad dc ドメインに参加できています。
今回は以上です。それでは。
2021/05/10追記:winbind経由の認証場合、オフライン認証、サスペンド・ハイバーネーションからの復帰時の認証に難がありますが、sssd経由の場合、いずれもほぼ問題ありませんでしたので、ノートPCなどのモバイルPCでのad認証は、こちらの記事をお勧めします。
前提ですが、idmapのbackendがad(active directory)のsamba ad dc サーバは、こちらですでに構築しているものとします。
まず初めにクライアントのIPv4/IPv6アドレスですが、今回は説明のため固定にしてみました。
#/etc/network/interfaces.d/enp2s0 auto enp2s0 iface enp2s0 inet static address 10.1.4.53 netmask 255.255.255.0 gateway 10.1.4.23 iface enp2s0 inet6 static address 2www:xxxx:yyyy:zzzz::53 netmask 60 gateway 2www:xxxx:yyyy:zzzz::23ネットワークの設定が済んだら、再起動してください。
つづいて、クライアントマシンでの名前解決に、samba ad dc(sv63.mydomain.site 10.1.4.63)を指定します。
#/etc/resolv.conf search mydomain.site domain mydomain.site nameserver 10.1.4.63 nameserver 2www:xxxx:yyyy:zzzz::63/etc/resolv.confの編集がすんだら、例えば以下の様にして、名前解決できるかどうか確認しておいてください。
ping -6 -c 4 sv63.mydomain.site ping -4 -c 4 sv63.mydomain.site
$ nslookup sv61.dom01.local Server: 10.1.4.63 Address: 10.1.4.63#53 Name: sv63.mydomain.site Address: 10.1.4.63 $ nslookup > set type=SRV > _ldap._tcp.mydomain.site. Server: 10.1.4.63 Address: 10.1.4.63#53 _ldap._tcp.mydomain.site service = 0 100 389 sv63.mydomain.site.続いて、クライアントマシンでsamba, winbindおよび関連パッケージを以下のコマンドでインストールします。
apt-get install samba winbind libpam-winbind libnss-winbind krb5-config samba-vfs-modules krb5-user ntpインストール途中で、以下の様に聞いてくる場合、今回は固定でアドレスを割り振っているので、例えば以下の様にします。
DHCP から WINS 設定を使うよう smb.conf を変更しますか? いいえなお、以下の様に聞いてくる場合、realmは大文字小文字を区別しますが、realmは通常大文字にします。
Default Kerberos version 5 realm: MYDOMAIN.SITEまた、 realmのkerberos serversを聞いてくる場合、FQDNにて samba ad dc サーバ名を小文字で入力します。
Kerberos servers for your realm: sv63.mydomain.site上述の場合、今度は管理サーバを聞いてくるので、FQDNにて samba ad dc サーバ名を小文字で入力します。
Administrative server for your Kerberos realm: sv63.mydomain.site入力が済んだら、まず、/etc/samba/smb.confをバックアップし、以下の内容にて新規でsmb.confを作成します。
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig $ sudo vi /etc/samba/smb.conf [global] workgroup = MYDOMAIN realm = MYDOMAIN.SITE security = ADS idmap config * : backend = tdb idmap config * : range = 4000000000-4199999999 idmap config MYDOMAIN : backend = ad idmap config MYDOMAIN : range = 20000-29999 idmap config MYDOMAIN : schema_mode = rfc2307 idmap config MYDOMAIN : unix_nss_info = yes idmap config MYDOMAIN : unix_primary_group = yes ea support = yes vfs objects = acl_xattr streams_xattr store dos attributes = yes map acl inherit = yes inherit permissions = yes winbind use default domain = true winbind offline logon = true winbind enum users = yes winbind enum groups = yes load printers = no printing = bsd printcap name = /dev/null [srv] path = /srv read only = No最後の[srv]は共有設定ですが、不要であれば、削除してください。またwinbind enum は中規模以上のシステムでは、なるべくnoにしてください。
続いて、winbind認証を/etc/nsswitch.confに追加します。追加は、passwdとgroupのみです。
$ sudo vi /etc/nsswitch.conf # 変更前 passwd: files systemd group: files systemd # 変更後 passwd: files systemd winbind group: files systemd winbind続いて、新規ログイン時、ホームディレクトリをクライアントマシン上で作成する場合は、以下の様にします。
sudo pam-auth-updateすると、以下の様な項目があるので、チェック * を入れOKを入力します。(チェックはスペースキーで入ります)
[ ] Create home directory on loginここで一旦、smbd, nmbd, winbindを停止します。
systemctl stop smbd nmbd winbind以上の設定がすんだら、ドメインに参加します。
$ sudo net ads join -U Administrator Enter Administrator's password: Using short domain name -- MYDOMAIN Joined 'L53' to dns domain 'mydomain.site'なお、ドメインに参加できたが、dns登録に失敗する場合、/etc/hostsに自ホストの記述を入れ、一旦leaveしてから再度joinしてみてください
$ sudo net ads leave -U Administrator #/etc/hosts 10.1.4.53 l53.mydomain.site l53 2www:xxxx:yyyy:zzzz::53 l53.mydomain.site l53 $ sudo net ads join -U Administrator Enter Administrator's password: Using short domain name -- MYDOMAIN Joined 'L53' to dns domain 'mydomain.site'ドメインに参加したら、smbd, nmbd, winbindを起動します。
systemctl start smbd nmbd winbindづついて動作確認を行います。
# wbinfo -u guest krbtgt administrator user20000 # wbinfo -g domain controllers schema admins dnsupdateproxy domain guests group policy creator owners dnsadmins allowed rodc password replication group enterprise read-only domain controllers cert publishers enterprise admins domain admins domain users read-only domain controllers ras and ias servers domain computers denied rodc password replication group # ls /home/ # (何もない状態) exit $ ssh -l user20000 l53.mysdomain.site user20000@l53.mydomain.site's password: Creating directory '/home/user20000'. Linux m53 4.19.0-16-686-pae #1 SMP Debian 4.19.181-1 (2021-03-19) i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. user20000@l53:~$ pwd /home/user20000 user20000@l53:~$最後にNTPのインストール・設定をしておきます。なお、こちらを参考にさせていただきました。ありがとうございます。
2021/05/10追記:IPv6設定を追加しました。
$ 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 -4 sv63.mydomain.site mask 255.255.255.255 nomodify notrap nopeer noquery restrict -6 sv63.mydomain.site mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff nomodify notrap nopeer noquery ###以上 $ sudo systemctl restart ntp参考までに、再掲ですが、samba-toolをつかうとlinux uid = --uid-number、gid = --gid-number、domain = --nis-domain、login shell = --loginshell, home dir = --unix-homeを指定してlinux/windows共通ユーザを作成できます。
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上述はシェルコマンドなので、変数やwhile readをつかうなどすると、多量のユーザをバッチ形式で作成できるのは言うまでもありません。 なお、
コメント
コメントを投稿