Linux の各ユーザーには一意のユーザー ID (UID) があります。 )、通常の整数、および関連付けられたユーザー名です。ユーザーは自分のユーザー名を使用してログインしますが、システムは関連する UID を使用します。各ユーザー アカウントには、ホーム ディレクトリとログイン シェルもあります。ユーザーがログインすると、ホーム ディレクトリに配置され、ログイン シェルが実行されます。このユーザー アカウント情報はすべて /etc/passwd に保存されます ファイル。
各ユーザーは、1 つ以上のグループにも属しています。異なるユーザーを同じグループに割り当てることができます。グループにアクセス権を付与すると、グループのすべてのメンバーに同じアクセス権が付与されます。 Linux の各グループ アカウントには一意のグループ ID (GID) があります。 ) および関連するグループ名。グループ情報は /etc/group に保存されます ファイル。
RedHat Linux は ユーザー プライベート グループ (UPG) スキーム を使用します .新しいユーザー アカウントが追加されると、新しいユーザー プライベート グループも作成されます。ユーザーの非公開グループはユーザーと同じ名前で、新しいユーザーはこのグループの唯一のメンバーです。
ユーザーとグループの両方がシャドウ パスワードを使用します。パスワードはハッシュされ、別のファイル /etc/shadow に保存されます ユーザーおよび /etc/gshadow 用 グループ用。ハッシュ化されたパスワードを「シャドウ」ファイルに保存することでセキュリティが向上します。これらのファイルは root ユーザーのみが読み取ることができるためです。シャドウ パスワードを使用すると、パスワード エージング パラメータも提供され、/etc/login.defs ファイルを使用してセキュリティ ポリシーを適用できます。ユーザー アカウントとグループ アカウントを追加、変更、または削除できるのは root ユーザーだけです。
ユーザーとグループの構成ファイル
/etc/passwd
新しいユーザーが追加されると、その情報はコロンで区切られた 1 行として /etc/passwd に保存されます。以下は、このファイルのエントリの例です:
# tail -1 /etc/passwd test:x:1001:1001:test user:/home/test:/bin/bash
以下は、このエントリについて説明しています:
フィールド | 説明 |
---|---|
テスト | ユーザー名 |
x | シャドウ パスワードが使用されていることを示します |
1001 | UID。これらは 1000 から始まり、新しく追加されたユーザーごとに 1 ずつ増加します。 1000 未満の UID はシステム用に予約されています。 |
1001 | ユーザーのプライマリ グループの GID。これらは 1000 から始まり、新しいグループごとに 1 ずつ増加します。ユーザーは複数のグループに所属できます。 |
テスト ユーザー | GECOS (General Electric Comprehensive Operating System) 情報。氏名などの情報提供のみを目的として使用されます |
/home/test | このユーザーのホーム ディレクトリ |
/bin/bash | このユーザーのデフォルト シェル |
/etc/shadow
シャドウ パスワードを使用すると、新しいユーザーが作成されると、新しいエントリが /etc/shadow に自動的に追加されます。このファイルは root のみが閲覧できます。以下は、このファイルのエントリの例です:
# tail -1 /etc/shadow test:$6$XBCDBQ...:17610:0:99999:7:::
以下は、このエントリについて説明しています:
フィールド | 説明 |
---|---|
テスト | ユーザー名 |
$6$XBCDBQ… | ハッシュされたパスワード値 (部分的な値が表示されます)。プレーン テキストのパスワード自体はディスクに保存されません。アルゴリズムは、パスワードから一意の文字列を作成します。 |
17610 | パスワードが変更されてからの日数 (1970 年 1 月 1 日からの日数)。 |
0 | ユーザーによるパスワードの変更が必要になるまでの日数。 |
99999 | パスワードが変更されてからパスワードを使用できる最大日数。この日数が経過したら、ユーザーはパスワードを変更する必要があります。 |
7 | 保留中のパスワード変更ポリシーについてユーザーに警告する有効期限の前の日数。この日数が経過してもパスワードが変更されない場合、ユーザー アカウントはロックされます。 |
次のフィールドは空ですが、アカウントがロックされた最後の日付を格納するために使用されます (1970 年 1 月 1 日からの日数でカウントされます)。最後のフィールドも空ですが、使用されていません。
/etc/group
Oracle Linux は UPG スキームを使用するため、新しいユーザーが追加されると、新しいエントリが /etc/group に自動的に作成されます。グループ名はユーザー名と同じです。以下は、このファイルのエントリの例です:
# tail -1 /etc/group test:x:1000:test
以下は、このエントリについて説明しています:
フィールド | 説明 |
---|---|
テスト | グループ名 |
x | シャドウ パスワードが使用されていることを示します |
1000 | GID |
テスト | グループのメンバーであるユーザーのリスト |
各グループには複数のユーザーを含めることができます。ユーザーは複数のグループに所属することもできます。 /etc/passwd のユーザーのエントリに格納されている GID は、ユーザーのプライマリ グループです。
/etc/gshadow
ハッシュ化されたグループ パスワードは、このファイルに保存されます。ただし、グループ パスワードはめったに使用されません。以下は、このファイルのエントリの例です:
# tail -1 /etc/gshadow test:!!::test
以下は、このエントリについて説明しています:
フィールド | 説明 |
---|---|
テスト | グループ名 |
x | ハッシュ化されたパスワード。 !アカウントがロックされていることを示します。 |
オラクル | グループのメンバーであるユーザーのリスト |
最後の 2 つのフィールドは、管理者とメンバーを指定するために使用されます。
ユーザー アカウントの追加
ユーザー追加
useradd コマンドを使用して、ユーザー アカウントを追加します。構文は次のとおりです。
# useradd [options] user_name
オプションなしで新しいユーザーを作成すると、デフォルト設定が適用されます。例:
# useradd john # tail -1 /etc/passwd john:x:501:501::/home/john:/bin/bash
また、デフォルトでは、useradd はロックされたユーザー アカウントを作成します。アカウントのロックを解除してパスワードを割り当てるには、root として passwd user_name コマンドを実行します。例:
# passwd john
passwd user_name コマンドは、新しいパスワードを求めるプロンプトを出します。パスワードの複雑さによっては、パスワードが正しくない (短すぎる、または単純すぎる) という通知が表示される場合があります。同じパスワードを再入力して続行し、ユーザー アカウントのロックを解除します。同じ passwd コマンドを使用して、パスワードを変更します。 root ユーザーはいつでもユーザーのパスワードを変更できます。ユーザーは最初に現在のパスワードを入力するよう求められます。
デフォルト設定
-D オプションを使用すると、新しいユーザーのデフォルト設定を表示および変更できます。例:
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
非アクティブ ディレクティブは、パスワードの有効期限が切れてからアカウントがロックされるまでの日数を設定します。値を 0 にすると、パスワードの有効期限が切れるとすぐにアカウントがロックされます。 -1 の値は機能を無効にします。 SKEL の内容 (/etc/skel ユーザー アカウントの作成時に、新しいユーザーのホーム ディレクトリにコピーされます。デフォルト設定は /etc/default/useradd に保存されます .以下のオプションを –D と共に使用すると、useradd コマンドのデフォルトが変更されます:
- -b default_home :新しいユーザーのホーム ディレクトリの初期パス プレフィックス
- -e default_expire_date :ユーザー アカウントが無効になった日付
- -f default_inactive :パスワードの有効期限が切れてからアカウントがロックされるまでの日数
- -g default_group :新しいユーザーの最初のグループのグループ名または ID
- -s default_shell :新しいユーザーのログイン シェル
たとえば、新しいユーザーのログイン シェルを Bourne シェルに変更するには、次のように入力します。
# useradd –D –s /bin/sh user_name
useradd オプション
デフォルト設定をオーバーライドするために、useradd コマンドでいくつかのオプションを使用できます。以下は、より一般的に使用されるオプションの一部です:
- -c コメント :新しいユーザーのフルネームなどの GECOS 情報
- -d home_dir :新しいユーザーのホーム ディレクトリの初期パス プレフィックス
- -e expire_date :ユーザー アカウントが無効になった日付 (YYYY-MM-DD 形式)
- -g initial_group :ユーザーの最初のログイン グループのグループ名または番号。グループ名は存在している必要があります。グループ番号は、既存のグループを参照する必要があります。
- -G グループ :ユーザーがメンバーでもあるセカンダリ グループのリスト。各グループはコンマで区切られ、間に空白はありません。
- -p パスワード :新しいユーザーのパスワードを設定します。
- -s シェル :ユーザーのログイン シェルの名前
たとえば、「john」という新しいユーザー名を作成し、そのユーザー名を含め、ログイン シェルを C シェルに変更するには、次のように入力します。
# useradd –c "John Smith" –s /bin/csh john
nologin シェル
新しいユーザー アカウントを追加すると、そのユーザーにはデフォルトでシェル アクセスが許可されます。たとえば、SMTP、FTP などのサービスを実行したり、Web サーバーを実行したりする目的で、nologin シェルを使用してユーザー アカウントを作成できます。ログイン シェルを持たないユーザーはシステムにログインできないため、システム上で対話的にコマンドを実行することはできません。ただし、プロセスはそのユーザーとして実行できます。
nologin シェルを使用したユーザーとしてのログインは丁重に拒否され、アカウントが使用できないというメッセージが表示されます。ファイル /etc/nologin.txt nologin は、デフォルトのメッセージではなく、ファイルの内容を表示します。 nologin ユーザーを作成するには、まず /etc/shells に nologin が存在することを確認します ファイル:
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash
シェル アクセスのない test という名前の新しいユーザーを追加するには:
# useradd -s /sbin/nologin test
ユーザー テストとしてログインしようとすると、次のように表示されます:
# su – test This account is currently not available.
ユーザー アカウントの変更または削除
ユーザーモード
usermod コマンドを使用して、既存のユーザー アカウントを変更します。構文は次のとおりです。
# usermod [options] user_name
usermod コマンドの最も一般的な用途の 1 つは、ユーザーを別の (2 次) グループに追加することです。 –a を使用します と –G options の後に、ユーザーを追加するセカンダリ グループのコンマ区切りのリストが続きます。次の例は、ユーザーを変更してセカンダリ グループに追加する前後の /etc/group の内容を示しています。
# grep 1017 /etc/group students:x:1017:
# usermod –aG 1017 mary # grep 1017 /etc/group students:x:1017:mary
ユーザーデル
userdel コマンドを使用して、ユーザー アカウントを削除します。例:
# userdel john
グループ アカウントの管理
groupadd
groupadd コマンドを使用して、グループ アカウントを追加します。構文は次のとおりです。
# groupadd [options] group_name
グループモッド
groupmod コマンドを使用して、グループ アカウントを変更します。構文は次のとおりです。
# groupmod [options] group_name
グループデル
groupdel コマンドを使用して、グループ アカウントを削除します。構文は次のとおりです。
# groupdel group_name
グループにメンバーがいる場合でも、グループを削除できます。既存のユーザーのプライマリ グループを削除することはできません。グループを削除する前に、ユーザーを削除する必要があります。
gpasswd
gpasswd コマンドを使用して、/etc/group および /etc/gshadow を管理します。すべてのグループは、管理者、メンバー、およびパスワードを持つことができます。構文は次のとおりです:
# gpasswd [options] group_name
グループ
groups コマンドは、ユーザーが属するグループを表示します。次の例は、ユーザー oracle が oracle (プライマリ グループ) と students (セカンダリ グループ) の 2 つのグループに属していることを示しています。
$ grep oracle /etc/passwd oracle:x:1000:1000:Oracle Student:/home/oracle/bin/bash
$ grep oracle /etc/group oracle:x:1000: students:x:1056:student1,student2,oracle
groups コマンド (oracle としてログオン) は、これらのグループ メンバーシップを確認します。
$ whoami oracle $ groups oracle students
新しいグループ
newgrp コマンドは新しいシェルを実行し、ユーザーの実際のグループ ID を変更します。次の例は、コマンドの実行前と実行後のグループ ID を示しています。また、新しいシェルが実行されることも示しています。
$ id uid=1000(oracle) gid=1000(oracle) groups=1000(oracle),1066(students)...
gid は 1000 (oracle) に等しいことに注意してください。
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20411 pts/0 00:00:00 ps
$ newgrp students
$ id uid=1000(oracle) gid=1066(students) groups=1000(oracle),1066(students)...
gid が 1066 (学生) になっていることに注意してください。また、新しいシェルが実行されたことにも注意してください:
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20464 pts/0 00:00:00 bash 20486 pts/0 00:00:00 ps
newgrp コマンドはグループ ID 番号を認識せず、実際のグループ名は自分がメンバーになっているグループにしか変更できません。引数なしでコマンドを実行すると、実際のグループ ID がユーザーのプライマリ グループに設定されます。
パスワード設定
パスワード エージングでは、ユーザーはパスワードを定期的に変更する必要があります。 change コマンドを使用して、パスワードの有効期限を構成します。構文は次のとおりです:
# chage [options] user_name
chage コマンドの後にユーザー名を入力して、既存のパスワード エージング値を表示し、変更します。たとえば、ユーザー john の値を表示および変更するには、(ユーザー root として) 次のように入力します。
# chage john Changing the aging information for john Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2018-03-24]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
パスワード エージング情報は、/etc/shadow ファイルに保存されます。変更を加える前にユーザー john のエントリを表示するには:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:0:99999:7:::
パスワードの有効期間の最小値を 14 に変更し、パスワードの有効期間の最大値を 30 に変更すると、ユーザーは 14 日間で 30 日間パスワードを変更する必要があることを意味します。新しいエントリは次のように表示されます:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:14:30:7:::
この情報に基づいて、ユーザーはパスワードの有効期限が切れる 7 日前にパスワードを変更するように警告されます。 INACTIVE ディレクティブは、パスワードの有効期限が切れてからユーザー アカウントがロックされるまでの非アクティブな日数を設定するために使用されます。 INACTIVE を -1 に設定すると、この機能が無効になります。
オプションを変更
chage コマンドには、いくつかのオプションが用意されています。エージング情報を一覧表示するには:
# chage -l john Last password change : Mar 24, 2018 Password expires : never Password inactive : never Account expires : never 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
ユーザーに新しいパスワードをすぐに設定するように強制するには (強制的にすぐに期限切れにする)、最後のパスワード変更値を 0 に設定します。例:
# chage –d 0 john
ログイン後、ユーザーはパスワードを変更するよう求められます。
authconfig
Linux ユーザー パスワードのハッシュ アルゴリズムも構成可能です。 authconfig コマンドを使用して、現在使用されているアルゴリズムを判別するか、別のアルゴリズムに設定します。現在のアルゴリズムを決定するには:
# authconfig --test | grep hashing password hashing algorithm is sha512
アルゴリズムを変更するには、–passalgo を使用します パラメータとして次のいずれかを指定したオプション:descrypt 、bigcrypt 、md5 、sha256 、または sha512 、その後に –update が続きます オプション。たとえば、アルゴリズムを MD5 に変更するには:
# authconfig --passalgo=md5 --updateCentOS / RHEL :chage を使用したユーザーのパスワード エージングの管理 (実践的な例を含む)
/etc/login.defs ファイルについて