Linuxコマンド辞典 usermodコマンド(ユーザ/グループ管理)

ユーザーアカウント情報を変更する「usermod」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

ユーザーアカウント情報を変更します。アカウント情報のうち、ホームディレクトリ/パスワード/シェル/ユーザID/所属グループなどを変更できます。

システムのユーザ名変更する場合は、「mv」や「chmod」、「chown」を駆使するよりもusermodを使用したほうが便利です。

書式

$usermod [オプション] ユーザ名

オプション

-C コメント

–comment

コメントを変更する

–d ディレクトリ名

–home ディレクトリ名

ホームディレクトリを変更する。-mオプションを併用すると

ホームディレクトリの内容を移動する

-e 有効期限日

–expiredate 有効期限日

使用不能になる日付をYYYY-MM-DDの形式で指定する

-f 有効日数

–inactive 有効日数

アカウントの有効期限が切れてから使用不能になるまでの日数を指定する

-g グループ名

–gid グループ名

初期所属グループを変更する。グループ名は1つのみを指定可能

-G グループ名 ・・・

–groups グループ名

所属するグループ名を指定する。複数のグループ名の場合は「.」で区切って指定する

-l ログイン名

–login ログイン名

ログイン名を変更する

-s シェル

–shell シェル

ログインシェルを絶対パスで指定する

-u ユーザID

–uid ユーザID

ユーザIDを数値で指定する。変更対象ユーザの

ホームディレクトリ以下にあるファイルは変更したユーザIDに

変更する

-L

パスワードのロックする

-U

パスワードのロックを解除する

ユーザ名を変更

ユーザを追加した後に名称を変更できます。

管理者権限

# usermod -l 新ユーザ名 元ユーザ名

実行結果

[root@i-host ~]# usermod -l tarochan taro

ホームディレクトリを変更

初期値とは別のホームディレクトリに変更することができます。既存ユーザが部署変更等でホームディレクトリを変更する場合に使用します。

管理者権限

# usermod -d ホームディレクトリ ユーザ名

実行結果

[root@i-host ~]# usermod -d /home/projectA tarou
[root@i-host ~]# cat /etc/passwd |grep tarou
tarou:x:5000:1012::/home/projectA:/bin/bash

ホームディレクトリ名を含めてユーザ名を変更

ユーザを追加した後に名称を変更できます。

管理者権限

# usermod -l 新ユーザ名 -d 任意ホームディレクトリ -m 元ユーザ名

実行結果

[root@i-host ~]# cat /etc/passwd |grep taro
taro:x:1012:1012::/home/taros:/bin/bash
[root@i-host ~]# usermod -l tarou -d /home/taro taro
[root@i-host ~]# cat /etc/passwd |grep taro
tarou:x:1012:1012::/home/taro:/bin/bash

ユーザー番号を変更

ユーザ番号(UID)は通常は意識する必要はありません。ユーザ追加時に任意で指定してもしなくても自動的に必ず附番されます。ユーザ番号は何番でもOS上は問題ありませんが、運用していく中で変更したいときも発生します。その場合は、-Uオプションを付加してコマンド実行することで、変更することが可能です。

ただし、ユーザ番号は、0から99まではシステム予約となっているため、100以上の正の値を使用する必要があります。

ユーザのホームディレクトリ(/home)配下のファイルは自動的に新しい値に変更されます。

管理者権限

# usermod -u 任意ユーザ番号(UID) ユーザー名

実行結果

[root@i-host ~]# cat /etc/passwd |grep tarou
tarou:x:1012:1012::/home/taro:/bin/bash 
     ↑
     1012が附番されている。
[root@i-host ~]# usermod -u 5000 tarou
[root@i-host ~]# cat /etc/passwd |grep tarou
tarou:x:5000:1012::/home/taro:/bin/bash
         ↑
         5000が附番される
[root@i-host ~]# 

パスワードをロック

一時的に使用しなくなったアカウント等をパスワードロックすることができます。パスワードロックした場合、ロック期間中はログインできなくなります。

管理者権限

# usermod -L ユーザ名

実行結果

[root@i-host ~]# usermod -L taro
[root@i-host ~]# passwd -S taro
taro LK 2022-03-15 0 99999 7 -1 (Password locked.)
[root@i-host ~]# 

パスワードロックした場合でも、管理者権限でスィッチすることは可能ですが、ホームディレクトリ以下は「Permission denied(アクセス権限がない)」というエラーメッセージが表示されます。

パスワードを解除

passwdコマンドでロックしたものは、usermodコマンドでは解除できません。その逆は可能です。

管理者権限

# usermod -U ユーザ名

実行結果

[root@i-host ~]# usermod -U taro
[root@i-host ~]# passwd -S taro
taro PS 2022-03-15 0 99999 7 -1 (Password set, SHA512 crypt.)

以下のエラーが発生した場合は、ロックしているユーザのパスワードが不適切なケースが多いです。管理者権限でパスワードを適切なものに設定しましょう。

[root@i-host ~]# usermod -U taro
usermod: unlocking the user's password would result in a passwordless account.
You should set a password with usermod -p to unlock this user's password.

プライマリグループを変更

プライマリグループ(イニシャルグループ)を変更するには、-gオプションを使用します。また、本操で変更前のグループは削除されません。ホームディレクトリも変更されません。

管理者権限

# usermod -g グループ名 or GID ユーザ名

実行結果

[root@i-host ~]# cat /etc/passwd |grep tarou
tarou:x:5000:1012::/home/projectA:/bin/bash
[root@i-host ~]# usermod -g jun tarou
[root@i-host ~]# cat /etc/passwd |grep tarou
tarou:x:5000:1008::/home/projectA:/bin/bash
              ↑グループが1012から変更
[root@i-host ~]# 

なお、指定するグループは先に作成しておく必要があります。

サプリメンタリグループを追加

ユーザは1つのプライマリグループに所属していますが、会社の組織変更やプロジェクトチームの結成などあった場合、1つのユーザに複数のグループに所属できる仕組みになっています。それがサプリメンタリグループ(補助)グループ

サプリメンタリグループを追加するには、-Gオプションを使用します。所属するグループ名及びGIDを指定します。カンマ(,)で区切ることによって複数指定できます。

管理者権限

# usermod -G グループ名 or GID・・・ ユーザ名

実行結果

[root@i-host ~]# usermod -G tomcat,apache tarou
[root@i-host ~]# cat /etc/group|grep tarou
apache:x:48:tarou    ←apacheグループに追加
tomcat:x:1003:tarou  ←tomcatグループに追加
[root@i-host ~]# 

なお、指定するグループは先に作成しておく必要があります。