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などドメインに参加できないデバイスもたくさんあるじゃん…そんな場合はどうすりゃサービスを提供できるんだっけ?とかとか、楽しみがたくさんあるじゃん!やること、やれることがあるのはいいね!
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他