English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux ユーザーとユーザーグループの管理

Linuxシステムは、多ユーザー多タスクの分時オペレーティングシステムであり、システムリソースを使用しようとするユーザーは、まずシステム管理者にアカウントを申請し、そのアカウントでシステムにログインする必要があります。

ユーザーのアカウントは、一方でシステム管理者がシステムを使用するユーザーを追跡し、システムリソースへのアクセスを制御するのに役立ちます;もう一方で、ユーザーがファイルを整理し、ユーザーにセキュリティ保護を提供することもできます。

各ユーザーアカウントにはユニークなユーザー名とそれぞれのパスワードがあります。

ユーザーがログイン時に正しいユーザー名とパスワードを入力すると、システムと自分のホームディレクトリにアクセスできます。

ユーザーアカウントの管理を実現するためには、以下のような作業を完了する必要があります:

  • ユーザーアカウントの追加、削除、修正

  • ユーザーパスワードの管理

  • ユーザーグループの管理

一、Linuxシステムユーザーアカウントの管理

ユーザーアカウントの管理は、主にユーザーアカウントの追加、修正、削除に関連しています。

ユーザーアカウントの追加は、システムに新しいアカウントを作成し、新しいアカウントにユーザーID、ユーザーグループ、ホームディレクトリ、ログインシェルなどのリソースを割り当てることです。新しく追加されたアカウントはロックされており、使用できません。

1ユーザーアカウントを追加するにはuseraddコマンドを使用し、以下の構文で使用します:

useradd オプション ユーザー名

パラメータの説明:

  • オプション:

    • -c comment コメントを指定します。

    • -d ディレクトリ ユーザーのメインディレクトリを指定します。このディレクトリが存在しない場合、以下のものも使用されます:-mオプションは、メインディレクトリを作成できます。

    • -g ユーザーグループ ユーザーが属するユーザーグループを指定します。

    • -G ユーザーグループ、ユーザーグループ ユーザーが属する追加グループを指定します。

    • -s シェルファイル ユーザーのログインシェルを指定します。

    • -u ユーザー番号 ユーザーのユーザー番号を指定します。もし複数の-oオプションが指定された場合、他のユーザーの識別番号を再利用できます。

  • ユーザー名:

    新しいアカウントのログイン名を指定します。

例1

# useradd –d  /home/sam -m sam

このコマンドはユーザーサムを作成しました。その中で、-dと-mオプションは、ログイン名samにメインディレクトリを作成するために使用されます。  /home/sam(/homeはデフォルトのユーザーメインディレクトリの場所の親ディレクトリです)。

例2

# useradd -s /bin/sh -g group –G adm,root gem

このコマンドはユーザーゲムを新規作成し、そのユーザーのログインシェルは /bin/sh、これはgroupユーザーグループに属し、またadmおよびrootユーザーグループに属しており、groupユーザーグループがメイングループです。

ここに新しいグループが作成される可能性があります:#groupadd groupおよびgroupadd adm

