usermod
は、ユーザーのログイン情報を変更するためのコマンドラインユーティリティです。
この記事では、usermod
コマンドを使って、ユーザーのグループへの追加、ユーザーシェル、ログイン名、ホームディレクトリなどを変更する方法について説明します。
usermod コマンド #
usermod
コマンドの構文は次の形式です:
usermod USER
ルートまたは sudo
アクセス権を持つユーザーだけが usermod
を起動しユーザーアカウントを変更できます。 成功した場合、コマンドは何も出力しません。
ユーザをグループに追加する #
usermod
の最も典型的な使用例は、ユーザをグループに追加することです。
既存のユーザーをセカンダリーグループに追加するには、-a -G
オプションの後にグループ名とユーザー名を指定します。
usermod -a -G GROUP USER
一度に複数のグループに追加したい場合は、-G
オプションの後に空白を入れずに,
(カンマ)で区切ってグループを指定します。
例えば、ユーザー linuxize
を games
グループに追加するには、次のコマンドを実行します:
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
以下の例では、ユーザー名 linuxize
を lisa
から “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
コマンドを使用して、ユーザーアカウント情報を設定します。
usermod
コマンドを使用して、ユーザーアカウント情報を設定します。