usermodコマンドでユーザー設定を変更する方法|グループ追加・シェル変更・ロックもコマンド


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドU-Z, ユーザ・グループ管理コマンド > usermodコマンドでユーザー設定を変更する方法|グループ追加・シェル変更・ロックもコマンド
「ユーザーのグループを変更したいけど、どのオプションを使えばいいかわからない」
「サービス用アカウントのシェルをnologinに変えたい」

既存ユーザーの設定を変更するusermodコマンドは、サーバー運用で頻繁に使います。
この記事では、usermodコマンドの基本から、グループ追加・ホームディレクトリ変更・アカウントロックまで、実務で必要な操作を網羅します。

usermodコマンドとは?

usermodは「user modify」の略で、既存ユーザーの設定を変更するコマンドです。

似たコマンドとの違いを整理しておきましょう。

useradd:ユーザーを新規作成する
usermod:既存ユーザーの設定を変更する
userdel:ユーザーを削除する

usermodはroot権限(sudo)が必要です。一般ユーザーでは実行できません。

基本的な使い方

1. プライマリグループを変更する(-g)

ユーザーが所属するプライマリグループ(メイングループ)を変更します。

# miyazakiのプライマリグループをwebに変更 sudo usermod -g web miyazaki # 確認 id miyazaki uid=1001(miyazaki) gid=1002(web) groups=1002(web)

2. サブグループ(補助グループ)に追加する(-aG)

-aG は実務で最もよく使うオプションです。既存のグループ所属を維持したまま、新しいグループにも追加します。

※ -a(append)を忘れると、既存のサブグループがすべて外れるので注意してください。

# wheelグループに追加(sudo権限の付与) sudo usermod -aG wheel miyazaki # dockerグループにも追加 sudo usermod -aG docker miyazaki # 確認 id miyazaki uid=1001(miyazaki) gid=1001(miyazaki) groups=1001(miyazaki),10(wheel),998(docker)

【重要】-aを忘れた場合の危険性

-G だけで -a をつけ忘れると、指定したグループ「だけ」にサブグループが置き換わります。

# 現在のグループ id miyazaki uid=1001(miyazaki) gid=1001(miyazaki) groups=1001(miyazaki),10(wheel),998(docker) # -aなしで-Gだけ指定すると... sudo usermod -G web miyazaki # wheelとdockerグループから外れてしまう! id miyazaki uid=1001(miyazaki) gid=1001(miyazaki) groups=1001(miyazaki),1002(web)

グループを追加するときは、必ず -aG とセットで使ってください。

3. ホームディレクトリを変更する(-d -m)

-dでホームディレクトリのパスを変更し、-mで既存ファイルを新しいディレクトリに移動します。

# ホームディレクトリを/home/newdirに変更し、ファイルも移動 sudo usermod -d /home/newdir -m miyazaki # 確認 grep miyazaki /etc/passwd miyazaki:x:1001:1001::/home/newdir:/bin/bash

-mをつけないと、/etc/passwdのパスだけが変わり、実際のファイルは元の場所に残ります。

4. ログインシェルを変更する(-s)

ユーザーのデフォルトシェルを変更します。

# サービス用アカウントのシェルをnologinに変更(ログイン禁止) sudo usermod -s /sbin/nologin nginx # bashに戻す sudo usermod -s /bin/bash miyazaki

Webサーバー(nginx, apache)やメールサーバー(postfix)などのサービス用アカウントは、セキュリティのためシェルを /sbin/nologin に設定するのが鉄則です。

応用・実務Tips

1. アカウントをロック・アンロックする(-L / -U)

退職者のアカウントを一時的にロックする場合などに使います。

# アカウントをロック(ログイン不可にする) sudo usermod -L miyazaki # /etc/shadowのパスワードフィールドに「!」が付く sudo grep miyazaki /etc/shadow miyazaki:!$6$xxxx...:19435:0:99999:7::: # アカウントをアンロック sudo usermod -U miyazaki

-Lはパスワードの先頭に「!」を付けてログインを無効にします。アカウントの削除ではなく一時的な停止に適しています。

2. アカウントの有効期限を設定する(-e)

外部委託や期間限定アカウントに有効期限を設定します。

# 2026年3月31日に期限切れにする sudo usermod -e 2026-03-31 miyazaki # 確認 sudo chage -l miyazaki Account expires : Mar 31, 2026

3. ユーザー名を変更する(-l)

ユーザー名(ログイン名)そのものを変更します。

# ユーザー名をoldnameからnewnameに変更 sudo usermod -l newname oldname # ホームディレクトリも合わせて変更する場合 sudo usermod -l newname -d /home/newname -m oldname

ユーザー名を変えてもUID(ユーザーID)は変わらないため、既存ファイルの所有者は維持されます。

トラブルシュート・エラー対処

「user is currently used by process」が出た時の対処法

対象ユーザーがログイン中、またはプロセスを実行している場合にこのエラーが出ます。

$ sudo usermod -l newname miyazaki usermod: user miyazaki is currently used by process 1234 # 対象ユーザーのプロセスを確認 ps -u miyazaki # 対象ユーザーをログアウトさせてから再実行する

「Permission denied」「usermod: Permission denied.」が出た時の対処法

root権限なしで実行した場合のエラーです。sudoをつけて実行してください。

$ usermod -aG wheel miyazaki usermod: Permission denied. # sudoをつけて実行 $ sudo usermod -aG wheel miyazaki

本記事のまとめ

やりたいこと コマンド
プライマリグループを変更する sudo usermod -g グループ名 ユーザー名
サブグループに追加する sudo usermod -aG グループ名 ユーザー名
ホームディレクトリを変更する sudo usermod -d /新パス -m ユーザー名
ログインシェルを変更する sudo usermod -s /sbin/nologin ユーザー名
アカウントをロックする sudo usermod -L ユーザー名
アカウントをアンロックする sudo usermod -U ユーザー名
有効期限を設定する sudo usermod -e YYYY-MM-DD ユーザー名
ユーザー名を変更する sudo usermod -l 新名前 旧名前

ユーザー管理の「正しいやり方」、体系的に学びませんか?

usermodによるユーザー設定はサーバー管理の基本ですが、実務ではパーミッション・グループ・sudo設定を正しく組み合わせる必要があります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る