ユーザーアカウントの追加は、以下のことです:/etc/passwdファイルに新しいレコードを追加し、同時に他のシステムファイル(例えば/etc/shadow, /etc/groupなど。

Linuxでは統合されたシステム管理ツールuserconfが提供されており、ユーザーアカウントの統一管理に使用できます。

2、アカウントの削除

ユーザーアカウントが使用されていない場合、システムから削除できます。ユーザーアカウントの削除は、以下のものを指します:/etc/passwdなどのシステムファイル内のユーザーのレコードを削除し、必要に応じてユーザーのメインディレクトリも削除します。

userdelコマンドを使用して既存のユーザーアカウントを削除するには、以下の形式を使用します:

userdel オプション ユーザー名

一般的なオプションには -rは、ユーザーのメインディレクトリも削除する作用があります。

例えば:

# userdel -r sam

このコマンドはユーザーサムをシステムファイル(主に/etc/passwd, /etc/shadow, /etc/groupなどのレコードを削除し、ユーザーのメインディレクトリも削除します。

3、アカウントの変更

ユーザーアカウントの変更は、ユーザー番号、メインディレクトリ、ユーザーグループ、ログインシェルなどの関連する属性を実際の状況に応じて変更することです。

usermodコマンドを使用して既存のユーザーの情報を変更するには、以下の形式を使用します:

usermod オプション ユーザー名

一般的なオプションには-c, -d, -m, -g, -G, -s, -uおよび-oなど、これらのオプションの意味はuseraddコマンドのオプションと同じで、ユーザーに新しいリソース値を指定できます。

また、一部のシステムでは以下のオプションを使用できます:-l 新ユーザー名

このオプションは新しいアカウントを指定し、元のユーザー名を新しいユーザー名に変更します。

例えば:

# usermod -s /bin/ksh -d /home/z –g developer sam

このコマンドはユーザーsamのログインShellをkshに、ホームディレクトリを/home/z、ユーザーグループをdeveloperに変更。

4、ユーザー口令の管理

ユーザー管理の重要な内容の一つはユーザー口令の管理です。ユーザーアカウントが作成されたときは口令がなく、システムによりロックされており、使用できません。空の口令を指定することもできますが、使用する前に口令を指定する必要があります。

ユーザー口令の指定および変更を指定するShellコマンドはpasswdです。スーパーユーザーは自分自身と他のユーザーに口令を指定できますが、普通のユーザーは自分自身の口令のみを変更できます。コマンドの形式は以下の通りです:

passwd オプション ユーザー名

使用できるオプション:

  • -l パスワードをロックする、つまりアカウントを無効にする。

  • -u パスワードを解除する。

  • -d アカウントにパスワードを無効にする。

  • -f 强制ユーザーが次回ログイン時にパスワードを変更する。

デフォルトのユーザー名の場合、現在のユーザーのパスワードを変更します。

例えば、現在のユーザーがsamの場合、以下のコマンドはそのユーザーのパスワードを変更します:

$ passwd 
旧パスワード:****** 
新しいパスワード:******* 
Re-新しいパスワードを入力してください:*******

スーパーユーザーの場合、以下の形式でどのユーザーのパスワードも指定できます:

# passwd sam 
新しいパスワード:******* 
Re-新しいパスワードを入力してください:*******

普通のユーザーが自分自身のパスワードを変更する場合、passwdコマンドはまず元のパスワードを尋ね、確認後、ユーザーに新しいパスワードを2度入力させることで、一致する場合にそのパスワードをユーザーに指定します;一方、スーパーユーザーがユーザーにパスワードを指定する場合、元のパスワードを知る必要はありません。

システムのセキュリティのために、ユーザーは複雑なパスワードを選択するべきです。例えば、最好に以下の使用8長さのパスワードは、大文字、小文字、数字を含み、名前、誕生日などと異なるべきです。

ユーザーに空のパスワードを指定する場合、以下の形式のコマンドを実行します:

# passwd -d sam

このコマンドはユーザーsamのパスワードを削除し、その結果、ユーザーsamが次回ログインしたときに、システムはそのユーザーにログインを許可しません。

passwdコマンドは、以下のように使用できます -l(lock)オプションは、特定のユーザーをロックし、ログインを許可しないようにします。例えば:

# passwd -l sam

二、Linuxシステムユーザーグループの管理

各ユーザーにはユーザーグループがあり、システムはユーザーグループ内のすべてのユーザーを集中管理できます。異なるLinuxシステムではユーザーグループの指定が異なります。例えば、Linuxではユーザーは同名のユーザーグループに属しており、ユーザーが作成されたときに同時にユーザーグループも作成されます。

ユーザーグループの管理は、ユーザーグループの追加、削除、および変更を含みます。グループの追加、削除、および変更は、実際には/etc/groupファイルの更新。

1、新しいユーザーグループを追加するにはgroupaddコマンドを使用します。そのフォーマットは以下の通りです:

groupadd オプション ユーザーグループ

使用できるオプションには:

  • -g GID:新しいユーザーグループのグループ識別番号(GID)を指定

  • -o 一般的には-gオプションを同時に使用すると、新しいユーザーグループのGIDはシステムで既に存在するユーザーグループのGIDと同じにすることができます。

例1:

# groupadd group1

このコマンドはシステムにgroupグループを追加します1、新しいグループのグループ識別番号は現在の最大のグループ識別番号に加算されます1。

例2:

# groupadd -g 101 group2

このコマンドはシステムにgroupグループを追加します2、新しいグループのグループ識別番号を101。

2、既存のユーザーグループを削除するにはgroupdelコマンドを使用します。そのフォーマットは以下の通りです:

groupdel ユーザーグループ

例えば:

# groupdel group1

このコマンドはシステムからgroupグループを削除します1。

3、ユーザーグループの属性を変更するにはgroupmodコマンドを使用します。その構文は以下の通りです:

groupmod オプション ユーザーグループ

一般的なオプションには:

  • -g GID:ユーザーグループに新しいグループ識別番号を指定

  • -o 与-gオプションを同時に使用すると、ユーザーグループの新しいGIDはシステムで既に存在するユーザーグループのGIDと同じにすることができます。

  • -n新しいユーザーグループ:ユーザーグループの名前を新しい名前に変更

例1:

# groupmod -g 102 group2

このコマンドはgroupグループを2のグループ識別番号を102。

例2:

# groupmod –g 10000 -n group3 group2

このコマンドはgroupグループを2の識別番号を10000、グループ名をgroupに変更3。

4、ユーザーが複数のユーザーグループに属している場合、ユーザーはユーザーグループ間で切り替えを行い、他のユーザーグループの権限を得ることができます。

ユーザーはログイン後に、コマンドnewgrpを使用して他のユーザーグループに切り替えることができます。このコマンドの引数は、目的のユーザーグループです。例えば:

$ newgrp root

このコマンドは、rootユーザーグループが本当にそのユーザーのメイングループまたは追加グループである場合に、現在のユーザーをrootユーザーグループに切り替えます。ユーザーアカウントの管理と同様に、ユーザーグループの管理も統合されたシステム管理ツールを通じて行うことができます。

三、ユーザーアカウントに関連するシステムファイル

ユーザー管理を行う方法はたくさんありますが、実際にはどの方法も関連するシステムファイルの修正です。

ユーザーやユーザーグループに関連する情報は、いくつかのシステムファイルに保存されています。これらのファイルには/etc/passwd, /etc/shadow, /etc/groupなど。

以下にそれぞれのファイルの内容を紹介します。

1、/etc/passwdファイルはユーザー管理に携わる最も重要なファイルの一つです。

Linuxシステムの各ユーザーは/etc/passwdファイルには対応するレコード行があり、そのユーザーの一部の基本的な属性を記録しています。

このファイルはすべてのユーザーに対して読み取り可能です。その内容は以下の例に似ています:

# cat /etc/passwd
root:x:0:0:スーパーユーザー:/:
daemon:x:1:1:システムデーモン:/etc:
bin:x:2:2:システムコマンドの所有者:/bin:
sys:x:3:3:システムファイルの所有者:/usr/sys:
adm:x:4:4:システムアカウント:/usr/adm:
uucp:x:5:5:UUCP管理者:/usr/lib/uucp:
auth:x:7:21:認証管理者:/tcb/files/auth:
cron:x:9:16:Cronデーモン:/usr/spool/cron:
listen:x:37:4:ネットワークデーモン:/usr/net/nls:
lp:x:71:18:プリンタ管理者:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

上の例から分かるように、/etc/passwdの一行は一つのユーザーを表しており、一行はコロン(:)で区切られています。7フィールドがあり、その形式と具体的な意味は以下の通りです:

ユーザー名:パスワード:ユーザー識別番号:グループ識別番号:説明:ホームディレクトリ:ログインシェル

1)「ユーザー名」はユーザーアカウントを表す文字列です。

通常の長さは8文字で構成されており、/、または数字で構成されることができません。ログイン名にはコロン(:)を含めることができません、なぜならコロンはここでは区切り記号です。

互換性を保つために、ログイン名にはピリオド(.)を含めず、ハイフン(-)や数字を使用しない方が良いです。-)とプラス記号(+)で始まる。

