Linuxのuseraddコマンドとは?ユーザー追加・ホームディレクトリ作成・sudo権限付与を解説

コマンドリファレンス

useradd コマンドは、Linux システムに新しいユーザーアカウントを作成するための低レベルコマンドです。システム管理者が開発者・サービス専用アカウントを追加する際に利用されます。このページでは、基本的な使い方から adduser との違い、ホームディレクトリ作成、パスワード設定、sudo 権限付与まで順を追って解説します。

  1. useraddコマンドとは
  2. useradd と adduser の違い
  3. 構文(Syntax)
  4. 主なオプション一覧
  5. 基本の使い方
    1. 基本のユーザー作成(-m でホームディレクトリも作成)
    2. シェルを指定してユーザーを作成(-s)
    3. プライマリグループを指定して作成(-g)
    4. 補助グループに追加して作成(-G)
  6. パスワードを設定する
  7. sudo権限を付与する
    1. ユーザー作成時に sudo グループへ追加
    2. 既存ユーザーに sudo 権限を後から付与
  8. 作成したユーザーを確認する
    1. id コマンドで確認
    2. getent passwd で確認
    3. /etc/passwd を直接確認
  9. ユーザー作成時のデフォルト設定
    1. /etc/default/useradd
    2. /etc/skel
  10. ユーザーを削除する
    1. ユーザーのみ削除(ホームディレクトリは残す)
    2. ホームディレクトリごと削除(-r)
  11. よくあるエラーと対処法
    1. Permission denied
    2. useradd: user ‘username’ already exists
    3. ホームディレクトリが作成されない
    4. ログインシェルが意図したものにならない
  12. よくある疑問
    1. useradd と adduser はどちらを使うべきか
    2. -m を付けないとどうなるか
    3. パスワードなしユーザーは作れるか
    4. sudo できるユーザーを作るにはどうするか
    5. システムユーザーと通常ユーザーの違い
  13. 実行例まとめ
    1. 通常ユーザーを作成してパスワードを設定する
    2. sudo 権限付きユーザーを作成する
    3. サービス用システムユーザーを作成する
  14. 関連コマンド
  15. 参考
  16. 関連記事

useraddコマンドとは

useradd はLinuxの低レベルユーティリティで、/etc/passwd/etc/shadow/etc/group などのシステムファイルを直接操作してユーザーを作成します。オプションを明示的に指定する必要があるため、スクリプトや自動化に適しています。

useradd と adduser の違い

Linuxには useraddadduser の2つのユーザー作成コマンドがあります。

コマンド種類特徴
useradd低レベル(C言語製)オプション指定が必要。スクリプト・自動化向け。すべてのLinuxディストリビューションで利用可能。
adduser高レベル(Perlスクリプト)対話的に設定を入力できる。Debian・Ubuntu系のみ標準搭載。デフォルトでホームディレクトリを作成する。

UbuntuやDebianでは対話的に操作できる adduser が便利です。一方、CentOS・RHEL・ArchLinuxなどでは useradd のみ標準搭載されています。スクリプトや自動化には useradd を使うのが確実です。

構文(Syntax)

useradd [オプション] USERNAME

主なオプション一覧

オプション説明使用例
-mホームディレクトリを作成sudo useradd -m alice
-d DIRホームディレクトリのパスを指定sudo useradd -m -d /home/alice alice
-s SHELLログインシェルを指定sudo useradd -m -s /bin/bash alice
-g GROUPプライマリグループを指定sudo useradd -m -g developers alice
-G GROUPS補助グループを指定(カンマ区切り)sudo useradd -m -G sudo,staff alice
-c COMMENTコメント(GECOS フィールド)を設定sudo useradd -m -c "Alice Dev Account" alice
-u UIDユーザーIDを指定sudo useradd -m -u 1500 alice
-e DATEアカウントの有効期限を設定(YYYY-MM-DD)sudo useradd -m -e 2025-12-31 alice
-rシステムユーザーとして作成(サービス用)sudo useradd -r nginx

基本の使い方

基本のユーザー作成(-m でホームディレクトリも作成)

sudo useradd -m username

-m オプションを付けると /home/username が自動的に作成されます。-m を省略するとホームディレクトリが作成されないため、通常のログインユーザーを作成する際は必ず付けてください。

シェルを指定してユーザーを作成(-s)

sudo useradd -m -s /bin/bash username

-s オプションでログインシェルを指定します。指定しない場合はシステムのデフォルトシェル(/bin/sh など)が設定されます。/bin/bash/bin/zsh など、利用可能なシェルは /etc/shells で確認できます。

プライマリグループを指定して作成(-g)

sudo useradd -m -g groupname username

-g オプションでプライマリグループを指定します。指定したグループはあらかじめ存在している必要があります。省略した場合はユーザー名と同名のグループが自動作成されます。

補助グループに追加して作成(-G)

sudo useradd -m -G sudo username

-G オプションで補助グループ(サブグループ)を指定します。複数指定する場合はカンマ区切りで -G sudo,docker のように書きます。

パスワードを設定する

useradd コマンドだけではパスワードが設定されず、ユーザーはパスワード認証でログインできません。ユーザー作成後に必ず passwd コマンドでパスワードを設定してください。

