login はログイン名(ユーザ名)を引数として agetty により起動されます。設定ファイルは、/etc/login.def です。
root:x:0:0::/root:/bin/bash nobody:x:99:99:nobody:/: tomoaki:x:100:100:Tomoaki Nishiguchi:/home/tomoaki:/bin/bash |
起動された login は、まず /etc/passwd を読み込みます。このファイルには、ユーザ名、パスワード、ユーザ ID、プライマリグループ ID、ユーザのフルネーム、ホームディレクトリ、ログインシェルが記載されています。パスワードフィールドが x となっている場合は、シャドウパスワードの利用を示します。
root::9804:0::::: nobody:*:9797:0::::: tomoaki:::::::: |
シャドウパスワードを利用している場合は、次に /etc/shadow を読み込みます。このファイルの第一フィールドにはユーザ名、第二フィールドには暗号化されたパスワードが記載されています。この例では、root と tomoaki にはパスワードが設定されていないことになります。また、パスワードフィールドの先頭文字が "*" あるいは "!" であれば、そのユーザのログインは許可されません。この例では、nobody のログインは許可されません。
パスワードが設定されている場合は、パスワードプロンプトを表示し、パスワードの入力を待ちます。
Password: |
パスワード確認後、ログイン名が root であれば /etc/securetty を調べます。
# This file defines which devices root can log in on. # These are the ttys on the physical console: console tty1 tty2 tty3 tty4 tty5 tty6 |
このファイルに列記されていないデバイスからの root ログインは許可されません。
問題がなければ、カレントディレクトリをホームディレクトリに変更し、環境変数の設定を行います。デフォルトで設定される環境変数は表 1 の通りです。
環境変数名 | 値(ユーザ名 tomoaki) |
---|---|
HOME | /home/tomoaki |
SHELL | /bin/bash |
PATH | /usr/local/bin:/bin:/usr/bin |
USER | tomoaki |
LOGNAME | tomoaki |
/var/spool/mail/tomoaki |
環境変数設定後、ホームディレクトリ内のハッシュファイル .hushlogin の存在を確かめます。また、同時に環境変数 HUSHLOGIN の設定も行われます。ハッシュファイルが存在しなければ、/etc/motd の内容を表示します。ハッシュファイルが存在する場合は、ここでログインシェルを起動します。
Linux 2.4.18. |
/var/log/lastlog を読み込み、最後にログインされた日時などを表示します。
Last login: Thu Sep 19 17:41:23 +0900 2002 on tty1. |
メールボックスのパスを環境変数 MAIL から所得し、メールボックスの状態を表示します。
No mail. |
そして、最後にログインシェルを起動します。
login はログインシェルを起動する際に、fork-and-exec ではなく exec のみを用います。
参考文献
前へ | 起動プロセス入門 | 次へ |