本記事では、Linuxサーバのユーザ作成時に利用するLinuxコマンドであるuseraddについて紹介します。
それでは、具体的な使用方法について見ていきましょう。
コマンド文法
ユーザ作成で利用するuseraddコマンドの文法は以下の通りです。
ユーザ名は任意の名前を指定することができますが、既存で作成されるユーザ名と重複した名前は指定することができません。
useradd [オプション] [作成したいユーザ名]
オプション一覧は以下の通りです。(対象コマンドのmanコマンドの情報を参考)
オプション名 | 説明 |
---|---|
-u [設定したいユーザID] | ユーザIDを指定する際に利用する。ユーザIDとは、ユーザ名を識別する一意の番号。値は0以上で、基本的に他のユーザIDと重複してはいけない。(oオプションを併用する場合は重複可能) オプションを指定しない場合、デフォルトのユーザIDは999より大きい(※1)、かつ、全ての既存のユーザIDよりも大きい値の最小値となる。(※2) |
-g [設定したいメイングループ名、またはID] | ユーザが所属するメイングループを指定する際に利用する。 指定するグループ名、グループIDは存在しているものを指定する必要がある。 オプションを指定しない場合のデフォルトのグループIDは1、または、/etc/default/useradd(※3)に指定されている値となる。 ただし、/etc/login.def(※4)の属性「USERGROUPS_ENAB:yes」の場合は、ユーザ名と同じ名前のグループに所属する。(存在していない場合は新規作成される。)グループIDは基本的にユーザIDと同じグループIDとなるが、既存のグループIDと重複している場合は999より大きい(※1)、かつ、全ての既存のユーザIDよりも大きい値の最小値となる。 |
-G [設定したいサブグループ名、またはID] | ユーザが所属するサブグループを指定する際に利用する。複数指定可能。 複数設定する場合はカンマ(,)区切りでグループを指定する。(間に空白入れない。) 指定するグループ名、グループIDは存在しているものを指定する必要がある。 オプションを指定しない場合は、設定されない。 |
-d [設定したいホームディレクトリ] | ユーザのホームディレクトリを指定する際に利用する。 オプションを指定しない場合、デフォルト値は/home/(ユーザ名)となる。(※5) |
-m | ホームディレクトリが存在しない場合に、ホームディレクトリを作成する。(※5) 追加でkオプションを指定すると、 skeleton_dir 以下のファイル、指定しない場合は /etc/skelディレクトリ配下のファイル、ディレクトリがホームディレクトリに配置される。 |
-s [設定したいログインシェル] | ユーザのログインシェルを指定する際に利用する。 オプションを指定しない場合、ログインシェルは/etc/default/useradd(※3)に指定されているデフォルト値が設定される。 |
-e [アカウント期限] | ユーザのアカウント期限を指定する際に利用する。書式は”YYYY-MM-DD”で指定する。オプションを指定しない場合、無期限となる。 |
-f [パスワード期限切れからユーザ使用不能までの日数] | パスワード期限からアカウントが永久に無効化するまでの日数を指定する際に利用する。 0:パスワード期限切れと同時に無効化 -1:アカウント無効化しない オプションを指定しない場合、デフォルトは-1(アカウント無効化しない)となる。 |
-c [コメント] | コメントを追加したい場合に指定する。 オプションを指定しない場合、デフォルトはコメントを追加しない。 |
(※2) 例えば、既存のユーザIDとして、1000, 1002が利用されている場合、gオプションなしでユーザ作成を実行した場合のユーザIDは1003となります。
(※3) useraddコマンドのデフォルト値が定義されている設定ファイル
(※4) ログイン関連の設定ファイル
(※5) ホームディレクトリが存在しない場合に、ホームディレクトリを作成する場合はmオプションを指定するとの記載がありましたが、「CentOS Stream release 9」ではmオプション指定なしでもディレクトリが新規作成されるようです。
使用例
具体的なコマンド実行結果を見ていきます。
利用する実行環境のOSは「CentOS Stream release 9」です。
事前情報として、現在のユーザ設定は以下のような状態になっています。一般ユーザとしてuser01が設定されています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
[root@test01 ~]#
(オプションなし)の場合
オプションなしでユーザ作成するコマンドを実行します。
設定内容としては、ユーザ名:test01のユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。
useradd test01
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd test01
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest01が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。グループIDは999より大きい、かつ、既存グループIDより大きい値の最小値である1001となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test01:x:1001:1001::/home/test01:/bin/bash
[root@test01 ~]#
(uオプション:ユーザID指定)の場合
uオプションでユーザIDを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、ユーザ名:test02、ユーザID:2000のユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。uオプションを利用してユーザID:2000を指定しています。
useradd -u 2000 test02
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -u 2000 test02
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest02が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。ユーザIDはuオプションで指定した2000となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test02:x:2000:2000::/home/test02:/bin/bash
[root@test01 ~]#
(gオプション:メイングループ指定)の場合
gオプションでメイングループを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、グループ名:user01をメイングループとしてユーザを作成します。
事前設定として、グループ:user01を以下の通り設定指定しています。
[root@test01 ~]# cat /etc/group | grep ^user01
user01:x:1000:
[root@test01 ~]#
実行コマンド
実行コマンドは以下の通りです。gオプションを利用してメイングループ:user01を指定しています。
useradd -g user01 test03
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -g user01 test03
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest03が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。メイングループ名はgオプションで指定したグループ名:user01、グループID:1000となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test03:x:1001:1000::/home/test03:/bin/bash
[root@test01 ~]#
(Gオプション:サブグループ指定)の場合
Gオプションでサブグループを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、サブグループ名:user01,user02をサブグループとしてユーザを作成します。
事前設定として、グループ:user01, user02を以下の通り設定指定しています。
[root@test01 ~]# cat /etc/group | grep ^user0
user01:x:1000:
user02:x:1001:
[root@test01 ~]#
実行コマンド
実行コマンドは以下の通りです。Gオプションを利用してサブグループ:user01, user02を指定しています。
useradd -G user01,user02 test04
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -G user01,user02 test04
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest04が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。メイングループは指定していないので、デフォルト設定となっています。
サブグループはグループ設定ファイルである/etc/groupを確認します。実行結果の黄色部分からサブグループ名はGオプションで指定したグループ名:user01, user02のグループI D(1000, 1001)となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test04:x:1001:1002::/home/test04:/bin/bash
[root@test01 ~]#
[root@test01 ~]# cat /etc/group | grep user0
wheel:x:10:user01
user01:x:1000:test04
user02:x:1001:test04
[root@test01 ~]#
(dオプション:ホームディレクトリ指定)の場合
dオプションでホームディレクトリを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、ホームディレクトリ:/tmp/test05 を指定してユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。dオプションを利用してホームディレクトリ:/tmp/test05
を指定しています。
useradd -d /tmp/test05 test05
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
mオプションを指定せずに、存在しないディレクトリを指定する場合でもエラーは発生しませんでした。
[root@test01 ~]# useradd -d /tmp/test05 test05
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest05が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。メイングループ名はdオプションで指定したホームディレクトリ:/tmp/test05となっています。また、mオプションを指定していなくても、存在していないホームディレクトリのディレクトリが新規作成されています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test05:x:1001:1001::/tmp/test05:/bin/bash
[root@test01 ~]#
[root@test01 ~]# ls -la /tmp/test05
合計 16
drwx------ 3 test05 test05 78 7月 23 13:23 .
drwxrwxrwt. 19 root root 4096 7月 23 13:23 ..
-rw-r--r-- 1 test05 test05 18 11月 24 2022 .bash_logout
-rw-r--r-- 1 test05 test05 141 11月 24 2022 .bash_profile
-rw-r--r-- 1 test05 test05 492 11月 24 2022 .bashrc
drwxr-xr-x 4 test05 test05 39 7月 14 11:48 .mozilla
[root@test01 ~]#
(mオプション:ホームディレクトリが存在しない場合に作成)の場合
mオプションを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、ホームディレクトリ:/tmp/test06 を指定してユーザを作成します。
補足:今回利用したCentOS9ではmオプションを指定していなくても存在していないディレクトリは新規作成されていたので、OSのバージョンの違いによって差異があるのかもしれません。
実行コマンド
実行コマンドは以下の通りです。m、dオプションを利用してホームディレクトリ:/tmp/test06
を指定しています。
useradd -m -d /tmp/test06 test06
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -m -d /tmp/test06 test06
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest06が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。メイングループ名はdオプションで指定したホームディレクトリ:/tmp/test06となっています。また、存在していないホームディレクトリのディレクトリが新規作成されています。
ディレクトリの中身は/etc/skelと同じ構造となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test06:x:1001:1001::/tmp/test06:/bin/bash
[root@test01 ~]#
[root@test01 ~]# ls -la /tmp/test06/
合計 16
drwx------ 3 test06 test06 78 7月 23 13:20 .
drwxrwxrwt. 18 root root 4096 7月 23 13:20 ..
-rw-r--r-- 1 test06 test06 18 11月 24 2022 .bash_logout
-rw-r--r-- 1 test06 test06 141 11月 24 2022 .bash_profile
-rw-r--r-- 1 test06 test06 492 11月 24 2022 .bashrc
drwxr-xr-x 4 test06 test06 39 7月 14 11:48 .mozilla
[root@test01 ~]#
[root@test01 ~]# ls -la /etc/skel/
合計 24
drwxr-xr-x. 3 root root 78 7月 14 11:49 .
drwxr-xr-x. 128 root root 8192 7月 23 13:20 ..
-rw-r--r--. 1 root root 18 11月 24 2022 .bash_logout
-rw-r--r--. 1 root root 141 11月 24 2022 .bash_profile
-rw-r--r--. 1 root root 492 11月 24 2022 .bashrc
drwxr-xr-x. 4 root root 39 7月 14 11:48 .mozilla
[root@test01 ~]#
(sオプション:ログインシェル指定)の場合
sオプションでログインシェルを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、ログインシェル:/bin/shを指定してユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。sオプションを利用してログインシェル:/bin/shを指定しています。
useradd -s /bin/sh test07
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -s /bin/sh test07
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest07が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。メイングループ名はsオプションで指定したログインシェル:/bin/shとなっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test07:x:1001:1001::/home/test07:/bin/sh
[root@test01 ~]#
(eオプション:アカウント期限指定)の場合
eオプションでアカウント期限を指定して、ユーザ作成するコマンドを実行します。
設定内容としては、アカウント期限:2026-01-01を指定してユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。eオプションを利用してアカウント期限:2026-01-01を指定しています。
useradd -e 2026-01-01 test08
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -e 2026-01-01 test08
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest08が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。アカウント期限については、chageコマンドを実行します。実行結果の黄色部分からeオプションで指定したアカウント期限:2026-01-01となっています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test08:x:1001:1001::/home/test08:/bin/bash
[root@test01 ~]#
[root@test01 ~]# chage -l test08
最終パスワード変更日 : 7月 23, 2024
パスワード期限: : なし
パスワード無効化中 : なし
アカウント期限切れ : 1月 01, 2026
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 99999
パスワード期限が切れる前に警告される日数 : 7
[root@test01 ~]#
(fオプション:パスワード期限切れからユーザ使用不能までの日数指定)の場合
fオプションでパスワード期限切れからユーザ使用不能までの日数を指定して、ユーザ作成するコマンドを実行します。
設定内容としては、パスワード期限切れからユーザ使用不能までの日数:100を指定してユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。fオプションでパスワード期限切れからユーザ使用不能までの日数:100を指定しています。
useradd -f 100 test09
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -f 100 test09
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest09が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。パスワード期限切れからユーザ使用不能までの日数の設定内容がどこに記載されているのか見つけられなかったので、確認中です。chageコマンドには記載されていませんでした。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test09:x:1002:1003::/home/test09:/bin/bash
[root@test01 ~]#
[root@test01 ~]# chage -l test09
最終パスワード変更日 : 8月 01, 2024
パスワード期限: : なし
パスワード無効化中 : なし
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 99999
パスワード期限が切れる前に警告される日数 : 7
[root@test01 ~]#
(cオプション:コメント指定)の場合
cオプションでコメントを指定して、ユーザ作成するコマンドを実行します。
設定内容としては、コメント:TEST を指定してユーザを作成します。
実行コマンド
実行コマンドは以下の通りです。cオプションでコメント:TEST を指定しています。
useradd -c TEST test10
実行結果
実際にLinuxサーバで実行した結果は以下の通りです。成功した場合は特に標準出力としては何も表示されず、コマンドが終了します。(エラーの場合はエラーメッセージが出力されます。)
[root@test01 ~]# useradd -c TEST test10
[root@test01 ~]#
設定確認結果
ユーザが作成されているかを確認します。ユーザの設定ファイルである/etc/passwd内にtest10が存在していることを確認します。実行結果の赤色部分から正常に作成されていることが分かります。また、cオプションで指定したコメント:TESTが記載されています。
[root@test01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・・・(システム用ユーザIDは一部省略)
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
test10:x:1001:1001:TEST:/home/test10:/bin/bash
[root@test01 ~]#
まとめ
今回はユーザ作成時のデフォルト設定で利用するLinuxコマンドuseraddについて紹介しました。
以下は設定方法のまとめになります。
- useraddコマンドの使用方法は
useradd [オプション] [変更したいグループ名]
- オプションとして以下の主に以下の2つが利用可能
- -u [設定したいユーザID]:ユーザIDを指定したい際に利用
- -g [設定したいメイングループ名、またはID]:メイングループを指定したい際に利用
- -G [設定したいサブグループ名、またはID]:サブグループを指定したい際に利用
- -d [設定したいホームディレクトリ]:ホームディレクトリを指定したい際に利用
- -m:ホームディレクトリのディレクトリが存在しない場合に新規作成する。
- -s [設定したいログインシェル]:ログインシェルを指定したい際に利用
- -e [アカウント期限]:アカウント期限を指定したい際に利用
- -f [パスワード期限切れからユーザ使用不能までの日数]:パスワード期限切れからユーザ使用不能までの日数を指定したい際に利用
- -c [コメント]:コメントを指定したい際に利用
以上になります。ありがとうございました。
コメント