sudo passwd username

実行すると新しいパスワードの入力を2回求められます。

New password:
Retype new password:
passwd: password updated successfully

sudo権限を付与する

作成したユーザーに管理者権限(sudo)を付与するには、sudo グループ(Debian/Ubuntu系)または wheel グループ(RHEL/CentOS系)に追加します。

ユーザー作成時に sudo グループへ追加

# Ubuntu/Debian系
sudo useradd -m -s /bin/bash -G sudo username

# RHEL/CentOS系
sudo useradd -m -s /bin/bash -G wheel username

既存ユーザーに sudo 権限を後から付与

すでに作成したユーザーに後から sudo 権限を付与するには usermod を使います。

# Ubuntu/Debian系
sudo usermod -aG sudo username

# RHEL/CentOS系
sudo usermod -aG wheel username

作成したユーザーを確認する

id コマンドで確認

id username

出力例:

uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)

UID・GID・所属グループをまとめて確認できます。

getent passwd で確認

getent passwd username

出力例:

username:x:1001:1001::/home/username:/bin/bash

コロン区切りで「ユーザー名:パスワード(x):UID:GID:コメント:ホームディレクトリ:シェル」が確認できます。

/etc/passwd を直接確認

grep username /etc/passwd

/etc/passwd にユーザー情報が追記されているかを確認できます。

ユーザー作成時のデフォルト設定

/etc/default/useradd

useradd のデフォルト動作(ホームディレクトリの親パス、デフォルトシェル、アカウント有効期限など)は /etc/default/useradd で管理されています。

cat /etc/default/useradd

出力例:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

デフォルトのシェルを変更したい場合はこのファイルの SHELL= を編集します。

/etc/skel

-m でホームディレクトリを作成する際、/etc/skel/ の内容がそのままコピーされます。新規ユーザー全員に共通の設定ファイル(.bashrc.profile など)を配置しておく場所です。

ls -a /etc/skel

ユーザーを削除する

ユーザーを削除するには userdel コマンドを使います。

ユーザーのみ削除(ホームディレクトリは残す)

sudo userdel username

ホームディレクトリごと削除(-r)

sudo userdel -r username

-r を付けるとホームディレクトリとメールスプールも一緒に削除されます。削除前に重要なファイルをバックアップしてください。

よくあるエラーと対処法

Permission denied

useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

原因: useraddsudo なしで実行しています。
対処: sudo useradd ...sudo を付けて実行してください。

useradd: user ‘username’ already exists

useradd: user 'alice' already exists

原因: 同名のユーザーがすでに存在しています。
対処: id alice で確認し、既存ユーザーを使うか別名で作成してください。

ホームディレクトリが作成されない

原因: -m オプションを付けずに実行しています。
対処: sudo useradd -m username-m を付けてください。すでに作成済みの場合は sudo mkhomedir_helper username または手動で sudo mkdir /home/username && sudo chown username:username /home/username で作成できます。

ログインシェルが意図したものにならない

原因: -s オプションを省略したか、/etc/default/useradd のデフォルトシェルが別のシェルに設定されています。
対処: sudo useradd -m -s /bin/bash username と明示的に指定するか、作成後に sudo usermod -s /bin/bash username で変更できます。

よくある疑問

useradd と adduser はどちらを使うべきか

Ubuntu/Debian環境で手動操作する場合は adduser が手軽です。スクリプトや自動化、またはCentOS/RHELなどすべてのLinux環境で動作させたい場合は useradd を使います。

-m を付けないとどうなるか

/home/username が作成されません。ユーザーはログインできますが、ホームディレクトリがない状態になります。通常のログインユーザーには -m を付けることを推奨します。

パスワードなしユーザーは作れるか

作れます。useradd 直後はパスワードが未設定(ロック状態)です。パスワードなしでSSH公開鍵認証のみを使う場合などはそのままで問題ありません。パスワード認証が必要な場合は sudo passwd username で設定してください。

sudo できるユーザーを作るにはどうするか

ユーザー作成時に -G sudo(Ubuntu/Debian)または -G wheel(RHEL/CentOS)を付けます。

sudo useradd -m -s /bin/bash -G sudo username

システムユーザーと通常ユーザーの違い

システムユーザーは -r オプションで作成し、UID が 1000 未満(システムによって異なる)になります。nginxやpostfixなどのサービス実行用アカウントで、ホームディレクトリやログインシェルを持たないのが一般的です。通常ユーザーは UID 1000 以上で、ログインして操作する人間のアカウントです。

実行例まとめ

通常ユーザーを作成してパスワードを設定する

sudo useradd -m -s /bin/bash alice
sudo passwd alice

sudo 権限付きユーザーを作成する

sudo useradd -m -s /bin/bash -G sudo alice
sudo passwd alice

サービス用システムユーザーを作成する

sudo useradd -r -s /usr/sbin/nologin myservice

関連コマンド

  • usermod : 既存ユーザーの属性を変更
  • userdel : ユーザーを削除
  • passwd : ユーザーのパスワードを設定または変更
  • groupadd : グループを作成
  • groups : ユーザーが所属するグループを確認

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント