【Linux】adduserコマンドでユーザーアカウントを対話的に作成する

目次

概要

Debian系ディストリビューション(Ubuntu, Debian, Kali Linuxなど)において、対話形式で親切にユーザーアカウントを作成するためのコマンドです。

低レベルな useradd コマンドとは異なり、ホームディレクトリの作成、デフォルト設定のコピー、初期パスワードの設定などをウィザード形式で案内してくれるため、管理者の負担を軽減できます。また、既存ユーザーをグループに追加する際にも利用されます。

仕様(引数・オプション)

構文

# 新規ユーザーの作成
adduser [オプション] [ユーザー名]

# 既存ユーザーを既存グループに追加
adduser [ユーザー名] [グループ名]

主なオプション

オプション説明
–conf [ファイル]デフォルト以外の設定ファイル(adduser.conf)を指定して使用します。
–disabled-loginパスワードを設定せず、アカウントをログイン不可の状態にします。
–disabled-passwordパスワードを設定しません(SSH鍵認証などでの利用を想定)。
–gecos [情報]GECOSフィールド(氏名、部屋番号などのコメント)を直接設定します。
–gid [ID]作成するユーザーのプライマリグループIDを指定します。
–groupユーザー名と同じ名前のグループを作成します(通常はデフォルト)。
–home [DIR]ホームディレクトリのパスを指定します。
–shell [SHELL]ログインシェルを指定します(例: /bin/bash)。
–ingroup [グループ名]指定した既存グループをプライマリグループとしてユーザーを作成します。
–no-create-homeホームディレクトリを作成しません。
–systemシステムユーザー(低いUID、パスワードなし等)として作成します。
–uid [ID]ユーザーID(UID)を数値で指定します。
–lastuid [ID]選択されるUIDの上限を指定します(通常は設定ファイル依存)。
–quiet進捗メッセージや警告を表示せず、静かに実行します。

基本の使い方

対話モードで新規ユーザー yui を作成し、作成後の情報を確認します。

パスワードやフルネームなどが順番に聞かれます。

# 対話形式でユーザー作成
sudo adduser yui

# 作成されたユーザー情報の確認
id yui

# GECOS情報(Finger情報)の確認
finger yui

# パスワード有効期限情報の確認
sudo chage -l yui

実行結果例

Adding user `yui' ...
Adding new group `yui' (1001) ...
Adding new user `yui' (1001) with group `yui' ...
Creating home directory `/home/yui' ...
Copying files from `/etc/skel' ...
New password: (パスワード入力)
Retype new password: (再入力)
passwd: password updated successfully
Changing the user information for yui
Enter the new value, or press ENTER for the default
    Full Name []: Yui Sato
    Room Number []: 
    ...
Is the information correct? [Y/n] y

実践コマンド

既存ユーザーをグループに追加する

作成済みのユーザー infra_manager を、管理者権限を持つ sudo(または wheel)グループに追加します。

Debian系では usermod を使うよりも直感的で簡単です。

# ユーザー infra_manager を sudo グループに追加
sudo adduser infra_manager sudo

実行結果例

Adding user `infra_manager' to group `sudo' ...
Adding user infra_manager to group sudo
Done.

シェルとコメントを一発で指定して作成する

対話入力をスキップしたい項目(シェルやコメント)をオプションで事前に指定します。バッチ処理や定型的な作成作業に向いています。

# シェルをzsh、コメントを"Application Deployer"に設定して作成
sudo adduser --shell /usr/bin/zsh --gecos "Application Deployer" app_user

# 設定内容を確認
grep app_user /etc/passwd

実行結果例

app_user:x:1002:1002:Application Deployer,,,:/home/app_user:/usr/bin/zsh

カスタムポイント

  • 設定ファイルの変更 (/etc/adduser.conf)adduser のデフォルト動作(ホームディレクトリの場所、デフォルトシェル、UIDの範囲など)は /etc/adduser.conf に記述されています。システム全体で「デフォルトは zsh にしたい」といった場合は、コマンドオプションではなくこのファイルを編集するのがスマートです。Bash# デフォルトシェルを編集 sudo nano /etc/adduser.conf # DSHELL=/bin/zsh に書き換え

注意点

  1. Red Hat系での挙動違いRHELやCentOSでは、adduser は単なる useradd へのシンボリックリンクであることが多いです。そのため、この記事で解説しているような対話的なウィザードは起動しません。この機能は主にDebian/Ubuntu系の特徴です。
  2. グループ追加の構文「ユーザーをグループに追加」する場合、adduser ユーザー名 グループ名 の順序で指定します。useradd コマンドや usermod コマンドとは引数の並びや概念が異なるため混同しないようにしてください。

応用

システム実行用ユーザーの作成 (–system)

WebサーバーやBotなどを動かすための、ログインを前提としない「システムユーザー」を作成します。UIDがシステム用の低い番号(通常1000未満)に割り当てられ、ホームディレクトリは作られません(設定次第)。

# グループも同時に作成し、ログイン不可のシステムユーザーを作成
sudo adduser --system --group --no-create-home discord-bot

まとめ

adduser は、Debian系Linuxを使う上で「人間に優しい」アカウント管理コマンドです。

「ユーザーを作るなら adduser」「グループに入れるのも adduser」と覚えておけば、複雑なオプションを覚えなくても日常的な管理作業をスムーズに行えます。スクリプトで自動化する場合は useradd、手動で管理する場合は adduser と使い分けるのが推奨されます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次