linux passwdファイル解析

4822 ワード

#cat/etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:Systemdaemons:/etc:
bin:x:2:2:Ownerofsystemcommands:/bin:
sys:x:3:3:Ownerofsystemfiles:/usr/sys:
adm:x:4:4:Systemaccounting:/usr/adm:
uucp:x:5:5:UUCPadministrator:/usr/lib/uucp:
auth:x:7:21:Authenticationadministrator:/tcb/files/auth:
cron:x:9:16:Crondaemon:/usr/spool/cron:
listen:x:37:4:Networkdaemon:/usr/net/nls:
lp:x:71:18:Printeradministrator:/usr/spool/lp:
sam:x:200:50:Samsan:/usr/sam:/bin/sh

上記の例から、/etc/passwdの1行のレコードは1人のユーザーに対応し、各行のレコードはまた7つのフィールドにコロン(:)で区切られ、そのフォーマットと具体的な意味は以下の通りである.
   :  :     :    :     :   :  Shell

(1)登録名(login_nAME):異なるユーザを区別する.同じシステムに登録されている名前は唯一です.多くのシステムでは、このフィールドは8文字(アルファベットまたは数字)の長さに制限されています.また、通常、Linuxシステムではアルファベットの大文字と小文字に敏感であることに注意してください.これはMSDOS/Windowsとは違います.
(2)パスワード(passwd):システムはパスワードでユーザーの合法性を検証する.スーパーユーザーrootまたは一部の上級ユーザーは、システムコマンドpasswdを使用してシステム内のすべてのユーザーのパスワードを変更できます.一般ユーザーは、システムにログインした後にpasswdコマンドを使用して自分のパスワードを変更することもできます.
現在のUnix/Linuxシステムでは、パスワードはpasswdファイルに直接保存されません.通常、passwdファイルのパスワードフィールドは、個人パスワードを含むデータを保存するために/etc/shadowを本物のパスワードファイルとして使用する代わりに、「x」を使用します.もちろんshadowファイルは一般ユーザーに読み込めないので、スーパーユーザーだけが読み取る権利があります.
また、passwdフィールドの最初の文字が「*」であれば、そのアカウントが閉鎖されたことを示し、システムはそのアカウントを持っているユーザーのログインを許可しないことに注意してください.
(3)ユーザ識別番号(UID):UIDは数値であり、Linuxシステムにおける唯一のユーザ識別であり、異なるユーザを区別するために用いられる.UIDフィールドは、システム内部の管理プロセスやファイル保護に使用します.Linuxシステムでは、登録名とUIDはユーザーを識別するために使用することができるが、システムにとってUIDはより重要である.ユーザーにとって登録名の使用は便利です.いくつかの特定の目的の下で、システムには、異なる登録名を有するが、UIDが同じユーザが複数存在することができ、実際には、これらの異なる登録名を使用するユーザは、実際には同じユーザである.
(4)グループ識別番号(GID):現在のユーザーのデフォルトのワークグループ識別です.同様の属性を持つ複数のユーザは、同じグループに割り当てることができ、各グループには独自のグループ名があり、独自のグループ識別番号で区別される.UIDのように,ユーザのグループ識別番号もpasswdファイルに格納する.現代のUnix/Linuxでは、各ユーザが同時に複数のグループに属することができる.passwdファイルに帰属する基本グループを指定する以外に、/etc/groupファイルにグループに含まれるユーザーを指定します.
(5)ユーザ名(uSER_name):ユーザの実名、オフィスアドレス、連絡先電話など、ユーザに関する情報を含む.Linuxシステムでは,mailやfingerなどのプログラムがこれらの情報を利用してシステムのユーザを識別する.
(6)ユーザホーム(home_directory):このフィールドは個人ユーザのホームディレクトリを定義し、ユーザがログインすると、彼のShellはそのディレクトリをユーザの作業ディレクトリとする.Unix/Linuxシステムでは、スーパーユーザーrootの作業ディレクトリは/rootです.他のパーソナルユーザーは/homeディレクトリの下に独自の作業環境があり、システムはこのディレクトリの下で各ユーザーに独自のホームディレクトリを構成しています.個人ユーザーのファイルはそれぞれの
メインディレクトリの下.
(7)コマンド解釈プログラム(Shell):Shellはユーザがシステムにログインしたときに実行するプログラム名であり、通常はShellプログラムのフルパス名である.
例えば/bin/bash.
拡張:
ユーザーがログインした後、ユーザーの操作をカーネルに渡すプロセスを開始します.このプロセスは、ユーザーがシステムにログインした後に実行するコマンド解釈器または特定のプログラム、Shellです.ShellはユーザとLinuxシステムとの間のインタフェースである.LinuxのShellにはいろいろな種類があり、それぞれに特徴があります.よく使われるのは、sh(BourneShell)、csh(CShell)、ksh(KornShell)、tcsh(TENEX/TOPS-20 typeCShell)、bash(BourneAgainShell)などです.システム管理者は、システムの状況とユーザーの習慣に基づいて、ユーザーにシェルを指定できます.Shellを指定しない場合、システムはshをデフォルトのログインShellとして使用します.すなわち、このフィールドの値は/bin/shです.ユーザーのログインShellは、特定のプログラムとして指定することもできます(このプログラムはコマンドインタプリタではありません).この特徴を利用して、ユーザーが指定したアプリケーションしか実行できないことを制限することができ、そのアプリケーションの実行が終了すると、ユーザーは自動的にシステムを終了します.一部のLinuxシステムでは、システムに登録されているプログラムだけがこのフィールドに表示されることが要求されています.
Linux/etc/passwdファイルでもレコードを占有しているが、ログインShellが空であるため、システムには偽のユーザー(psuedousers)と呼ばれるユーザーがいます.それらの存在は主にシステム管理を便利にし、対応するシステムプロセスのファイル所有者に対する要求を満たすことである.一般的な偽ユーザは以下のようになります.擬似ユーザ意味bin実行可能なユーザコマンドファイルsys所有システムファイルadm所有アカウントファイルuucpUUCP使用lplpまたはlpdサブシステム使用nobodyNFS使用所有アカウントファイル上にリストされている擬似アウトドアのほか、audit、cron、mail、usenetなど多くの標準的な擬似ユーザも、それぞれ関連するプロセスとファイルに必要です.Linux/etc/passwdファイルはすべてのユーザーが読むことができるため、ユーザーのパスワードが簡単すぎるか、規則が明らかであれば、普通のコンピュータで簡単に解読することができるため、セキュリティに対する要求が高いLinuxシステムは暗号化されたパスワードの字を分離し、1つのファイルに単独で保存し、このファイルは/etc/shadowファイルである.ファイルの読み取り権限を持つのはスーパーユーザーのみで、ユーザーパスワードのセキュリティが保証されます.