2)「パスワード」というシステムでは、暗号化されたユーザーパスワードを格納しています。

)このフィールドにはユーザーパスワードの暗号化文字列が格納されていますが、明文ではありませんが、/etc/passwdファイルはすべてのユーザーに対して読み取り可能であり、そのため依然としてセキュリティのリスクがあります。したがって、多くのLinuxシステム(例えばSVR4)すべてshadow技術を使用し、実際に暗号化されたユーザーパスワードを/etc/shadowファイルでは、/etc/passwdファイルのパスワードフィールドには特別な文字が格納されています、例えば「x」または「*”。

3)ユーザー識別番号は整数であり、システム内部でユーザーを識別するために使用されます。

一般的には、ユーザー名と一一対応しています。もし複数のユーザー名が同じユーザー識別番号を持っている場合、システム内部ではそれらを同じユーザーとみなしますが、異なるパスワード、異なるホームディレクトリ、異なるログインシェルなどが異なる場合があります。

ユーザー識別番号の取得範囲は0~65 535。0はスーパーユーザーrootの識別番号であり、1~99システムが保持し、管理アカウントとして、一般ユーザーの識別番号は100から始まる。Linuxシステムでは、この境界は500。

4)「グループ識別子」フィールドは、ユーザーが属するユーザーグループに対応しています。

