GNU/Linux >> Linux の 問題 >  >> Linux

Linux でのユーザーおよびグループ管理の初心者向けガイド

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 を使用します パラメータとして次のいずれかを指定したオプション:descryptbigcryptmd5sha256 、または sha512 、その後に –update が続きます オプション。たとえば、アルゴリズムを MD5 に変更するには:

# authconfig --passalgo=md5 --update
CentOS / RHEL :chage を使用したユーザーのパスワード エージングの管理 (実践的な例を含む)
/etc/login.defs ファイルについて


Linux
  1. 初心者向けのLinuxターミナルガイド

  2. 初心者と専門家のための10のLinuxコマンドチュートリアル

  3. Linuxユーザーグループを管理する

  1. Linuxでユーザーをグループに追加する方法

  2. Linuxでユーザーグループを作成および削除する方法

  3. UNIX / Linux でユーザーとグループのディスク クォータを設定する 5 つの手順

  1. Linuxでユーザーをグループに追加する方法

  2. Linux でファイルとディレクトリのアクセス許可/所有権を管理する方法

  3. Linux でユーザー/グループの UID と GID を (正しく) 変更する方法