Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【Linux】Ubuntuでuseraddしたらホームディレクトリが作られない!?原因と対処法

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

こんにちは!

普段、AlmaLinuxやCentOSなどのRedHat系Linuxを使っている人が、久しぶりにUbuntuやDebianを触ったときに「ほぼ全員が一度は引っかかる落とし穴」があります。

それが、「新規ユーザーを作ったのに、/home/ユーザー名(ホームディレクトリ)が存在しない!」というトラブルです。

今回は、なぜこの現象が起きるのかという理由と、正しい対処法・作成時のコマンドをサクッと解説します!

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

😱 何が起きるのか?(現象)

RedHat系(RHEL/CentOS等)の感覚で、Ubuntu上で以下のようにユーザーを作成したとします。

Bash

sudo useradd hito
sudo passwd hito

これでユーザー「hito」が作成できたので、ログインしたり su - hito で切り替えようとすると……

Plaintext

No directory, logging in with HOME=/

上記のようなエラーが表示され、ルートディレクトリ(/)に放り出されてしまいます。 /home の中を確認しても、hito ディレクトリは影も形もありません。

🔍 原因:UbuntuとRedHat系で useradd の初期値が違う!

実は、useradd というコマンド自体はLinux共通の低レベルなコマンドですが、「オプションなしで実行したときのデフォルト動作(初期設定)」がOSによって異なります。

  • RedHat系(RHEL, CentOS, AlmaLinuxなど)

    • デフォルトで -m(ホームディレクトリを作成する)オプションが有効になっている。

  • Debian / Ubuntu系

    • デフォルトでは -m オプションが無効(作成しない) になっている。

つまり、Ubuntuで useradd をそのまま打つと、「ホームディレクトリ無しのシステムユーザー的なアカウント」が作られてしまうのが原因です。

🛠️ 対処法1:【すでに作ってしまった場合】後からホームディレクトリを作る

「もう useradd でユーザーを作っちゃったよ!」という場合は、後からホームディレクトリを作成して紐付けることができます。

1. ホームディレクトリを作成&初期ファイルをコピー

Bash

# -m オプションで既存ユーザーにホームディレクトリを作成
sudo mkhomedir_helper hito

※ もし mkhomedir_helper が使えない場合は、手動で作って所有権を変更します。

Bash

# 手動で作成する場合の例
sudo mkdir -p /home/hito
sudo cp -r /etc/skel/. /home/hito/
sudo chown -R hito:hito /home/hito

2. ユーザーのホームディレクトリパスとシェルを設定

useradd だけだとデフォルトシェルが /bin/sh(機能が乏しいシェル)になっていることも多いため、/bin/bash に変更しておきます。

Bash

sudo usermod -d /home/hito -s /bin/bash hito

💡 対処法2:【これから作成する場合】Ubuntuでの正しいユーザー作成コマンド

今後Ubuntuでユーザーを作成する際は、以下のいずれかの方法を使いましょう。

パターンA:adduser コマンドを使う(✨最もおすすめ)

Ubuntu/Debian系には、useradd の上位互換(対話型スクリプト)である adduser コマンドが用意されています。

Bash

sudo adduser hito

実行すると対話形式でパスワードの設定やホームディレクトリの作成(/etc/skel からの環境ファイルコピー)、デフォルトシェルの設定(/bin/bash)まですべて自動で完璧にセットアップしてくれます。

パターンB:useradd に -m オプションをつける

どうしても useradd コマンドで作成したい場合は、明示的に -m オプション(ホーム作成)と -s オプション(シェル指定)を付与します。

Bash

sudo useradd -m -s /bin/bash hito

📝 まとめ

  • RedHat系: useradd だけで勝手にホームディレクトリが作られる

  • Ubuntu系: useradd だけだとホームディレクトリが作られない

Ubuntuでユーザーを追加するときは、「とりあえず sudo adduser ユーザー名 を使う!」と覚えておくのが一番安全で手軽です。

他OSからUbuntuに引っ越してきた方や、サーバー構築でスクリプトを組む方はぜひ注意してくださいね!

タイトルとURLをコピーしました