手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 ホームディレクトリ作成 – 手動作成と pam_mkhomedir の使い分け

Ubuntu 22.04 でユーザーを作成したり、LDAP ユーザーでログインしたりする場合、ホームディレクトリの扱いを決めておく必要があります。ホームディレクトリは単なる作業場所ではなく、ログイン後の環境、SSH 鍵、ユーザー設定、アプリケーション設定が置かれる場所です。

この記事では、ローカルユーザーと LDAP / SSSD ユーザーの両方を前提に、ホームディレクトリを手動作成する場合と、pam_mkhomedir で自動作成する場合の考え方を整理します。

参考書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

関連する記事

LDAP ユーザーのログインや Samba 連携と合わせて読むと、ホームディレクトリの責務が分かりやすくなります。

ホームディレクトリを作成する場面

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-user

chmod 700 にすると、所有者だけがホームディレクトリを参照できます。共有用途やグループ共同作業を想定する場合は別の権限設計にしますが、通常のログインユーザーのホームディレクトリとしては、まず閉じた権限にしておく方が安全です。

スケルトンファイルを配置する

新規ユーザーに標準のシェル設定を配布したい場合は、/etc/skel の内容をコピーします。既存ディレクトリへコピーする場合は、所有者を最後に直します。

sudo cp -a /etc/skel/. /home/example-user/
sudo chown -R example-user:example-user /home/example-user

LDAP ユーザーの場合でも、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: -f6

LDAP 側に /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 鍵の権限を合わせて確認するのが現実的です。

Ubuntu 22.04 ホームディレクトリ作成 – 手動作成と pam_mkhomedir の使い分け

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る