4.3. コマンドラインツールの使用
表4.1 ユーザーとグループを管理するためのコマンドラインユーティリティー
| ユーティリティー | 詳細 |
|---|---|
id | ユーザーおよびグループの ID を表示します。 |
useradd, usermod, userdel | ユーザーアカウントを追加、修正、削除する標準ユーティリティーです。 |
groupadd, groupmod, groupdel | グループを追加、修正、削除する標準ユーティリティーです。 |
gpasswd | newgrp コマンドで使用する /etc/gshadow ファイル内のグループパスワードの修正に使用するユーティリティー。 |
pwck, grpck | パスワード、グループ、関連シャドウファイルを検証するユーティリティーです。 |
pwconv, pwunconv | 通常のパスワードをシャドウパスワードに変換する、または逆にシャドウパスワードから通常のパスワードに変換するユーティリティーです。 |
grpconv、grpunconv | pwconv、pwunconv と同様、このユーティリティーは、グループアカウントのシャドウ化された情報を変換するのに使用できます。 |
4.3.1. 新規ユーザーの追加
root としてシェルプロンプトに以下を入力します。
useradd [options] usernameuseradd コマンドはロックされたユーザーアカウントを作成します。アカウントのロックを解除するには、root として以下のコマンドを実行し、パスワードを割り当てます。
passwd username表4.2 一般的な useradd コマンドラインオプション
| オプション | |
|---|---|
-c 'comment' | comment はどのような文字列でも使用できます。このオプションは、通常、ユーザーの氏名を指定するのに使用されます。 |
-d home_directory | デフォルトの /home/username/ の代わりに使用するホームディレクトリーです。 |
-e date | YYYY-MM-DD の形式でアカウントを無効にする日付です。 |
-f days | パスワードが失効してからアカウントが無効になるまでの日数です。0 を指定すると、パスワードが失効した直後にアカウントが無効になります。-1 を指定すると、パスワードが失効してもアカウントは無効になりません。 |
-g group_name | ユーザーのデフォルト (プライマリー) グループ用のグループ名またはグループ番号です。グループはここで指定するよりも前に作成されている必要があります。 |
-G group_list | ユーザーがメンバーとなる追加 (補助、デフォルト以外) のグループ名またはグループ番号の一覧で、コンマで区切ります。グループはここで指定するよりも前に作成されている必要があります。 |
-m | ホームディレクトリーがない場合は、これを作成します。 |
-M | ホームディレクトリーを作成しません。 |
-N | ユーザー用のユーザープライベートグループを作成しません。 |
-p password | crypt で暗号化されたパスワードです。 |
-r | UID が 1000 未満でホームディレクトリーがないシステムアカウントを作成します。 |
-s | ユーザーのログインシェルです。デフォルトでは /bin/bash に設定されています。 |
-u uid | ユーザーのユーザー ID です。一意の番号で 999 より大きい数でなければなりません。 |
重要
/etc/login.defs ファイルで変更できます。
プロセスの説明
useradd juan コマンドを実行したときに発生する内容を解説したものです。
/etc/passwdにjuanの新しい行が作成されます。juan:x:1001:1001::/home/juan:/bin/bash
この行には以下の特徴があります。- ユーザー名
juanで始まっています。 - パスワードフィールドは
xとなっており、システムがシャドウパスワードを使用していることを示しています。 - 999 より大きい数字の UID が作成されます。Red Hat Enterprise Linux 7 では、1000 未満の UID はシステム使用のために確保されています。これらはユーザーに割り当てないことをお勧めします。
- 999 より大きい GID が作成されます。Red Hat Enterprise Linux 7 では、1000 未満の GID はシステム使用のために確保されています。これらはユーザーに割り当てないことをお勧めします。
- オプションの GECOS 情報は空白のままです。GECOS フィールドは、氏名や電話番号などユーザーの追加情報を提供するために使用されます。
juanのホームディレクトリーは/home/juan/に設定されています。- デフォルトのシェルは
/bin/bashに設定されています。
juan用の新しい行が/etc/shadowに作成されます。juan:!!:14798:0:99999:7:::
この行には以下の特徴があります。- ユーザー名
juanで始まっています。 - 2 つの感嘆符 (
!!) が/etc/shadowファイルのパスワードフィールドに表示され、これがアカウントをロックします。注記
-pフラグを使用して暗号化されたパスワードを渡している場合は、/etc/shadowファイル内のユーザー用の新しい行に置かれます。 - パスワードは有効期限なしで設定されています。
juanというグループ用の新しい行が/etc/groupに作成されます。juan:x:1001:
ユーザーと同じ名前のグループは、ユーザープライベートグループ と呼ばれます。ユーザープライベートグループの詳細は 「ユーザープライベートグループ」 を参照してください。/etc/groupに作成された行には、以下の特徴があります。- グループ名
juanで始まります。 - パスワードフィールドに
xが表示され、システムがシャドウグループパスワードを使用していることを示しています。 - GID は、
/etc/passwd内のjuanの プライマリーグループに対する GID と一致します。
juanというグループ用の新しい行が/etc/gshadowに作成されます。juan:!::
この行には以下の特徴があります。- グループ名
juanで始まります。 - 1 つの感嘆符 (
!) が/etc/gshadowファイルのパスワードフィールドに表示され、これがグループをロックします。 - その他のフィールドはすべて空白です。
/homeディレクトリーに、ユーザーjuan用のディレクトリーが 作成されます。~]#
ls -ld /home/juandrwx------. 4 juan juan 4096 Mar 3 18:23 /home/juanこのディレクトリーは、ユーザーjuanとグループjuanが所有しています。ユーザーjuanに のみ 読み取り、書き込み および 実行 の権限が与えられています。その他のパーミッションはすべて拒否されます。/etc/skel/ディレクトリー内のファイル (デフォルトのユーザー設定を含む) が、新しい/home/juan/ディレクトリーにコピーされます。~]#
ls -la /home/juantotal 28 drwx------. 4 juan juan 4096 Mar 3 18:23 . drwxr-xr-x. 5 root root 4096 Mar 3 18:23 .. -rw-r--r--. 1 juan juan 18 Jun 22 2010 .bash_logout -rw-r--r--. 1 juan juan 176 Jun 22 2010 .bash_profile -rw-r--r--. 1 juan juan 124 Jun 22 2010 .bashrc drwxr-xr-x. 4 juan juan 4096 Nov 23 15:09 .mozilla
juan と呼ばれるロックされたアカウントがシステムに存在します。これをアクティブ化するには、管理者が passwd コマンドを使用してアカウントにパスワードを割り当てる必要があります。オプションでパスワードエージングのガイドラインを設定することもできます (詳細は 『Red Hat Enterprise Linux 7 セキュリティーガイド』 の 「パスワードセキュリティー」 を参照)。
4.3.2. 新規グループの追加
root としてシェルプロンプトで以下を実行します。
groupadd [options] group_name表4.3 一般的な groupadd コマンドラインオプション
| オプション | 詳細 |
|---|---|
-f, --force | -g gid と併用します。gid がすでに存在している場合は、groupadd がグループ用に別の一意の gid を選択します。 |
-g gid | グループのグループ ID です。一意の番号で 999 より大きい数でなければなりません。 |
-K, --key key=value | /etc/login.defs のデフォルトを上書きします。 |
-o, --non-unique | GID が重複するグループの作成を許可します。 |
-p, --password password | 新規グループ用にこの暗号化されたパスワードを使用します。 |
-r | GID が 1000 未満のシステムグループを作成します。 |
4.3.3. 既存グループへの既存ユーザーの追加
usermod ユーティリティーを使用して、既存のユーザーを既存のグループに追加します。
usermod の様々なオプションは、ユーザーのプライマリーグループと補助グループに様々な影響を与えます。
root として以下のコマンドを実行します。
~]# usermod -g group_name user_nameroot として以下のコマンドを実行します。
~]# usermod -G group_name1,group_name2,... user_nameroot として以下のコマンドのいずれかを実行します。
~]# usermod -aG group_name1,group_name2,... user_name~]# usermod --append -G group_name1,group_name2,... user_name4.3.4. グループディレクトリーの作成
/opt/myproject/ ディレクトリーのファイルを作業する必要があるとします。グループの中にはこのディレクトリーのコンテンツの修正を信頼して任せられる人もいますが、全員ではありません。
rootとしてシェルプロンプトで以下を入力して、/opt/myproject/ディレクトリーを作成します。mkdir /opt/myproject- システムに
myprojectグループを追加します。groupadd myproject /opt/myproject/ディレクトリーのコンテンツとmyprojectグループを関連付けます。chown root:myproject /opt/myproject- グループのユーザーがディレクトリー内にファイルを作成し、setgid ビットを設定できるようにします。
chmod 2775 /opt/myprojectこの時点で、ユーザーが新規ファイルの書き込みをする度に管理者はファイルのパーミッションを変更する必要なく、myprojectグループの全メンバーは/opt/myproject/ディレクトリー内のファイルを作成および編集できます。パーミッションが正しく設定されていることを確認するには、以下のコマンドを実行します。~]#
ls -ld /opt/myprojectdrwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject - ユーザーを
myprojectグループに追加します。usermod -aG myproject username
4.3.5. umask を使用した新しいファイルのデフォルト権限の設定
-rw-rw-r-- など、特定のデフォルト権限を持ちます。こうした初期権限は、ファイル権限マスク または umask とも呼ばれる ファイルモード作成マスク で部分的に定義されています。たとえば、デフォルトで bash は umask 0022 を持つなど、すべてのプロセスにそれぞれの umask があります。umask プロセスは変更できます。
umask を構成するもの
0137 の場合、その数字は次のような意味になります。
0= 意味なし、必ず0になります (umask は特別なビットに影響しません)1= オーナーの権限、実行ビットが設定されます3= グループの権限、実行および書き込みビットが設定されます7= 他の人の権限、実行、書き込み、読み取りビットが設定されます
0137 はシンボリック表示では u=rw-,g=r--,o=--- となります。シンボリック表示は 8 進法表示と反対で、禁止権限ではなく許可された権限を示します。
umask の仕組み
- umask にビットを設定すると、ファイルの設定は解除されます。
- umask にビットが設定されていないと、他の要素にもよりますが、ファイルで設定できます。
0137 が新しいファイルの作成にどのように影響するのかを示しています。

