usermod は、ユーザーのログイン情報を変更するためのコマンドラインユーティリティです。

この記事では、usermodコマンドを使って、ユーザーのグループへの追加、ユーザーシェル、ログイン名、ホームディレクトリなどを変更する方法について説明します。

usermod コマンド #

usermod コマンドの構文は次の形式です:

usermod USER

ルートまたは sudo アクセス権を持つユーザーだけが usermod を起動しユーザーアカウントを変更できます。 成功した場合、コマンドは何も出力しません。

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

usermodの最も典型的な使用例は、ユーザをグループに追加することです。

既存のユーザーをセカンダリーグループに追加するには、-a -Gオプションの後にグループ名とユーザー名を指定します。

usermod -a -G GROUP USER

一度に複数のグループに追加したい場合は、-Gオプションの後に空白を入れずに,(カンマ)で区切ってグループを指定します。

例えば、ユーザー linuxizegames グループに追加するには、次のコマンドを実行します:

sudo usermod -a -G games linuxize

ユーザーを新しいグループに追加するときは、常に -a (append) オプションを使用してください。 -a オプションを省略した場合、ユーザーは -G オプションの後にリストされていないグループから削除されます。

ユーザーまたはグループが存在しない場合、コマンドは警告を表示します。

Change User Primary Group #

ユーザーのプライマリーグループを変更するには、-gオプションの後にグループ名とユーザー名を指定して、usermodコマンドを実行します:

sudo usermod -g GROUP USER

次の例では、ユーザーlinuxizeのプライマリーグループをdevelopersに変更します:

usermod -g developers linuxize

それぞれのユーザーは正確に一つのプライマリーグループと0以上のセカンダリーグループに属すことができます。

ユーザー情報の変更 #

GECOS(ユーザーのフルネーム)情報を変更するには、-cオプションに新しいコメントとユーザー名を付けてコマンドを実行します:

usermod -c "GECOS Comment" USER

以下は、ユーザー linuxize に追加情報を追加する方法を示す例です:

usermod -c "Test User" linuxize

この情報は /etc/passwd ファイルに保存されています。

ユーザーホームディレクトリの変更 #

ほとんどの Linux システムでは、ユーザーホームディレクトリはユーザー名にちなんで名付けられ、 /home ディレクトリの下に作成されます。

何らかの理由でユーザのホームディレクトリを変更したい場合、-dオプションに新しいホームディレクトリの絶対パスとユーザ名を指定し、usermodコマンドを実行してください:

usermod -d HOME_DIR USER

デフォルトでは、コマンドはユーザのホームディレクトリの内容を新しいディレクトリに移動させません。 コンテンツを移動するには、-m オプションを使用します。 新しいディレクトリがまだ存在しない場合、それが作成されます:

usermod -d HOME_DIR -m USER

以下は、ユーザー www-data のホームディレクトリを /var/www に変更する方法を示す例です:

usermod -d /var/www www-data

ユーザーのデフォルトシェルの変更 #

デフォルトシェルとは、システムにログインした後に実行するシェルを指します。

ユーザーのデフォルトシェルを変更するには、-s オプションにシェルの絶対パスとユーザー名を付けてコマンドを実行します:

usermod -s SHELL USER

以下の例では、ユーザーシェルを Zsh に変更しています:

sudo usermod -s /usr/bin/zsh linuxize

システムで使用できるシェルは、/etc/shells ファイルの内容を表示して確認することも可能です。

Changing a User UID #

UID (the user identifier) は、各ユーザーに割り当てられる番号です。

UID を変更するには、-u オプションに新しい UID と user の名前を付けてコマンドを実行します:

usermod -u UID USER

以下の例では、”UID” 番号を “1050” に変更しています:

sudo usermod -u 1050 linuxize

そのユーザーが所有しそのユーザーのホームディレクトリとユーザーのメールボックスファイル内にあるファイルの UID は自動的に変更されます。

ユーザ名の変更 #

あまり頻繁ではありませんが、既存のユーザの名前を変更したい場合があります。 -l オプションを使用してユーザー名を変更します:

usermod -l NEW_USER USER

以下の例では、ユーザー名 linuxizelisa から “1050” に変更します:

sudo usermod -l linuxize lisa

ユーザー名を変更する場合、ユーザーのホームディレクトリも新しいユーザー名に変更したい場合があります。

ユーザーの有効期限の設定#

有効期限はユーザーアカウントを無効にする日にちです。 ユーザーの有効期限を設定するには、-eオプションを使用します:

sudo usermod -e DATE USER

有効期限は、YYYY-MM-DDのフォーマットで設定する必要があります。

たとえば、2022-02-21 でユーザー linuxize を無効にするには、次のコマンドを実行します:

sudo usermod -e "2022-02-21" linuxize

アカウントの有効期限を無効にするには、空の有効期限を設定します:

sudo usermod -e "" linuxize

ユーザーの有効期限の表示は、chage -l コマンドで行います:

sudo chage -l linuxize
Last password change: Jul 24, 2018Password expires: neverPassword inactive: neverAccount expires: neverMinimum number of days between password change: 0Maximum number of days between password change: 99999Number of days of warning before password expires: 7

有効期限は /etc/shadow ファイルに保存されています。

ユーザーアカウントのロックとロック解除 #

-Lオプションでユーザーアカウントをロックできます:

usermod -L USER

コマンドは暗号化されたパスワードの前に感嘆符(!)マークが挿入されます。 /etc/shadowファイルのパスワードフィールドに感嘆符が含まれている場合、ユーザーはパスワード認証を使用してシステムにログインすることができなくなります。 キーベースの認証やユーザーへの切り替えなど、他のログイン方法は引き続き許可されます。

次の例は、ユーザー linuxize をロックする方法を示しています:

sudo usermod -L linuxize
sudo usermod -L -e 1 linuxize

ユーザーのロックを解除するには、-U オプションで usermod を実行します:

usermod -U USER

まとめ #

ユーザーアカウント情報を設定する usermod コマンドを使用する方法を紹介しました:

usermod -U USER

ユーザーのロックは、ユーザーアカウント情報を設定する usermod コマンドを使用して、ユーザーアカウント情報を設定します。

コメントを残す

メールアドレスが公開されることはありません。