私たちは皆、Linuxでの‘useradd‘や‘adduser‘という最も人気のあるコマンドを知っています。時には、Linuxシステム管理者が特定のプロパティ、制限、またはコメントを持つユーザーアカウントをLinuxで作成するよう求められることがあります。
Linuxでは、‘useradd‘コマンドは、Linuxや他のUnix互換オペレーティングシステムでユーザーアカウントを追加または作成するための低レベルのユーティリティです。‘adduser‘コマンドは‘useradd‘コマンドと非常によく似ており、それは単にそれへのシンボリックリンクです。
一部のLinuxディストリビューションでは、‘useradd‘コマンドにはわずかに異なるバージョンがあるかもしれません。Linuxで新しいユーザーアカウントを作成する際に私たちの指示を使用する前に、ドキュメントを読むことをお勧めします。
Linuxターミナルで‘useradd‘コマンドを実行すると、次の主要なタスクが実行されます:
- 新しく作成されたユーザーアカウントのために/etc/passwd、/etc/shadow、/etc/group,、および/etc/gshadowファイルを編集します。
- 新しいユーザーのためのホームディレクトリを作成し、プルーフする。
- ホームディレクトリへのアクセス許可と所有権を設定します。
ユーザーアド命令の構文
‘useradd‘コマンドの基本的な構文は次の通りです。
useradd [options] username
この記事では、Linuxで最も一般的に使用される15個の’useradd‘コマンドを実用的な例を交えて紹介します。
1. Linuxで新しいユーザーを追加する方法
新しいユーザーを追加または作成するには、’useradd‘または’adduser‘コマンドを使用し、その後に’username‘を指定します。’username‘は、ユーザーがシステムにログインするために使用するログイン名です。
一度に1人のユーザーしか追加できず、ユーザー名は一意であり、システム上に既に存在してはなりません。
たとえば、’tecmint’という名前の新しいユーザーを追加するには、次のコマンドを使用します。
useradd tecmint
Linuxで新しいユーザーを’useradd‘コマンドで追加すると、ロックされた状態で作成されます。そのユーザーアカウントをアンロックするには、’passwd‘コマンドを使用してそのアカウントのパスワードを設定する必要があります。
passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

新しいユーザーが作成されると、そのエントリーが自動的に’/etc/passwd‘ファイルに追加されます。このファイルはユーザーの情報を格納するために使用され、エントリーは次のようになります。
tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash

上記のエントリーには、それぞれ独自の意味を持つ7つのコロンで区切られたフィールドが含まれています。
これらのフィールドが何であるか見てみましょう。
- Username – ユーザーログイン名はシステムにログインするために使用されます。1文字から32文字までの長さでなければなりません。
- パスワード – ユーザーパスワード(または
'x'
文字)は、暗号化された形式で‘/etc/shadow‘ファイルに保存されます。 - ユーザーID(UID) – すべてのユーザーはユーザーID(UID)、すなわちユーザー識別番号を持たなければなりません。デフォルトでは、UID 0はルートユーザー用に予約されており、1から99までのUIDは他の事前定義されたアカウント用に予約されています。さらに、100から999までのUIDはシステムアカウントとグループ用に予約されています。
- グループID(GID) – プライマリグループID(GID)、すなわちグループ識別番号は、‘/etc/group‘ファイルに保存されます。
- ユーザー情報 – このフィールドはオプションであり、ユーザーに関する追加情報、例えばユーザーのフルネームを定義するために使用できます。この情報はfingerコマンドを使用して入力できます。
- ホームディレクトリ – ユーザーのホームディレクトリの絶対的な場所。
- シェル – ユーザーのシェルの絶対的な場所、例えば/bin/bash。
2. 異なるホームディレクトリでユーザーを作成する方法
デフォルトでは、‘useradd‘コマンドはユーザーのホームディレクトリを‘/home‘ディレクトリのユーザーネームの下に作成します。例えば、上記のように、ユーザー‘tecmint‘のデフォルトのホームディレクトリは‘/home/tecmint‘です。
ただし、この動作は、新しいホームディレクトリの場所とともに '-d'
オプションを使用して変更できます(例:/data/projects)。たとえば、次のコマンドは、ホームディレクトリが ‘/data/projects‘ に設定されたユーザ ‘anusha‘ を作成します。
# useradd -d /data/projects anusha # passwd anusha
ユーザのホームディレクトリやユーザ ID、グループ ID、シェル、コメントなど、他のユーザ関連情報を以下の cat コマンド を使用して表示できます。
cat /etc/passwd | grep anusha anusha:x:1001:1001::/data/projects:/bin/bash

