useraddはコンピュータにユーザーを追加するコマンドだ。
このページでは基本的なユーザーの考え方と、ユーザーの作成方法を解説する。
目次
- 1 Linuxのユーザーとは
- 2 コマンドの基本
- 3 useraddコマンドのオプションたち
- 3.1 コマンドの一覧
- 3.2 -Dオプション(--defaultsオプション):useradd のデフォルト設定を表示または変更を行う
- 3.3 -cオプション(--comment COMMENTオプション):コメントを追加する
- 3.4 -Nオプション(--no-user-groupオプション):グループを新規作成しない
- 3.5 -gオプション(--gid GROUPオプション):主グループまたはグループ番号(GID)を指定する
- 3.6 -Gオプション(--groups GROUPSオプション):補助グループを指定する
- 3.7 -u オプション(--uid UIDオプション):ユーザー番号を指定する
- 3.8 -mオプション(--create-homeオプション):ホームディレクトリを作成する
- 3.9 -kオプション(--skel SKEL_DIRオプション):ディレクトリを決まった形で作成する
- 3.10 -Mオプション(--no-create-homeオプション):ホームディレクトリを作成しない
- 3.11 -eオプション(--expiredate EXPIRE_DATEオプション):ユーザーの有効期限を指定する
- 3.12 -fオプション(--inactive INACTIVEオプション):パスワードの有効期限が切れた後のユーザーのアカウントの有効期限を指定する
- 3.13 -pオプション(--password PASSWORDオプション):暗号化したパスワードを指定する
- 3.14 -sオプション(--shell SHELLオプション):ログインシェルを指定する
- 4 useradd関連コマンド
Linuxのユーザーとは
まず、Linuxのユーザーについて解説する。
Linuxの場合、PCの利用者には様々なケースがある。
一台のPCを複数ユーザーで直接操作し利用するユーザーと、ネットワークからサーバーにアクセスし活用するユーザーという分け方もできる。
どんな場合でも、利用者は全員ユーザー登録しておくべきだ。
登録しておけば、誰がいつログインしたかをlastコマンドで追跡できるので、セキュリティ対策にもなる。
また、ユーザーごとにファイルやディレクトリのアクセス権をchmodコマンドで設定することができるので、関係ないファイルを誤操作されてしまうリスクを軽減できる。
ユーザー一覧の確認
Linuxに登録されているユーザーの一覧は/etc/passwdに記録されているが、パスワード欄はすべてxと表示されている。
すべてのユーザー一覧を確認するには次のコマンドだ。
$ cat /etc/passwd
または、調べたいユーザーが決まっているのであれば次のようにgrepコマンドを利用してもよいだろう。
$ grep 調べたいユーザー名 /etc/passwd
ひとつのレコードには「Sam:x:1001:1001:Sam,,,,:/bin/sh」のような形で表記されている。
「:」で区切られている。
1つめは、ユーザー名だ。
2つめは、ユーザー番号(UID)だ。指定しなければ自動で採番される。
3つめは、メインで所属しているグループのグループ番号(GID)だ。
4つめは、コメントだ。
5つめは、ログインしたときに起動するシェルの場所だ。
シェルとは
シェルとは、コマンドの呼び出し方法一覧表のようなものだ。例えば、lsというコマンドはファイルやディレクトリの一覧を表示するというのは、シェルによって決まっている。
シェルによって最も見た目に違いが出るのは、コマンドを入力するときのプロンプトの表示方法だ。
Linuxを使っていると、プロンプトの形が次のような様々なものを見たことがあるだろう。
Jim@Localhost:~$
[Jim@Localhost] $
Bash $
シェルによってコマンドプロンプトの表示方法の違いがある。
/etc/passwdにはパスワードがxの情報しかないため、ユーザーが万が一、パスワードを忘れるとそのユーザーの情報にはアクセスできなくなる。
そこで、パスワード欄にパスワードが暗号化されて記録されているユーザー一覧表は/etc/shadowにある。
暗号化されたパスワードは、たとえ1文字で指定したとしても非常に長い文字列として記録されている。
確認するには次のコマンドだ。
$ cat /etc/shadow
「Jim:$6$rWwnz3qA$UQv./cNPj5H3cssT/QTSZLxLnPp1WXzsPgJA2V4SAukrVAFwW4Z1jcyizBPzaGmnfpFsYKZB3nUxF4rv5YjgM/:1001:1001:Sam,,,,:/bin/sh」のように記録されている。
/etc/passwd ではパスワードがxで表記されているが、/etc/shadowでは、非常に長い文字列となっている。
管理者が、ある特殊な方法を使えば、このパスワードを解読できるような形となっている。
また、1人のユーザーの所属グループを確認するにはidコマンドを活用できる。
ユーザーTempの所属グループを確認するには次のコマンドだ。
$id Temp
Tempの主所属グループとそのグループ番号(GID)と副グループも同じく表示された。
コマンドの基本
コマンドの基本動作
ユーザーの追加は、一般ユーザーでは操作できない。
スーパーユーザーなど、管理者権限を持つアカウントで操作する。
任意のユーザー名でユーザーを追加するのは、次のとおり簡単だ。
$ useradd ユーザー名
ユーザーを追加するにはこれだけだ。
ユーザーJimを追加するには次のコマンドだ。
$ useradd Jim
ユーザーJimが作成された。
実際に作成されたか、/etc/passwdの内容を確認してみよう。
$ grep Jim /etc/passwd
ユーザーJimが作成されている。
useraddコマンドのオプションたち
コマンドの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション-D(オプション--defaults)
useradd のデフォルト設定を表示または変更を行う
オプション-c(オプション--comment COMMENT)
コメントを追加する
オプション-N(--no-user-group)
グループを新規作成しない
オプション-g(--gid GROUP)
主グループまたはグループ番号(GID)を指定する
オプション-G(--groups GROUPS)
補助グループを指定する
オプション-u(--uid UID)
ユーザー IDを指定する
オプション-d(オプション--home-dir HOME_DIR)
ユーザーの作業用ディレクトリを指定する
オプション-m(--create-home)
ホームディレクトリを作成する
オプション-k(--skel SKEL_DIR)
ディレクトリを決まった形で作成する
オプション-M(--no-create-home)
ホームディレクトリを作成しない
オプション-e(オプション--expiredate EXPIRE_DATE)
ユーザーの有効期限を指定する
オプション-f(オプション--inactive INACTIVE)
パスワードの有効期限が切れた後のユーザーのアカウントの有効期限を指定する
オプション-p(--password PASSWORD)
暗号化したパスワードを指定する。
オプション-s(--shell SHELL)
ログインシェルを指定する。
詳細を説明する。
-Dオプション(--defaultsオプション):useradd のデフォルト設定を表示または変更を行う
-Dオプションは、useraddコマンドの初期設定での動作内容の確認と設定ができる
現在の初期設定は、-Dオプションで見ることができる。
$ useradd -D
現在のuseraddコマンドの動作の初期設定内容が表示された。
-Dオプションにあわせて、これから説明するオプションを設定することで、その設定を初期設定とすることができる。
例えば、初期設定の所属する主グループを500とする場合は、次のコマンドだ。
$ useradd -D -g 500
初期設定でユーザーが500番のグループ番号(GID)に所属する設定とした。
確認してみよう。
$ useradd -D
GROUPが500となり、初期設定でユーザーが500番のグループ番号(GID)に所属する設定となっている。
useraddはケースによってはユーザー追加時の設定がまちまちなため、混乱しないためにもオプションを確認し、必要に応じて明示的に設定するとよいだろう。
-cオプション(--comment COMMENTオプション):コメントを追加する
/etc/passwdファイルに記録されるユーザー一覧表に記録するユーザーごとのコメントを指定する。
コメントは空白など特殊文字が含まれる場合は、"で囲む。
書式は次の通りだ。
$ useradd -c コメント ユーザー名
ユーザーHanakoを「Designer」というコメントを設定して追加する場合は次のコマンドだ。
$ useradd -c Designer Hanako
ユーザーHanakoが「Designer」というコメントが付いて追加された。
設定されたか/etc/passwdファイルを確認してみよう。
$ grep Hanako /etc/passwd
ユーザーHanakoが「Designer」というコメントが付いて設定されている。
-Nオプション(--no-user-groupオプション):グループを新規作成しない
groupaddコマンドは、指定をしなければ、ユーザー名と同じグループ名を新規作成して、作成したユーザーをそのグループに属するように設定する。
-Nオプションは、グループ名を新規に作成しない。
-gオプションが指定されない場合は、-Dオプションで確認できる初期設定の内容に従ったグループに属する。
書式は次の通りだ。
$ useradd -N ユーザー名
グループを追加せず、ユーザーSaraを追加するには次のコマンドだ。
$ useradd -N Sara
ユーザーSaraがグループを追加されずに追加された。
どのように設定されたか/etc/passwdファイルを確認してみよう。
$ grep Sara /etc/passwd
ユーザーSaraが初期設定で指定されたグループ番号(GID)500番として追加されている。
-gオプション(--gid GROUPオプション):主グループまたはグループ番号(GID)を指定する
主グループを任意のグループに設定する。
書式は次のとおりだ。
$ useradd -g グループ名またはグループ番号(GID) ユーザー名
ユーザーBeckの主所属グループを「TeamZ」として登録しながら追加する場合は、次のコマンドだ。
$ useradd -g TeamZ Beck
ユーザーBeckが指定されたグループTeamZとして追加された。
どのように設定されたかidコマンドで確認してみよう。
$ id Beck
ユーザーBeckが初期設定で指定されたグループTeamZとして追加されている。
-Gオプション(--groups GROUPSオプション):補助グループを指定する
補助グループをカンマ区切りのリストで指定するオプションだ。
補助グループは、一つのユーザーに複数登録してよい。
複数登録する場合は「,」で区切る。
書式は次のとおりだ。
$ useradd -G グループ名またはグループ番号(GID) ユーザー名
ユーザーMisaの副所属グループを「Jim」とグループ番号(GID)が「1050」の2つとして登録しながら追加する場合は、次のコマンドだ。
$ useradd -G Jim,1050 Misa
ユーザーMisaがグループJimとグループ番号(GID)1050の2つを副グループとして追加された。
どのように設定されたかidコマンドで確認してみよう。
$ id Misa
ユーザーMisaがグループJimとグループ番号(GID)1050の2つを副グループとして追加されている。
-u オプション(--uid UIDオプション):ユーザー番号を指定する
指定をしなければユーザーの番号は、存在するものと重複しない番号が自動で採番され割りあてられる。
-uオプションはユーザー番号(UID)を指定することができる。
書式は次のとおりだ。
$ useradd -u ユーザー番号(UID) ユーザー名
ユーザーSandersをユーザー番号(UID)2024番で登録するには次のコマンドだ。
$ useradd -u 2024 Sanders
ユーザーSandersがユーザー番号(UID)2024番で登録された。
どのように設定されたかidコマンドで確認してみよう。
$ id Sanders
ユーザーSandersがユーザー番号(UID)2024番で登録されている。
-mオプション(--create-homeオプション):ホームディレクトリを作成する
何も設定せずにユーザーを追加すると、作業用のディレクトリは特に作成せす、-Dオプションで見ることができる設定内容のディレクトリが作業ディレクトリとして設定される。
-mオプションを付与することで、ユーザー名と同名のディレクトリが作成される。
書式は次のとおりだ。
$ useradd -m ユーザー名
ユーザーKenを作業用のディレクトリを作成しながら追加するのは次のコマンドだ。
$ useradd -m Ken
ユーザーKenが作業用ディレクトリKenを作成しながら追加された。
-kオプション(--skel SKEL_DIRオプション):ディレクトリを決まった形で作成する
-mオプションで、作成されたディレクトリを、ひな形のディレクトリからコピーして作成する。
例えば、あらかじめ雛形の作業日報やツールへのリンク集、各種マニュアルなど共通のものを一つのディレクトリに格納しておく。
そのディレクトリをひな形として指定することで新たなユーザーを登録したと同時に共通のドキュメントが配布されるという使い方をすれば効率的だ。
書式は次のとおり必ず-mオプションに追加する形だ。
$ useradd -m -k ひな形ディレクトリ ユーザー名
/home/Templateをひな形ディレクトリとして必要なファイルやディレクトリを格納しておき、それをひな形として作成しながら、ユーザーEmilyを追加するには次のコマンドだ。
$ useradd -m -k /home/Template Emily
/home/Templateをひな形ディレクトリとして作成しながら、ユーザーEmilyが追加された。
-Mオプション(--no-create-homeオプション):ホームディレクトリを作成しない
作業用のディレクトリを明示的に作成しない。
書式は次のとおりだ。
$ useradd -M ユーザー名
ユーザーDeanを作業用ディレクトリは作成せずに登録する場合は次のコマンドだ。
$ useradd -M Dean
ユーザーDeanが作業用ディレクトリを作成せずに登録された。
-eオプション(--expiredate EXPIRE_DATEオプション):ユーザーの有効期限を指定する
ユーザーを期限付きで指定できる。
有効期限は4桁の西暦の年-2桁の月-2桁の日の形式で指定する。
有効期限の切れた場合、有効期限が切れただけでユーザーは存在し続け、ホームディレクトリも存在しているので、管理者がusermodコマンドの-eオプションで有効期限を再設定することで再利用できる。
書式は次のとおりだ。
$ useradd -e 日付 ユーザー名
ユーザーAnthyを2020年8月23日までの有効期限で登録する場合は次のコマンドだ。
$ useradd -e 2020-08-23 Anthy
ユーザーAnthyが2020年8月23日までの有効期限で登録された。
-fオプション(--inactive INACTIVEオプション):パスワードの有効期限が切れた後のユーザーのアカウントの有効期限を指定する
パスワードの有効期限が切れた後、ユーザーのアカウントが利用できなくまでの期間を日数で指定する。
chageコマンドでユーザーに指定されたパスワード有効期限が切れた後、アカウントが利用できなくなるまでの有効期限を日数で設定する。
有効期限の切れた場合、有効期限が切れただけでユーザーは存在し続け、ホームディレクトリも存在しているので、管理者がusermodコマンドの-eオプションで有効期限を再設定することで再利用できる。
その場合、パスワードの有効期限は解除されている。
書式は次のとおりだ。
$ useradd -f 日数 ユーザー名
ユーザーMarkをパスワードの有効期限が切れた後、10日間過ぎてから無効にする設定で登録する場合は次のコマンドだ。
$ useradd -f 10 Mark
ユーザーMarkがパスワードの有効期限が切れた後、10日間過ぎてから無効にする設定で登録された。
-pオプション(--password PASSWORDオプション):暗号化したパスワードを指定する
useraddをオプションなしで実行すると、ユーザーは作成されるが、useraddコマンドを実行した直後は、そのユーザーはパスワードが設定できておらず、事実上、ユーザーはログインできない。
-pオプションはパスワードを設定できる。
しかし、入力するパスワードはcrypt関数で暗号化されたものが必要なので、設定は困難だ。
useraddコマンドを実行し、ユーザーにパスワードを設定するには、useraddコマンド実行後にpasswdコマンドでパスワードを設定した方が簡単で一般的だ。
参考までに、オプションの使い方を紹介する。
-pオプションを使った場合の書式は次のとおりだ。
$ useradd -p 暗号化後パスワード ユーザー名
ユーザーKeithを暗号化パスワード「21as」で登録する場合は次のコマンドだ。
$ useradd -p 21as Keith
ユーザーKeithが暗号化パスワード「21as」で登録された。
実際のcrypt関数で暗号化された文字列は、もっと長いので入力時は慎重に行わなければならない。
-sオプション(--shell SHELLオプション):ログインシェルを指定する
ログインシェルを指定する。
書式は次のとおりだ。
$ useradd -s ログインシェル ユーザー名
ユーザーPatrickをログインシェル「/bin/sh」で登録する場合は次のコマンドだ。
$ useradd -s /bin/sh Patrick
ユーザーPatrickがログインシェル「/bin/sh」で登録された。
useradd関連コマンド
最後にuseraddコマンドに関連して、基本的なグループ関連、及びアクセス権限関連のコマンドも紹介しておく
usermodコマンド
ユーザーの設定を変更する。
userdelコマンド
ユーザーを削除する。
groupaddコマンド
グループを追加する。
groupmodコマンド
グループの設定を変更する。
groupdelコマンド
グループを削除する。
chownコマンド
ディレクトリやファイルの所有者を変更する。
chgrpコマンド
ディレクトリやファイルにアクセスできるグループを変更する。
chmodコマンド
ディレクトリやファイルのアクセス権を変更する。
passwdコマンド
ユーザーのパスワードを設定、変更する。
idコマンド
登録しているユーザーのユーザー番号(UID)、主所属グループ、副所属グループを確認する。
まとめ
今回は、useraddコマンドを使ったLinuxを利用するユーザーの追加の方法を解説した。
ユーザーの追加はLinux管理者としては、常時発生、メンテナンスを行う作業だ。
ぜひ理解し、活用して欲しい。
-Nオプション(--user-groupオプション):グループを新規作成しない
の部分について拝見させていただき、表記間違えだと思いましたので、コメントさせていただきます。
誤:--user-group
正:--no-user-group
Linux初心者なので、私の認識違いでしたら、申し訳ございません。
ご愛読いただきありがとうございます。
Nオプションはご指摘の通り--no-user-groupで記述ミスとなります。
ご指摘いただきありがとうございました。
引き続き、ご愛読のほど、よろしくお願いいたします。