第852回でSambaを使いドメインを作成した際に--use-rfc2307というオプションを指定しました。これはドメインの属性を拡張し、UIDやGID、ホームディレクトリやログインシェルなどのPOSIXの属性を保管させるという設定であることは簡単に解説しました。
この仕様--use-rfc2307オプションはドメインコントローラー
ADユーザーの作成とデフォルト状態の確認
まず、Ubuntuマシンを用意し、ドメインの名前解決ができるようにDNSの設定をおこない、ADに参加します[1]。
member$ sudo apt -y install sssd-ad sssd-tools realmd adcli member$ sudo realm join -v example.com member$ sudo pam-auth-update --enable mkhomedir
続いて、ドメインに参加したWindowsマシンでubuntuというADユーザーを追加します。
この時点で、作成したばかりのADユーザーのホームディレクトリやログインシェルがADに参加させたUbuntuマシンでどのように設定されるかを確認します。次のようにgetentコマンドを実行することで/etc/と同じ形式でエントリを確認できます。
member$ getent passwd ubuntu@example.com ubuntu@example.com:*:1289001115:1289000513:ubuntu:/home/ubuntu@example.com:/bin/bash
上の結果からは、このADユーザーはホームディレクトリが/home/、ログインシェルが/bin/であることがわかります。
ADユーザーなので、/etc/にubuntu@example.ユーザーのエントリがあるわけではなく、AD統合にデフォルトで使用されるSystem Security Services Daemon/etc/の内容に基づいて生成しています。
member$ sudo cat /etc/sssd/sssd.conf [sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] default_shell = /bin/bash .. fallback_homedir = /home/%u@%d ad_domain = example.com ... ldap_id_mapping = True access_provider = ad
今回着目しているホームディレクトリとログインシェルのデフォルト値fallback_とdefault_がそれぞれ該当します。
ADユーザーのログインシェルとホームディレクトリの設定
何も指定していないときの挙動がわかったところで、ADユーザーubuntuのホームディレクトリとログインシェルを指定します。
Windowsから指定する場合は、適切なADユーザーでunixHomeDirectoryやloginShellに値を指定することで、ホームディレクトリやログインシェルが指定できます。
Samba ADsamba-tool user addunixattrsコマンドを使用します。
samba-ad-dc01$ sudo samba-tool user addunixattrs ubuntu 1000 --gid-number=1000 --unix-home='/home/ubuntu' --login-shell='/bin/dash' Modified User 'ubuntu' successfully
なお、ubuntu 1000はubuntuユーザーにUID 1000を与えるという意味になりますが、samba-toolはADユーザー間でこのUIDの重複を許さないという動きをします。その一方で、後述するように、SSSDのデフォルト設定ではADユーザーのUID/samba-tool user editコマンドでuidNumber属性とgidNumber属性を削ってしまってもいいかもしれません[3]。
samba-ad-dc01$ sudo samba-tool user edit ubuntu --editor=vim
あるいは、ユーザー作成時にホームディレクトリとログインシェルを設定してしまうということもできます。ユーザーを作成するときにホームディレクトリとログインシェルを指定するのであればUID/
samba-ad-dc01$ samba-tool user create ubuntu --unix-home='/home/ubuntu' --login-shell='/bin/dash'
いずれの方法を採るにせよ、unixHomeDirectory属性やloginShell属性が設定されると、getentコマンドの結果が次のように変化します。
member$ getent passwd ubuntu@example.com ubuntu@example.com:*:1289001116:1289000513:ubuntu:/home/ubuntu:/bin/dash
ホームディレクトリが/home/に、ログインシェルが/bin/になることがわかります。getentコマンドの結果だけでは物足りないという方もいるかもしれないので、実際にログインもしてみます。
member$ sudo login member login: ubuntu@example.com パスワード: ... $ id uid=1289001116(ubuntu@example.com) gid=1289000513(domain users@example.com) groups=1289000513(domain users@example.com) $ env |grep -e HOME -e SHELL HOME=/home/ubuntu SHELL=/bin/dash
ADユーザーのUID/GID
先ほど軽く触れましたが、SSSDを使ってUbuntuマシンをドメインに統合する場合、UID/
そもそもUID/
この目的に対し、
しかし、この
他方、先ほど見たようにsssd.のデフォルト値ではldap_と指定されています。この場合、ADユーザーに関するSID
ただし、このldap_として
4回にわたってお送りしてきた