こんにちわ、cloudpack磯辺です。

前回までで、認証はできるようになったが、ログインしたユーザのホームディレクトリが無いという問題があったので、それの対応などを行う。

SSSDの設定を追加

すでに導入済みとなる、oddjob_mkhomedirの設定を、/etc/sssd/sssd.confに追記する。

[domain/example.local]
override_homedir = /home/%d/%u

[nss]
fallback_homedir = /home/%u

%dは、ドメイン名、%uはユーザ名が補間されて、初回ログイン時に自動的にディレクトリが作成されるようになる。

設定を変更したら、sssdを再起動する。

# systemctl restart sssd.service

それでは、再度ログインしてみる。

% ssh aduser@xx.yy.zz.100
aduser@xx.yy.zz.100's password:
Creating home directory for aduser.
Last login: Tue Sep  9 16:10:25 2014 from xxx.yyy.zzz.241
[aduser@linux1 ~]$ pwd
/home/example.local/aduser

想定通り、ホームディレクトリが作成された。

デフォルトのシェルを指定する

ADドメインユーザは、LDAPv3スキーマのloginShell属性でシェルの定義を行う。しかし、AD側で一々設定するのは面倒なので、SSSD側の設定で実現する。

[domain/example.local]
default_shell = /bin/bash

[nss]
shell_fallback = /bin/sh
allowed_shells = /bin/bash

ちなみに、/etc/passwdにエントリが無いため、chshを実行してもシェルを変更できない。

[aduser@linux1]~% chsh
aduser のシェルを変更します。
新しいシェル [/bin/zsh]: /bin/bash
パスワード:
chsh: user "aduser" does not exist.

とりあえず、ユーザがADで認証してSSHログインできるところまでできた。

元記事はこちらです。
[Linux][Windows] RHEL7をActive Directory on Windows Server 2012 R2でユーザ認証させる (4)