「サービス用アカウントのシェルを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)
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
4. ログインシェルを変更する(-s)
ユーザーのデフォルトシェルを変更します。# サービス用アカウントのシェルをnologinに変更(ログイン禁止) sudo usermod -s /sbin/nologin nginx # bashに戻す sudo usermod -s /bin/bash miyazaki
応用・実務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
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
トラブルシュート・エラー対処
「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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方