それは/etc/groupファイルの一つの記録。

5)「コメントフィールド」には、ユーザーの個人情報が記録されています。

例えば、ユーザーの本名、電話番号、住所などですが、このフィールドには実際の用途はありません。異なるLinuxシステムでは、このフィールドの形式は統一されていません。多くのLinuxシステムでは、このフィールドには任意のコメント的な説明文が保存されており、fingerコマンドの出力として使用されます。

6)「メインディレクトリ」とは、ユーザーの初期作業ディレクトリのことであります。

それはユーザーがログインした後にいるディレクトリです。多くのシステムでは、各ユーザーのメインディレクトリは特定のディレクトリに統一されています。ユーザーのメインディレクトリの名前はそのユーザーのログイン名です。各ユーザーは自分のメインディレクトリに対して読み取り、書き込み、実行(検索)の権限がありますが、他のユーザーに対するこのディレクトリのアクセス権は具体的な状況に応じて設定されます。

7)ユーザーがログインした後、ユーザーの操作をカーネルに伝えるプロセスを起動する必要があります。このプロセスは、ユーザーがシステムにログインした後に実行されるコマンドエンティティーや特定のプログラム、つまりシェルです。

シェルはユーザーとLinuxシステム間のインターフェースです。Linuxのシェルには多くの種類があり、それぞれ異なる特徴があります。一般的にはsh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX C Shell)などがあります。/TOPS-20(type C Shell)、bash(Bourne Again Shell)などがあります。

システム管理者は、システム状況とユーザーの習慣に応じて、ユーザーに特定のシェルを指定できます。シェルが指定されない場合、システムはデフォルトのログインシェルとしてshを使用し、このフィールドの値は/bin/sh。

ユーザーのログインシェルも特定のプログラム(コマンドエンティティーではない)に指定することができます。

この特徴を利用して、ユーザーが指定されたアプリケーションのみを実行できるように制限することができます。そのアプリケーションが終了すると、ユーザーは自動的にシステムから退室します。一部のLinuxシステムでは、このフィールドに表示されるのはシステムに登録されたプログラムのみであることが要求されます。

8)システムには、仮ユーザー(pseudo users)と呼ばれる一種のユーザーがあります。

これらのユーザーは/etc/passwdファイルにも一条の記録がありますが、ログインはできません。なぜなら、そのログインシェルが空であるためです。その存在は主にシステム管理を便利にし、システムプロセスがファイル所有者に対する要求を満たすためにあります。

一般的な仮ユーザーは以下の通りです:

仮 ユーザ 意味 
bin 実行可能なユーザーコマンドファイルを持つ 
sys システムファイルを持つ 
adm アカウントファイルを持つ 
uucp UUCPを使用 
lp lpdサブシステムを使用 
nobody NFSを使用

アカウントファイルを持っています

1上記に記載された仮ユーザーの他にも、多くの標準的な仮ユーザーがあります。例えば、audit、cron、mail、usenetなどがあり、それらはそれぞれ関連するプロセスやファイルに必要です。

、/etc/passwdファイルはすべてのユーザーが読み取れるため、ユーザーのパスワードが非常に単純または明確な場合、一般的なコンピュータで簡単に解読される可能性があります。したがって、安全性が高いLinuxシステムでは、暗号化されたパスワード文字を分離して、別のファイルに保存することになります。このファイルは/etc/shadowファイル。 スーパーユーザーのみがファイルの読み取り権限を持つため、ユーザーパスワードの安全性が保証されます。

2、/etc/shadowのレコード行と/etc/passwdと一一対応しており、pwconvコマンドに基づいて/etc/passwdのデータが自動的に生成されます

そのファイル形式は/etc/passwdと同様に、いくつかのフィールドで構成され、フィールドは":"で区切られています。これらのフィールドは:

ログイン名:暗号化パスワード:最終変更時間:最小間隔:最大間隔:警告時間:不活動時間:有効期限:フラグ
  • "ログイン名"は/etc/passwdファイルのログイン名と一致するユーザーアカウント

  • "パスワード"フィールドは暗号化されたユーザーパスワード文字を保存し、長さが13文字。空の場合、対応するユーザーにはパスワードがなく、ログインにはパスワードが必要ではありません;{ ./0-9A-Za-z }の中の文字がある場合、対応するユーザーはログインできません。

  • "最終変更時間"は、特定の瞬間からユーザーが最後にパスワードを変更したまでの日数を示します。この時間起点は、システムによって異なります。例えば、SCO Linuxでは、この時間起点は1970年1月1日。

  • "最小間隔"はパスワードを変更する際に必要な最小日数を指します。

  • "最大間隔"はパスワードが有効に保持できる最大日数を指します。

  • "警告時間"フィールドは、システムがユーザーに警告を開始してから、ユーザーのパスワードが正式に無効になるまでの日数を示します。

  • "不活動時間"はユーザーがログイン活動がないが、アカウントが有効に保持できる最大日数を示します。

  • "有効期限"フィールドは絶対的な日数を示し、このフィールドを使用すると、そのアカウントの有効期間が提供されます。期間が満了すると、そのアカウントはもはや有効なアカウントではなく、ログインすることもできなくなります。

  • 以下に示します/etc/shadowのインスタンス:

    # cat /etc/shadow
    root:Dnakfw28zf38w:8764:0:168:7:::
    daemon:*::0:0::::
    bin:*::0:0::::
    sys:*::0:0::::
    adm:*::0:0::::
    uucp:*::0:0::::
    nuucp:*::0:0::::
    auth:*::0:0::::
    cron:*::0:0::::
    listen:*::0:0::::
    lp:*::0:0::::
    sam:EkdiSECLWPdSa:9740:0:0::::

    3ユーザーグループのすべての情報が保存されています。/etc/groupファイルに保存されています。

    ユーザーをグループにまとめることは、Linuxシステムでユーザーを管理し、アクセス権限を制御するための手段の一つです。

    各ユーザーはユーザーグループに属しており、1つのグループには複数のユーザーが属し、1つのユーザーも複数のグループに属することができます。

    ユーザーが複数のグループのメンバーである場合、/etc/passwdファイルには、ユーザーがログイン時のデフォルトグループとして所属するメイングループが記録されています。他のグループは追加グループと呼ばれます。

    ユーザーが追加グループのファイルにアクセスするには、まずnewgrpコマンドを使用してアクセスしたいグループのメンバーになる必要があります。

    ユーザーグループのすべての情報が保存されています。/etc/groupファイルと同様に、ユーザーグループのすべての情報が保存されています。/etc/passwdファイルは、冒号(:)で区切られた複数のフィールドで構成されています。これらのフィールドには:

    グループ名:パスワード:グループ識別番号:グループ内ユーザーリスト
  • "グループ名"はユーザーグループの名前で、アルファベットや数字で構成されています。以下の/etc/passwdのログイン名と同じです。グループ名は重複するべきではありません。

  • "パスワード"フィールドはユーザーグループの暗号化されたパスワードフィールドです。一般的なLinuxシステムのユーザーグループにはパスワードがなく、このフィールドは空であるか、または*。

  • "グループ識別番号"はユーザー識別番号と同様に、整数であり、システム内部でグループを識別するために使用されます。

  • "グループ内ユーザーリスト"はこのグループに属するすべてのユーザーのリストです/b],ユーザー間はカンマ(,)で区切ります。このユーザーグループはユーザーのメイングループである可能性があり、追加グループの可能性もあります。

  • /etc/groupファイルの例は以下の通りです:

    root::0:root
    bin::2:root,bin
    sys::3:root,uucp
    adm::4:root,adm
    daemon::5:root,daemon
    lp::7:root,lp
    users::20:root,sam

    4. バッチユーザーの追加

    ユーザーの追加と削除は、Linuxシステム管理者にとって非常に簡単な作業ですが、数十人、数百人、さらには数千人を追加する必要がある場合、ユーザーアドドを1つずつ使用することはできず、大量のユーザーを作成するための簡単な方法を見つける必要があります。Linuxシステムには、大量のユーザーを作成するツールが提供されており、以下のように即座に大量のユーザーを作成できます:

    (1まずテキストユーザーファイルを編集します。

    各列は以下のように/etc/passwdパスワードファイルの形式で書かれ、ユーザーのユーザー名、UID、ホストディレクトリはすべて異なるように注意してください。パスワードフィールドは空白にするかx番号を入力できます。以下はuser.txtの例です:

    user001::600:100:user:/home/user001:/bin/bash
    user002::601:100:user:/home/user002:/bin/bash
    user003::602:100:user:/home/user003:/bin/bash
    user004::603:100:user:/home/user004:/bin/bash
    user005::604:100:user:/home/user005:/bin/bash
    user006::605:100:user:/home/user006:/bin/bash

    (2root権限でコマンドを実行します /usr/sbin/newusers、ユーザーファイルuser.txtからデータをインポートしてユーザーを作成します:

    # newusers < user.txt

    その後、vipwやviを実行することができます /etc/passwd 検査 /etc/passwd ファイルにこれらのユーザーのデータが既に存在するか、ユーザーのホストディレクトリが既に作成されているか確認します。

    (3)コマンドを実行します/usr/sbin/pwunconv。

    を /etc/shadow が生成した shadow パスワードをデコードし、それを /etc/passwd から、/etc/shadowのshadowパスワードフィールドを削除します。これは、次のステップでのパスワード変換作業を簡単にするためです、すなわち、まず shadow パスワード機能を無効にします。

    # pwunconv

    (4)各ユーザーのパスワード対応ファイルを編集します。

    フォーマットは以下の通りです:

    ユーザー名:パスワード

    例のファイル passwd.txt の内容は以下の通りです:

    user001:123456
    user002:123456
    user003:123456
    user004:123456
    user005:123456
    user006:123456

    (5)root としてコマンドを実行します /usr/sbin/chpasswd。

    ユーザーパスワードを作成します。chpasswd はエンコードされたパスワードを /usr/bin/passwd コマンドでエンコードされたパスワードを書き込みます /etc/passwd のパスワードフィールド。

    # chpasswd < passwd.txt

    (6)パスワードがエンコードされ書き込まれました/etc/passwd のパスワードフィールドの後ろに書き込みます。

    コマンドを実行します /usr/sbin/pwconv はパスワードを shadow パスワードにエンコードし、結果を /etc/shadow。

    # pwconv

    これで多くのユーザーの作成が完了しました。その後、/home 下で、これらのユーザーのホストディレクトリの権限設定がすべて正しく設定されているか確認し、ユーザーのパスワードが正しいかログインで確認してください。