3. 特定のユーザ ID を持つユーザの作成方法
Linux では、各ユーザに固有の UID(一意の識別番号)があります。Linux で新しいユーザアカウントを作成すると、デフォルトでユーザ ID が 500、501、502 などが割り当てられます。
ただし、'-u'
オプションを使用してカスタムユーザ ID を持つユーザを作成することができます。たとえば、次のコマンドは、カスタムユーザ ID ‘1002‘ を持つユーザ ‘navin‘ を作成します。
useradd -u 1002 navin
さて、定義されたユーザ ID(1002)で作成されたユーザを以下のコマンドを使用して確認しましょう。
cat /etc/passwd | grep navin navin:x:1002:1002::/home/navin:/bin/bash

注意: ユーザ ID の値は、システム上で既に作成されている他のユーザと重複しないようにする必要があります。
4. 特定のグループ ID を持つユーザの作成方法
GID(グループ識別子)を持つユーザが各々存在します。また、'-g'
オプションを使用して特定のグループIDを持つユーザを作成することもできます。
この例では、'-u'
オプションと'-g'
オプションを使用して、特定のUIDとGIDを持つユーザ ‘tarunika‘ を同時に追加します。
useradd -u 1005 -g tecmint tarunika
次に、’/etc/passwd‘ファイルで割り当てられたユーザIDとグループIDを確認します。
cat /etc/passwd | grep tarunika tarunika:x:1005:1000::/home/tarunika:/bin/bash
ユーザのGIDを確認するには、idコマンドを使用します。
id -gn tarunika

5. 複数のグループへのユーザの追加方法
'-G'
オプションを使用してユーザを追加すると、追加のグループにユーザが追加されます。各グループ名はコンマで区切られ、間にスペースは入りません。
この例では、ユーザ ‘tecmint‘ を複数のグループ(admins、webadmin、developersなど)に追加しています。
groupadd admins groupadd webadmin groupadd developers usermod -a -G admins,webadmin,developers tecmint useradd -G admins,webadmin,developers paddy
次に、idコマンドを使用して複数のグループがユーザに割り当てられていることを確認します。
id tecmint uid=1000(tecmint) gid=1000(tecmint) groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. ホームディレクトリを持たないユーザの追加方法
特定の状況では、セキュリティ上の理由からユーザにホームディレクトリを割り当てたくない場合があります。そのような場合、ユーザがシステムにログインした際のホームディレクトリはルートになります。ユーザが ‘su’ コマンドを使用すると、前のユーザのホームディレクトリがログインディレクトリとなります。
ユーザーをホームディレクトリなしで作成するには、'-M'
オプションを使用します。たとえば、次のコマンドは、ホームディレクトリなしでユーザー ‘shilpi’ を作成します。
useradd -M shilpi
さて、ls
コマンドを使用して、ユーザーがホームディレクトリなしで作成されたことを確認しましょう。
ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory

7. Linuxで有効期限付きユーザーを作成する方法
デフォルトでは、useradd
コマンドを使用してユーザーを追加すると、ユーザーアカウントは期限切れになりません。つまり、有効期限が 0(つまり期限切れにならない)に設定されます。
ただし、'-e'
オプションを使用して有効期限を設定できます。このオプションは、YYYY-MM-DD形式で指定する必要があります。これは、特定の期間の一時的なアカウントを作成するのに役立ちます。
この例では、2021年8月27日の有効期限付きアカウント ‘aparna’ を、YYYY-MM-DD形式で作成します。
useradd -e 2021-08-27 aparna
次に、アカウントの有効期限日を設定した後に、ユーザー ‘aparna’ のアカウントとパスワードのエイジング情報を確認します。chage
コマンドを使用してください。
chage -l aparna Last password change : Jun 25, 2021 Password expires : never Password inactive : never Account expires : Aug 27, 2021 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

