
ここでは, 端末からのログインを可能にするために必要な FreeBSD 側の設定について解説します. 既に端末を接続するポートが利用できるように kernel の設定をおこない, 端末が接続されているものと考えて, 解説を進め ます.
簡単に言えば, プロセス管理や初期化をおこなっている init プロセス
に対して, ログイン名を読み込み login プログラムを起動している 
getty を実行するように指示します. 
これをおこなうには,  /etc/ttys の内容を編集する必要があります. 
まず,  su コマンドで root になって,  /etc/ttys に以下の
変更を加えてください. 
/dev のエントリが含ま
れている行がまだ存在しなければ, これを /etc/ttys に追加してく
ださい. 
/usr/libexec/getty が対象となるポートに対して
実行されるように指定してください. また,  /etc/gettytab ファイ
ル内の適切な getty タイプのエントリを指定してください. 
init に /etc/ttys を読み込みなおさせてく
ださい. また, 必要に応じて /etc/gettytab を変更し, 上の 2で使用する
getty のエントリを追加してください. このドキュメントではこの方
法については特に解説しませんので,  gettytab(5) および getty(8) のマニュ
アルをご覧ください. 
以下では, 上のステップについて詳しく解説します. 実例を用いて, 何をす べきかを解説していきます. Wyse-50 と, 古い IBM の 286 マシン上で通信 ソフト Procomm を使って VT-100 エミュレーションをおこなっているものを端 末の例として紹介します. また, Wyse は 2番目のポートに, 286マシンは 6 番目のポート (マルチポートのシリアルカード上のポート) に接続します.
/etc/ttys について, より詳しくは, ttys(5) のマニュアルをご覧
ください. 
/etc/ttys へのエントリの追加既にエントリがある場合を除いて, まず初めに 
/etc/ttys にエントリを追加しなければいけません. 
/etc/ttys には, FreeBSDシステム上のログインを許可するすべての
ポートを記述します. たとえば, 一つ目の仮想コンソール ttyv0 のエン
トリもこのファイルにあります. このエントリのおかげで, コンソールからの
ログインが可能になっています. このファイルには, 他の仮想コンソール, シ
リアルポートおよび仮想端末のエントリも含まれています. 端末を接続する
場合は, そのポートの /dev のエントリを,  /dev の部分
を省略して記述します. 
FreeBSD のインストール当初の状態では,  ttyd0 から ttyd3 までの, 
初めの四つのシリアルポートのエントリが /etc/ttys に記述され
ています. これらのポートのいずれかに端末を接続する場合は, 新たなエント
リを追加する必要はありません.
ここで紹介している例では, 既にファイルにエントリが存在する 2番目のシリ
アルポート, ttyd0 に Wyse-50 を接続しています. 一方,  6番目のシ
リアルポートに接続する 286マシン用のエントリは, 新たに追加してやらな
ければなりません. 以下に, エントリを追加した後の /etc/ttys か
ら抜粋して示します. 
ttyd1   "/usr/libexec/getty std.9600"   unknown off secure
ttyd5   
getty タイプの指定次に, 端末からのログインを処理するプログラムの指定をおこな
います. FreeBSDでは, 標準的には /usr/libexec/getty をこの目的
で利用しています. login: プロンプトを送り出しているのは, このプロ
グラムです. 
getty プログラムは, コマンドラインパラメータとして,  
getty タイプ をとります. ただし, このパラメータは必須ではあ
りません. getty タイプは, ボーレートやパリティといった, 接続され
た端末の特徴を表すものです.  getty プログラムは, 与えられた 
getty タイプに対応したこれらの特徴を /etc/gettytab から
読み込みます. 
ファイル /etc/gettytab には, 新旧の端末に関する多数のエントリ
が記述されています. ほとんどの場合,  std という文字列で始まる名前
のエントリを使えば, 接続された端末に対してログインセッションを提供す
ることができます. これらのエントリを利用した場合, パリティは無視されま
す. 110 bps から 115200 bps までのボーレートに対応した std のエン
トリがあります. 当然, 新たなエントリを追加することも可能です.  
gettytab(5) のマニュアルに, さらに詳しく解説されています. 
/etc/ttys の getty タイプの設定をする際は, 端末側の通信
パラメータの設定が,  getty タイプのものと一致していることを確認し
てください. 
紹介している実例では,  Wyse50 はパリティなし 38400 bps で接続していま
す. また,  286 マシンの方は, パリティなし 19200 bps の接続です. 以下は, 
この段階でのこの二つの端末に関する /etc/ttys の設定です. 
ttyd1   "/usr/libexec/getty std.38400"   unknown off secure
ttyd5   "/usr/libexec/getty std.19200"
getty のタイプの指定が, つぎのフィールドとして判断されてしまう可
能性があるので, 十分注意することが必要です. 
/etc/ttys の 3番目のフィールドには, そのポートのター
ミナルタイプのデフォルトを指定します. ダイアルアップ用のポートの場合
は, ユーザがどのタイプの端末あるいは通信ソフトを利用してダイアルアップ
してくるかは分からないので,  unknown や dialup を記述するの
が一般的です. 一方, 直結された端末の場合, ターミナルタイプが変わるこ
とはありませんから, このフィールドには実際のターミナルタイプを記述し
ます. 
一般に, ユーザは .login や .profile などのファイル内で 
tset コマンドを使って, ターミナルタイプをチェックし, 必要ならば
ターミナルタイプの入力を求めるプロンプトを表示するようにします. この
とき,  /etc/ttys の中でターミナルタイプが指定されていれば, 
このプロンプトを表示せずに先に進むことが可能です. 
FreeBSD 上で, どのターミナルタイプを利用できるかは,  
/usr/share/misc/termcap をご覧ください. このファイルには, お
よそ 600 のターミナルタイプが定義されています. 必要ならば, 新たなエン
トリを追加することも可能です. 詳しくは termcap(5) のマニュアルをご覧く
ださい. 
紹介している例では,  Wyse-50 のターミナルタイプは Wyse-50 です (もっ
とも他のタイプをエミュレートすることも可能ですが, ここでは Wyse-50 モー
ドで使用します. ). また,  286マシン上では Procomm が VT-100 エミュレー
ションをおこなうように設定されています. 以下が, まだ未完成の 
/etc/ttys の関連部分です. 
ttyd1   "/usr/libexec/getty std.38400"   wy50  off secure
ttyd5   "/usr/libexec/getty std.19200"	 vt100
/etc/ttys のつぎのフィールド, つまり 4番目のフィー
ルドは, そのポートをアクティブにするかどうかの設定です. このフィールド
に ``on'' を指定すると,  init プロセスが2番目のフィールドに書かれ
たプログラム,  getty を実行し, ログインのためのプロンプトを送り出
すようになります. このフィールドに ``off'' を記述すると,  getty 
は起動されず, よってこのポートからのログインもできなくなります. 
ということで, 当然このフィールドには on を指定します. 以下が 
/etc/ttys です. それぞれのポートを on にしました. 
ttyd1   "/usr/libexec/getty std.38400"   wy50  on secure
ttyd5   "/usr/libexec/getty std.19200"	 vt100 on
とうとう最後のフィールドの設定です.  (実際にはここでは触れ
ませんが, オプショナルなwindow の設定のフィールドも存在するので, 
ほぼ最後のフィールドといった方が正確かもしれません. ) 最後のフィールド
では, そのポートが安全かどうかを指定します. 
ここで, 「安全」なポートとはどういうポートのことでしょう?
これは, root のアカウント (または, ユーザ ID が 0 のアカウント) がロ グインしてもよいポートということです. 安全でないポートでは, root のロ グインは許可されません.
では, どのように安全なポートとそうでないポートを使えばよいでしょう?
ポートを安全ではないとすることで, そのポートに接続された端末からは, 
root のログインを禁止することができます. FreeBSDシステムの root のパス
ワードを知っている人は, まず一般ユーザとしてログインしなければなりませ
ん. スーパユーザの特権を得るためには, そのうえで su コマンドを
利用しなければいけません. 
これによって,  root アカウントが不正に利用された場合に, その経過を調査
する上で二つの記録を利用できるようになります. ユーザのログインと 
su コマンドは, 共にシステムのログに記録を残します (また, ログイン
は wtmp にも記録を残します. ). 
ポートを安全なものとして指定すると, その端末からの root のログインが可
能になります. root のパスワードを知っている人は, 単に root としてログ
インできます. この場合は, 当然ログインの記録や su コマンドのログ
は残りません. 
では, どちらを使うべきでしょうか?
単純に ``insecure'' を使うのがよいでしょう. 公共の場所にある訳ではな
い端末や, 鍵のかかったドアの内側にある端末にも ``insecure'' を指
定する方がよいでしょう. スーパユーザの特権が必要な場合でも, ログイ
ンして su を実行するのは, ごく簡単なことなんですから. 
以下に, ようやく完成した /etc/ttys のエントリに端末の場所を表
すコメントを追加したものを示します. 
ttyd1   "/usr/libexec/getty std.38400"   wy50  on insecure # Kitchen
ttyd5   "/usr/libexec/getty std.19200"	 vt100 on insecure # Guest bathroom
init にファイル /etc/ttys の再読み込みをさせる
FreeBSD をブートすると, 最初に起動されるプロセス, initが 
/etc/ttys を読み込んで, 記述されているプログラムを利用可能な
ポートに対して実行し, ログインプロンプトを送り出させます. 
/etc/ttys の編集が終わった後, init に変更を認識させるた
めに, わざわざ FreeBSD をブートしなおしたくはないでしょう. このような
場合のために,  init は,  SIGHUP (hangup) シグナルを受信すると,  
/etc/ttys を読み込みなおすようになっています. 
/etc/ttys の変更を保存したら, 以下のようなコマンドを実行して,  
init に対して SIGHUP を送信します. 
kill -HUP 1
init プロセスのプロセス ID は 常に 1です. )
すべての設定が正しくおこなわれ, すべてのケーブルがただしく接続されてい て, かつ端末の電源が入っていれば, 端末にはログインプロンプトが表示され ているはずです. これで, これらの端末からの最初のログインの準備が完了で す!
 www@freebsd.org
  www@freebsd.org