Ubuntuでuseraddコマンドを使うときは「-m」オプションでホームディレクトリを作成する

こんにちは!

CentOS 7のコミュニティーサポートが2024年6月30日で終了するのもあって、Ubuntuを操作する機会が最近増えてきています。

今回、Ubuntuでuseraddコマンドを使ってユーザ作成をしたのですが、ubuntuはオプションを付けないとホームディレクトリを作成してくれないのをすっかり忘れ、作成したユーザでログインをした際に「No directory, logging in with HOME=/」とメッセージが表示され、怒られてしまいました。

今日は備忘録としてUbuntuでuseraddコマンドを使うときは「-m」オプションでホームディレクトリを作成するをアウトプットします。

Ubuntuのmanページでuseraddを確認してみる

今回、Red Hat系のuseraddと同じ物と勘違いしていましたので、Ubuntuのmanページでuseraddの記載を改めて確認してみます。

「-m」オプションの説明に次の記載がありました。

By default, if this option is not specified and CREATE_HOME is not enabled, no home directories are created.

Google翻訳で翻訳してみたところuseraddの「-m」オプションは以下の動作仕様だそうです。

  • デフォルトで、このオプションは指定されていない。
  • 「CREATE_HOME」が有効になっていないとホームディレクトリは作成されない。

Ubuntuのmanページでuseraddの記載を改めて確認してみたところ、Ubuntuでuseraddコマンドを使うときは「-m」オプションでホームディレクトリを作成するのを忘れてはいけないことが確認できました。

ホームディレクトリを作成しなかったユーザのホームディレクトリを後から作成する

次回からUbuntuでuseraddコマンドを使うときは「-m」オプションでホームディレクトリを作成するのを忘れてはいけないことの確認はできました。

次はホームディレクトリを作成しなかったユーザのホームディレクトリを後から作成するにはどうしたら良いのかを確認します。

ホームディレクトリを作成しなかったユーザのホームディレクトリを後から作成する場合、次のコマンドを実行すれば、後からホームディレクトリを作成することができます。

usermod -d ディレクトリ ユーザー名

他に、Ubuntuでuseraddコマンドを使うときに指定する主なオプション

他に、Ubuntuでuseraddコマンドを使うときに指定する主なオプションも併せて確認しました。

  • 「-G」
    • 「-G <グループ名 又は グループID>」でユーザが所属するセカンダリグループを指定してユーザ作成することができます。
    • 複数のセカンダリグループに所属させる場合、「-G <groupA,groupB>」とカンマ区切りで複数のグループを指定します。
    • 例えば「-G sudo」とするとユーザが所属するセカンダリグループをsudoグループにしてユーザ作成をします。
  • 「-s」
    • 「-s <シェルのフルパス>」で指定したログインシェルを設定してユーザ作成することができます。
    • 例えば「-s /bin/bash」とするとログインシェルを「/bin/bash」に設定してユーザ作成をします。

例えば、ホームディレクトリを作成、セカンダリグループ「sudo」に追加、ログインシェルを「/bin/bash」とするユーザ名「hoegadmin」を作成する場合、以下のコマンドを実行します。

useraadd -m G sudo -s /bin/bash hoegadmin

なお、これをRed Hat系で行う場合のコマンドは以下になります。

useraadd -m G wheel -s /bin/bash hoegadmin

Red Hat系では、セカンダリグループ「wheel」に所属するとsudoを実行することができます。

また、作成したユーザにはパスワードが設定されていないので、ユーザ作成をしたら次のコマンドからパスワード設定を実行する必要があります。

passwd hogeadmin

以上が、Ubuntuでuseraddコマンドを使うときは「-m」オプションでホームディレクトリを作成するのアウトプットになります。最後までお読みいただきありがとうございました。