テキストコンソールにはユーザーログインを待つgettyプログラムがあります。 "login:"とメッセージを表示します。init環境で動作し、gettyが ユーザーをシステムにログインさせたら「login」プログラムを実行します。 このloginプログラムはユーザー環境をセットしシェルを実行します。
ログインプログラムは/usr/include/paths.h
にパスを定義しています。
この「ログインパス」はrootユーザーと他のユーザーでは違いがあります。
一般ユーザー用(_PATH_DEFPATH
):
/usr/local/bin:/usr/bin:/bin:.
root用(_PATH_DEFPATH_ROOT
):
/sbin:/bin:/usr/sbin:/usr/bin
一般ユーザーのパスはsbinディレクトリを含んでいません。しかしカレント
ディレクトリ(.)を含んでいます。カレントディレクトリはrootユーザー
では危険です。rootユーザーにおいては/usr/local/bin
にもパスを
通していません。
ログインパスはシェル初期化によって上書きされることがあります。しかし
ユーザーシェルとして/etc/passwd
に他のプログラムを指定する
ことも可能です。例えば特殊ユーザー名でログインした時PPPを開始する
以下のような行を使っています。このケースではpppdがログインパス
として正しく書かれています。
etu-ppp:viYabVlxPwzDl:1000:1000:Esa Turtiainen, PPP:/:/usr/sbin/pppd