Ubuntu 22.04 でユーザーを作成したり、LDAP ユーザーでログインしたりする場合、ホームディレクトリの扱いを決めておく必要があります。ホームディレクトリは単なる作業場所ではなく、ログイン後の環境、SSH 鍵、ユーザー設定、アプリケーション設定が置かれる場所です。
この記事では、ローカルユーザーと LDAP / SSSD ユーザーの両方を前提に、ホームディレクトリを手動作成する場合と、pam_mkhomedir で自動作成する場合の考え方を整理します。
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
関連する記事
LDAP ユーザーのログインや Samba 連携と合わせて読むと、ホームディレクトリの責務が分かりやすくなります。
- Ubuntu 22.04 SSSD – LDAP ユーザーで Linux 認証する
- Ubuntu 22.04 Samba 構築 – LDAP 認証と SID を整理する
- Ubuntu 22.04 OpenLDAP LDAP ユーティリティ – ldapsearch / ldapadd / ldapmodify の使い方
ホームディレクトリを作成する場面
Ubuntu ではローカルユーザーを adduser で作成すると、通常はホームディレクトリも同時に作成されます。一方、LDAP ユーザーや手動で追加したユーザーでは、ユーザー情報だけが存在し、ホームディレクトリがまだ存在しない状態になることがあります。
| 場面 | ホームディレクトリの扱い |
|---|---|
| ローカルユーザー | adduser で作成すれば通常は自動作成される |
| LDAP / SSSD ユーザー | LDAP にはパスだけがあり、実ディレクトリは別途作成が必要になることがある |
| 一時的な検証ユーザー | 手動作成で十分な場合がある |
| 多数の LDAP ユーザー | pam_mkhomedir による初回ログイン時の自動作成が向いている |
| Samba ホーム共有 | Linux のホームディレクトリと共有設計を分けて考える |
手動でホームディレクトリを作成する
特定のユーザーだけを確認したい場合や、事前に権限を明示しておきたい場合は、手動でホームディレクトリを作成します。
sudo mkdir -p /home/example-user
sudo chown example-user:example-user /home/example-user
sudo chmod 700 /home/example-userchmod 700 にすると、所有者だけがホームディレクトリを参照できます。共有用途やグループ共同作業を想定する場合は別の権限設計にしますが、通常のログインユーザーのホームディレクトリとしては、まず閉じた権限にしておく方が安全です。
スケルトンファイルを配置する
新規ユーザーに標準のシェル設定を配布したい場合は、/etc/skel の内容をコピーします。既存ディレクトリへコピーする場合は、所有者を最後に直します。
sudo cp -a /etc/skel/. /home/example-user/
sudo chown -R example-user:example-user /home/example-userLDAP ユーザーの場合でも、Linux 側のホームディレクトリには .bashrc や .profile などの通常のユーザー環境ファイルが必要になることがあります。
SSH 鍵を配置する
SSH 公開鍵認証を使う場合は、.ssh ディレクトリと authorized_keys の権限が重要です。権限が広すぎると、OpenSSH 側で鍵が無視されることがあります。
sudo install -d -m 700 -o example-user -g example-user /home/example-user/.ssh
sudo tee /home/example-user/.ssh/authorized_keys <<'EOF'
ssh-ed25519 AAAA... example-user@example
EOF
sudo chown example-user:example-user /home/example-user/.ssh/authorized_keys
sudo chmod 600 /home/example-user/.ssh/authorized_keys運用では、公開鍵を手で貼るよりも、構成管理やユーザー管理の流れに含めた方が安定します。ただし、検証や緊急対応ではこのように権限を明示して作成すると切り分けやすくなります。
pam_mkhomedir で自動作成する
LDAP / SSSD ユーザーが多数いる場合、全ユーザーのホームディレクトリを事前に作成するのは現実的ではありません。その場合は、初回ログイン時にホームディレクトリを作成する pam_mkhomedir を使います。
sudo pam-auth-update --enable mkhomedir有効化後、SSH など PAM を通るログイン時にホームディレクトリが存在しなければ作成されます。SSSD による LDAP 認証と組み合わせる場合は、SSSD 側でユーザーが解決できることを先に確認します。
getent passwd example-user
id example-user
ssh example-user@ubuntu-2204.example.local作成先を確認する
ホームディレクトリのパスは、ユーザー情報の homeDirectory 相当の値に依存します。ローカルユーザーであれば /etc/passwd、LDAP ユーザーであれば LDAP 属性を確認します。
getent passwd example-user
getent passwd example-user | cut -d: -f6LDAP 側に /home/example-user ではなく、別のパスが入っている場合、Linux 側もそのパスをホームディレクトリとして扱います。ディレクトリを作る前に、まず getent passwd の結果を確認するのが安全です。
Samba ホーム共有とは分けて考える
Samba の [homes] 共有は、Linux のホームディレクトリを SMB で公開するための仕組みです。Linux にログインするためのホームディレクトリと、Windows クライアントから見えるホーム共有は関連しますが、同じ問題ではありません。
- Linux ログインでは、NSS / PAM / SSSD とホームディレクトリの実体が重要になる
- Samba 共有では、Samba ユーザー、SID、SMB パスワード、共有設定、ファイル権限が重要になる
- LDAP を共通基盤にしても、Linux ログインと Samba 共有の責務は分けて確認する
確認する項目
ホームディレクトリを作成した後は、所有者、権限、ログイン可否、SSH 鍵の有効性を確認します。
ls -ld /home/example-user
sudo -u example-user test -w /home/example-user
ssh example-user@ubuntu-2204.example.local
sudo journalctl -u ssh -n 50 --no-pagerログインできない場合、ホームディレクトリだけでなく、SSSD、PAM、SSH、鍵ファイルの権限、LDAP 側のシェル属性を順番に切り分けます。
まとめ
Ubuntu 22.04 のホームディレクトリ作成は、単に mkdir するだけの作業ではありません。ローカルユーザーなのか、LDAP / SSSD ユーザーなのか、初回ログイン時に自動作成するのか、Samba 共有と連動させるのかによって設計が変わります。
少数ユーザーや検証では手動作成で十分ですが、LDAP 認証基盤として運用する場合は pam_mkhomedir を使い、SSSD によるユーザー解決、ホームディレクトリの所有者、SSH 鍵の権限を合わせて確認するのが現実的です。