図4.3 ファイルの作成時に umask を適用
重要
0000 であっても、新しいレギュラーファイルは実行権限を持ちません。ただし、ディレクトリーは実行権限を持つ状態で作成できます。
[john@server tmp]$ umask 0000 [john@server tmp]$ touch file [john@server tmp]$ mkdir directory [john@server tmp]$ ls -lh . total 0 drwxrwxrwx. 2 john john 40 Nov 2 13:17 directory -rw-rw-rw-. 1 john john 0 Nov 2 13:17 file
4.3.5.1. シェルでの umask の管理
bash、ksh, zsh、tcsh などの一般的なシェルでは、umask シェル ビルトイン を使用して umask を管理します。シェルから開始するプロセスは umask を継承します。
現在のマスクの表示
~]$ umask
0022~]$ umask -S
u=rwx,g=rx,o=rxumask を使用したシェルでのマスク設定
~]$ umask octal_mask0 から 7 の 4 桁以下の数字に置き換えます。3 桁以下の場合、コマンドに最初に 0 を含んでいるものとして権限が設定されます。たとえば、umask 7 は 0007 に変換されます。
例4.1 8 進法を使用した umask の設定
~]$ umask 0337~]$ umask 337~]$ umask -S symbolic_mask例4.2 シンボリック表示を使用した umask の設定
0337 に設定するには、以下のコマンドを実行します。
~]$ umask -S u=r,g=r,o=デフォルトシェル umask での作業
bash の場合、そのファイルは /etc/bashrc です。デフォルトの bash umask を表示するには、以下を実行します。
~]$ grep -i -B 1 umask /etc/bashrcumask コマンドまたは UMASK 変数のいずれかを使用して設定されていることが示されます。以下の例では、umask は umask コマンドを使用して 022 に設定されています。
~]$ grep -i -B 1 umask /etc/bashrc
# By default, we want umask to get set. This sets it for non-login shell.
--
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022bash のデフォルトの umask を変更するには、/etc/bashrc で umask コマンドコールまたは UMASK 変数割り当てを変更します。この例では、デフォルトの umask を 0227 に変更しています。
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 227特定ユーザーのデフォルトシェル umask での作業
bash umask は /etc/bashrc で定義されたものになっています。
bash umask を変更するには、そのユーザーの $HOME/.bashrc ファイルの umask コマンドにコールを追加します。たとえば、ユーザー john の bash umask を 0227 に変更します。
john@server ~]$ echo 'umask 227' >> /home/john/.bashrc新しく作成されたホームディレクトリのデフォルト権限設定
/etc/login.defs ファイルで UMASK 変数を変更します。
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.