第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回にわたってお送りしてきた