Samba-ad-dc コマンドでユーザー追加、他

Samba-ad-dc の操作メモ。

今回は、ユーザー追加、ホームディレクトリの設定、ポート開放について記載。






■ユーザー追加

Samba AD DC環境でユーザーを追加するとき、過去記事ではWindowsのGUIに頼っていた。
コマンドでやってみようと思い立ったのでここに。

参考:
SambaWiki / Adding users with samba tool
Sugio Laboratory / SAMBA4のDCオペレーション

まず、DDNSを実現するためのユーザーを作ってみた。

■Ubuntuに登録されたdhcpdの情報を調べておく
$ getent passwd | grep dhcpd
dhcpd:x:111:117::/var/run:/usr/sbin/nologin

■ユーザー追加(dhcpd)
$ sudo samba-tool user create dhcpd --uid-number 111 --gid-number 117 --unix-home /var/run --login-shell /usr/sbin/nologin
New Password:    ← ここで dhcpd ユーザーのパスワードを設定
Retype Password: ← 再入力

$ id myhome\\dhcpd
uid=111(dhcpd) gid=117(dhcpd) groups=117(dhcpd),100(users),3000009(BUILTIN\users)

$ getent passwd | grep dhcpd
dhcpd:x:111:117::/var/run:/usr/sbin/nologin
MYHOME\dhcpd:*:111:100::/home/dhcpd:/bin/bash

■グループ追加
$ sudo samba-tool group addmembers DnsAdmins dhcpd
Added members to group DnsAdmins
$ sudo samba-tool group removemembers users dhcpd
Removed members from group users

$ id myhome\\dhcpd
uid=111(dhcpd) gid=117(dhcpd) groups=117(dhcpd),100(users),3000038(MYHOME\dnsadmins),3000009(BUILTIN\users)
$ sudo samba-tool group listmembers dnsadmins
dhcpd ← idコマンドの確認結果はちょっと変だけど、DnsAdminsに登録されているのでOKとした。

■パスワードの期限をなくす
$ sudo samba-tool user setexpiry dhcpd --noexpiry
Expiry for user 'dhcpd' disabled.

そうそう、自分ユーザーも作っとこ。

■Ubuntuに登録されたhogeの情報を調べておく
$ getent passwd | grep hoge
hoge:x:1000:1000:Hoge Hoge:/home/hoge:/bin/bash

■ユーザー追加
$ sudo samba-tool user create hoge --uid-number 1000 --gid-number 1000 --unix-home /home/hoge --login-shell /bin/bash
New Password:
Retype Password:
User 'hoge' created successfully

$ id myhome\\hoge
uid=1000(hoge) gid=1000(hoge) groups=1000(hoge),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),100(users),3000009(BUILTIN\users)

$ getent passwd | grep hoge
hoge:x:1000:1000:Hoge Hoge:/home/hoge:/bin/bash
MYHOME\hoge:*:1000:100::/home/hoge:/bin/bash

作り方はdhcpdさんと同じ。


■ホームディレクトリの設定

サーバーにWindows共有でアクセスしようとしたらホームディレクトリに行けなかった。
以下を追加。

[homes]
    path = %H
    read only = No
    browseable = No

※pathには従来%Uを使っていたんだけど、0x80070043エラーになった。/var/log/samba/log.smbdを見てみたら、
canonicalize_connect_path failed for service home, path /home/hoge_hogeserver.hogeddns.jp
とかになっていて、そりゃアクセスできるわけがないな、ということで%Hにした。

設定反映。

$ sudo systemctl reload samba-ad-dc
$ sudo systemctl restart samba-ad-dc ← 色々いじってキャッシュ?のためか設定反映されないとき

■ポート開放

で、Sambaが利用するポートについて調べてみたところ、ここにきっちりと書いてある。
Samba Wiki / Samba AD DC Port Usage

インターネットに向けてポートが開いているケースがあるよー、と警告されているとかいう文言を検索中にチラチラ見たから、内側に向けてだけポートを開放しよう。

$ sudo ufw allow to any port 445 proto tcp from 172.16.0.0/16 comment "SAMBA SMB over TCP"
$ sudo ufw allow to any port 445 proto tcp from fdnn:nnnn:nnnn:nnnn::/64 comment "SAMBA SMB over TCP"
$ sudo ufw allow to any port 445 proto tcp from 24nn:nnnn:nnnn:nnnn::/64 comment "SAMBA SMB over TCP"

※コメントを付けておくと、後で「なんでこのポート開いてるんだっけ?」というあるあるな無駄時間を避けることができる。

グローバールなIPv6アドレスについては、その割り当て範囲をよく確認してから開けないと、結局インターネットに向かってポートがあいてしまうことになるだろう…。

もっとも、ルーターのポートを開放しない限りは外からのパケットを受け付けたりはしないのかもしれないけど、そういうつもりが実は間違ってルーターが開いちゃってましたテヘペロって可能性もなくはないので、念のためきちっと整理しておく。

それと、KerberosやLDAPなんかも Samba AD DC は内包しているから、これらを利用する場合にはポートを開けておく必要がありそう。


やりたいことはいっぱいあるけど、サーバーがプアーなので1つのサーバーに色々組み込んで運用してきた。だが、サーバーを再起動するのに時間がかかるようになってきたから、基本的なサービスとアプリケーション的なサービスを分けてみようというのが今年のGWの活動目標だった。

で、分けていくと痛感するのが今までのサービス提供の方法の悪さ。
ほとんど全てのサービスを hogeserver.hogeddns.jp ドメインで、サブディレクトリで分ける方法を使って提供してきたが、Samba AD DCサーバーを外に立てたら途端にそれが破綻した。

具体的には dc.hogeserver.hogeddns.jp を立てて、Realmを hogeserver.hogeddns.jp に設定してDNSを動かしてみたところ、当たり前だけど、hogeserver.hogeddns.jp の名前解決をすると dc のアドレスが帰ってくるようになった。

つまり…家の外からアクセスするときには、ルーターがIP指定でパケットを転送してくるから問題なしなのだが、家の中からアクセスすると hogeserver.hogeddns.jp だと dc のアドレスが返り、hogeserver.hogeserver.hogeddns.jp ないしは hogeserver と指定しないと hogeserver のアドレスが返ってこない。これでは宅内に内向きDNSを立てる意味がないのだった。

そのため、基本的なサービスは dc で提供し、HTTPS的なものは全て dc → hogeserver へ転送するように設定してみた。将来的には service.hogeserver.hogeddns.jp 的な公開方法に移行していくにしても、すぐにはできないのだからこの方法しかないな、と。

各システムをシングルサインオンに対応させることも考えると、自分が思うとおりにネットワークを構成するには少し時間がかかりそう。だいたい、うちにはWindows10 HomeやAndroidなどドメインに参加できないデバイスもたくさんあるじゃん…そんな場合はどうすりゃサービスを提供できるんだっけ?とかとか、楽しみがたくさんあるじゃん!やること、やれることがあるのはいいね!

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です