8. パスワード有効期限付きユーザーの作成方法
'-f'
引数は、パスワードの有効期限が切れた後の日数を定義するために使用されます。値が0の場合、パスワードが期限切れになるとユーザーアカウントが無効になります。デフォルトでは、パスワードの有効期限の値は-1
に設定されており、決して期限切れになりません。
この例では、'-e'
と'-f'
オプションを使用して、ユーザー‘mansi’のアカウントパスワードの有効期限を45日に設定します。
useradd -e 2014-04-27 -f 45 mansi

9. Linuxでコメント付きのユーザーを追加する方法
'-c'
オプションを使用すると、ユーザーのフルネーム、電話番号などのカスタムコメントを‘/etc/passwd’ファイルに追加できます。コメントは、スペースなしの単一行として追加できます。
例えば、次のコマンドはユーザー‘mansi’を追加し、そのユーザーのフルネーム、Manis Khurana、をコメントフィールドに挿入します。
useradd -c "Manis Khurana" mansi
コメントが挿入されたことを‘/etc/passwd’ファイルのコメントセクションで、tailコマンドを使用して表示できます。
tail -1 /etc/passwd mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh

10. Linuxでユーザーログインシェルを作成する方法
時々、ログインシェルとは関係のないユーザーを追加したり、時にはユーザーに異なるシェルを割り当てる必要があります。‘-s’オプションを使用して、各ユーザーに異なるログインシェルを割り当てることができます。
ここでは、ログインシェルなしでユーザー ‘tecmint‘ を追加します。’/sbin/nologin‘ シェルで。
useradd -s /sbin/nologin tecmint
ユーザーに割り当てられたシェルを ‘ /etc/passwd ‘ ファイルで確認できます。
tail -1 /etc/passwd tecmint:x:1011:1014::/home/tecmint:/sbin/nologin

11. 指定されたホーム、シェル、およびコメントでユーザーを作成する方法
次のコマンドは、ユーザー ‘ravi‘ を作成し、ホームディレクトリを ‘/var/www/tecmint‘ に、デフォルトシェルを /bin/bash に、ユーザーに関する追加情報を指定します。
useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

上記のコマンドでは、オプション '-m'
と '-d'
は指定されたホームディレクトリを持つユーザーを作成し、'-s'
オプションはユーザーのデフォルトシェルを /bin/bash に設定します。 '-c'
オプションはユーザーに関する追加情報を追加し、 '-U'
引数はユーザーと同じ名前のグループを作成/追加します。
12. ホーム、シェル、コメント、UID/GID を定義してユーザーを作成する方法
このコマンドは、上記のものと非常に似ていますが、ここではシェルを ‘/bin/zsh‘ と定義し、ユーザー ‘tarunika’ のカスタムUIDおよびGIDを設定します。 '-u'
オプションは新しいユーザーのUID(つまり、100)を定義し、 '-g'
オプションはGID(つまり、1000)を定義します。
useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika

13. ホーム、シェルなし、コメント、およびUID を指定してユーザーを作成する方法
次のコマンドは、上記の2つのコマンドと非常に似ています。唯一の違いは、ここでは、カスタムユーザーID(つまり、1019)を持つユーザー ‘avishek‘ のログインシェルを無効にしたことです。
'-s'
オプションはデフォルトのシェルを /bin/bash に設定しますが、この場合、ログインシェルを ‘/usr/sbin/nologin‘ に設定しました。つまり、ユーザー ‘avishek‘ はシステムにログインできなくなります。
useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek

14. 指定されたホーム、シェル、スケルトン、およびUIDでユーザーを作成する方法
このコマンドの唯一の変更点は、デフォルトの /etc/skel の代わりにカスタムスケルトンディレクトリを /etc/custom.skell に設定するために '-k'
オプションを使用したことです。また、ユーザー ‘navin‘ に異なるシェル、/bin/tcsh を定義するために '-s'
オプションを使用しました。
useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin

15. ホーム、シェル、またはグループなしで、コメント付きユーザーを作成する方法
次のコマンドは、上記で説明した他のコマンドとは非常に異なります。ここでは、'-M'
オプションを使用してユーザーのホームディレクトリを持たないユーザーを作成し、'-N'
オプションはシステムにユーザー名のみを作成するよう指示します。 '-r'
オプションはシステムユーザーを作成します。
useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton

‘useradd’ に関する詳細な情報とオプションについては、ターミナルで ‘useradd’ コマンドを実行して利用可能なオプションを確認してください。
useradd