初めてシステムをインストールしてログインしたとき、たぶんこんな警告メッセージが出るだろう:
Warning: no Kerberos tickets issued.
最初だから、まだシステムの Kerberos は当然設定していないはずなので、もちろんチケットは得られないから、これはあたりまえだ。Kerberos は、ナマのパスワードがネットワーク上を行き来しないようにして、さらにユーザに期限をきることでセキュリティを高めるシステムだ。Kerberosの設定、あるいは設定したのにこのメッセージが出るというときには、faq10 Kerberos の設定 FAQを読もう。
この警告は無視してもまったく構わない(けど無視せずに Kerberos 使おうぜ。セキュリティが売りの OpenBSD だもん)。以下の記述は、どうしても必要不可欠な場合にだけやること
どうしてもこの警告に我慢ならず、いまもこの先も絶対にKerberosを使うつもりがないなら、完全に削除する方法は以下の通り:
簡単。[ctrl] - [alt] - [One of the function keys] とタイプして(i386では)。
仮想ターミナルの機能を持っているのは i386 アーキテクチャだけだ。Xを使っているときでも仮想ターミナルは使える。たとえば、ターミナル 1 で X を起動して、 [ctrl]-[alt]-[F2] でターミナル 2 に切り替えたら、X は一見消えたように見える。ターミナル 1 に戻してもそのままでは出てこない。このときには[ctrl]-[alt]-[F5] で X 画面が戻ってくるよ。
回復のためのステップ:
X の設定が完璧で、ちゃんと機能するはずの XF86Config を使っているなら、たぶん問題は machdep.allowaperture だろう。さらに、カーネル設定で以下のオプションがあるのを確認すること[どっちも GENERIC カーネルには入っている] :
option XSERVER option APERTURE
それから /etc/sysctl.conf を編集して machdep.allowaperture=1 とする。これで X がアパーチャドライバにアクセスできるようになる。これはインストール時に、X を使うかどうかの質問で yes と答えていたらちゃんと設定されているはずなんだけどね。OpenBSD は、すべての X サーバについて、アパーチャドライバが設定されていることが必要だ。これがビデオドライバの I/O ポートへのアクセスをコントロールするからだ。
その他、i386 上での X の問題については、
http://www.xfree86.org/FAQ/にあるXFree86 FAQ を参照。
CVS は、OpenBSD プロジェクトがソースコードへの変更をコントロールするのに使っているものだ。 CVS は Concurrent Versions System の略だ。詳しい情報は http://www.cyclic.com/ で読める。CVS をエンドユーザが使えば、ソースの変更やportsツリーをいつも最新にしておける。CVS のおかげで、プロジェクトの数々の CVS ミラーからソースをダウンロードするのはとても簡単だ。
最初に CVS 環境を設定するには、やりかたがいくつかある。手始めに、ソースを初めて CVS チェックアウトする必要がある。CD を買った人はおめでとう。CD には、そのリリースの CVS チェックアウトが含まれている。以下のようにすればそれを抽出できる:
1) CD からツリーをコピーしよう (CD は /mntにマウントされているものとする):
# mkdir /usr/src # cd /mnt; cp -Rp CVS Makefile bin distrib etc games gnu \ include kerberosIV lib libexec lkm regress sbin share \ sys usr.bin usr.sbin /usr/src
2) 別のやり方としては CD を書き込み可能なディレクトリ以下に union mount しよう。ただし union ファイルシステムのコードはまだ完璧ではないことに注意。
# mkdir /usr/src # mount -t union -o -b /mnt /usr/src
これで /usr/src はきちんとしたチェックアウト領域になって、cvs(1) コマンドはすべてうまくいくようになる。
OpenBSD CD がなければ、ソースを OpenBSD AnonCVS サーバからとってこなきゃいけない。サーバの一覧は http://www.openbsd.org/anoncvs.html にある。サーバを選んだら、どのモジュールがほしいかを選ぼう。CVS ツリーからチェックアウトできるモジュールは主に3つある:
ほしいモジュールが決まったら、取ってくるまでにあと一歩だ。どのメソッドを使うかを決めなきゃいけない。デフォルトでは CVS はrsh(1) を使ってファイルを取ってくるけれど、一部の AnonCVS サーバはこれを認めないので、ほとんどの場合は ssh を使うのがいちばんいい。ファイヤーウォールのうしろにいる人たちには、pserver と一部の AnonCVS サーバが ssh をポート 2022 で動くようなオプションがある。どのサーバがどのプロトコルをサポートしているかは http://www.openbsd.org/anoncvs.html を必ずチェックするように。以下に、簡単なソースチェックアウトを試しにやってみよう。ここではアメリカにある AnonCVS サーバを使っているけれど、でもアメリカ以外にいる人は、ちかくのサーバを必ず使うように。世界中にたくさん AnonCVS サーバがあるから、手近なのを使うといい。また、ファイルの取得には、ssh を使っている:
ericj@oshibana:~> export CVS_RSH=/usr/bin/ssh ericj@oshibana:~> echo $CVS_RSH /usr/bin/ssh ericj@oshibana:~> export CVSROOT=anoncvs@anoncvs.usa.openbsd.org:/cvs ericj@oshibana:~> cvs get src Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side. cvs checkout: in directory src: cvs checkout: cannot open CVS/Entries for reading: No such file or directory cvs server: Updating src U src/Makefile [snip]
ここで環境変数 CVSROOT を使っているのにも注意。これは cvs(1) に、どの AnonCVS サーバを使うか指定するものだ。これは -d オプションを使っても指定できる。たとえば:
ericj@oshibana:~>cvs -d anoncvs@anoncvs.usa.openbsd.org:/cvs get src
以上のコマンドは /usr から実行しよう。すると /usr/src, /usr/ports, and /usr/www というディレクトリができる。もちろんこれは、どのモジュールをチェックアウトするかによる。こうしたモジュールはどこにダウンロードしてもいいけれど、でもそれで作業するつもりなら(つまりビルドしたりするなら)、デフォルトではソースは上記のディレクトリにあるものと想定されている。
最初のツリーができあがったら、それを最新にしておくのは簡単だ。更新は好きなときにやればいい。AnonCVS サーバごとに更新頻度はちがうから、ここでも http://www.openbsd.org/anoncvs.htmlをチェックしておこう。この例では、www モジュールを anoncvs.usa.openbsd.org から更新する。-q オプションを使っているのに注意。これはサーバからのアウトプットをいちいち全部表示しないようにする。
ericj@oshibana:~> echo $CVSROOT anoncvs@anoncvs.usa.openbsd.org:/cvs ericj@oshibana:~> cvs -q up -PAd www Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side. U www/want.html M www/faq/faq8.html ericj@oshibana:~>
一部の人にとって、こういうリポジトリの更新には帯域幅と時間が深刻な問題となるだろう。だから CVS には -z[1-9] オプションがあって、gzip でデータを圧縮してくれる。これを使うには -z[圧縮レベル] とやる。たとえば圧縮レベル 3 なら -z3
だ。
ports ツリーは Makefile の集まりで、ユーザランドのプログラムをダウンロード、パッチ、configure、インストールしてくれる。いちいちこれを手作業しなくても、OpenBSD で実行できるようになるんだ。ports ツリーは OpenBSD ftp サーバの /pub/OpenBSD/2.7/ports.tar.gz にある。最新の ports は 'ports' cvs ツリーか、/pub/OpenBSD/snapshots/ports.tar.gz にある。でもほとんどの人たちには、ports を使うより packages を使うほうがずっといいだろう。Packages は ports から作られて、コンパイル済みですでに使える。packages について詳しくは FAQ8.7を参照。
最新の ports ツリーを使うつもりなら、最新リリースの OpenBSD を手に入れよう。理由は、ports ツリーはたえず変化して手が加えられていて、OpenBSD のほかの部分との関係が出てくるからだ。もしこのガイドラインにしたがわなければ、更新で細々した問題が出てくるおそれがある。
OpenBSD Ports ツリーを最新にしておくいちばんいい方法は、cvs(1) を使うことだ。OpenBSD はだれでも使える Anonymous CVS サーバをたくさん持っている。cvs について詳しくは www.openbsd.org/anoncvs.html と Faq8.5を見てほしい。
とはいえ、そもそもports ツリーを持っていなくても、OpenBSD ftp サーバからダウンロードできる。ftp サーバの一覧は www.openbsd.org/ftp.html にある。ここから /pub/OpenBSD/2.7/ports.tar.gz をダウンロードして、これを /usr/ports に解凍しよう。たとえば:
ericj@oshibana> ftp ftp://ftp.openbsd.org/pub/OpenBSD/2.5/ports.tar.gz ericj@oshibana> sudo cp ports.tar.gz /usr ericj@oshibana> cd /usr; sudo tar xfz ports.tar.gz
これさえ終われば、あとは cvs(1) を使って Ports ツリーを更新できる。もしベースとして 2.5 リリース用の Ports ツリーから始めた人は、ちょっと変更を加える必要がある。特に make(1)が使うファイルの入った/usr/share/mkは更新する必要がある。もしシステム上に src ツリーがあれば、/usr/share/mkの更新は cvs(1) を使って簡単に以下のようにすればいい:
ericj@oshibana> cd /usr/src/share/mk; sudo make install
これでしかるべきファイルがしかるべき場所におさまる。これが終わったら、最新の make(1) バイナリも必要になるかもしれない。これは自分でつくるしかない。もしシステムにsrcツリーがなければ、cvs(1) でとってきてコンパイルしよう。例:
ericj@oshibana> export CVS_RSH=/usr/bin/ssh ericj@oshibana> cvs -danoncvs@any.anoncvs.server:/cvs get src/usr.bin/make cvs server: Updating src/usr.bin/make U src/usr.bin/make/Makefile U src/usr.bin/make/Makefile.boot U src/usr.bin/make/arch.c U src/usr.bin/make/bit.h U src/usr.bin/make/buf.c U src/usr.bin/make/buf.h U src/usr.bin/make/compat.c [SNIP] ericj@oshibana> cd src/usr.bin/make; sudo make install
もしマシン上にすでに src があれば、単に make をアップデートしてインストールすればいい。とりあえず、これだけやってあれば ports ツリーはまともに使えるようになる。
ports ツリーのスナップショットは毎日つくられて、OpenBSD ftp サーバからダウンロードできる。ファイルは /pub/OpenBSD/snapshots/ports.tar.gzだ。
ports を探す方法は二通りある。まずは www.openbsd.org/portstat.html をチェックすることだ。ここにはいまある ports が一覧になっている。もう一つは、ports ツリーそのものを使って、キーワードで検索をかけることだ。これには make search key="searchkey" とやろう。たとえば 'samba'を検索するとこうなる:
ericj@oshibana> make search key="samba" Port: samba-2.0.5a Path: /usr/ports/net/samba Info: free SMB and CIFS client and server for UNIX Maint: ports@openbsd.org Index: net B-deps: R-deps: Archs: any Port: ADMsmb-0.2 Path: /usr/ports/security/ADMsmb Info: Samba security scanner Maint: dugsong@monkey.org Index: security B-deps: R-deps: Archs: any
Ports の make とインストールは、すさまじく簡単になるようにしてある。以下に、 X11 のプログラム xfig をインストールしたい人の例を挙げておこう。依存関係が自動的に検出されて補われていることに注目:
まずは、ほしいプログラムのディレクトリに cd する。プログラムを探しているなら、locate データベースを更新するか、さっき説明した検索機能を使おう。ほしいプログラムのディレクトリに入ったら、make install とタイプするだけだ。たとえば:
fenetyllin:/usr/ports/graphics/xfig# make install ===> Extracting for xfig-3.2.2 ===> xfig-3.2.2 depends on shared library: jpeg.62. - /usr/local/lib/libjpeg.so.62.0 found ===> xfig-3.2.2 depends on shared library: Xaw3d.6. - not found ===> Verifying install for Xaw3d.6. in /usr/ports/x11/Xaw3d >> Xaw3d-1.3.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://crl.dec.com/pub/X11/contrib/widgets/Xaw3d/R6.1/. Connected to crl.dec.com. 220 crl.dec.com FTP server (Digital UNIX Version 5.60) ready. 331 Guest login ok, send ident as password. 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. 200 Type set to I. 250 CWD command successful. 250 CWD command successful. Retrieving pub/X11/contrib/widgets/Xaw3d/R6.1/Xaw3d-1.3.tar.gz local: Xaw3d-1.3.tar.gz remote: Xaw3d-1.3.tar.gz 227 Entering Passive Mode (192,58,206,2,5,14) 150 Opening BINARY mode data connection for Xaw3d-1.3.tar.gz (0.0.0.0,0) (290277 bytes). 100% |**************************************************| 283 KB 00:00 ETA 226 Transfer complete. 290277 bytes received in 101.09 seconds (2.80 KB/s) 221 Goodbye. ===> Extracting for Xaw3d-1.3 /bin/mkdir -p /usr/ports/x11/Xaw3d/work/xc/lib/Xaw3d/X11/Xaw3d cd /usr/ports/x11/Xaw3d/work/xc/lib/Xaw3d/X11/Xaw3d; ln -sf ../../*.h . ===> Patching for Xaw3d-1.3 ===> Configuring for Xaw3d-1.3 mv -f Makefile Makefile.bak imake -DUseInstalled -I/usr/X11R6/lib/X11/config make Makefiles [snip]
ports と package のいずれも pkg_info コマンドを使えばインストールされたものの一覧が見られる。
bsd# /usr/sbin/pkg_info zsh-3.0.5 The Z shell. screen-3.7.4 A multi-screen window manager. ssh-1.2.21 Secure shell client and server (remote login program). emacs-20.2 GNU editing macros. lynx-2.7.1ac-0.107 An alphanumeric display oriented World-Wide Web Client. tcsh-6.07.02 An extended C-shell with many useful features. bash-2.01 The GNU Borne Again Shell. zip-2.2 Create/update ZIP files compatabile with pkzip. mm-2.7 Implementation of MIME, the Multipurpose Internet Mail Exten ircii-2.8.2-epic3.004 An enhanced version of ircII, the Internet Relay Chat client ispell-3.1.20 An interactive spelling checker. tin-1.3.970930 TIN newsreader (termcap based) procmail-3.11p7 A local mail delivery agent. strobe-1.03 Fast scatter/gather TCP port scanner lsof-4.15 Lists information about open files. xntp3-5.92 Network Time Protocol Implementation. ncftp-2.4.3 nmh-0.27 The New MH mail handling program bzip2-0.1p12 A block-sorting file compressor
portsについて詳しくは ports(7) man ページを参照。
ports ツリーは絶えず拡張しているので、手伝いたければ
please see: http://www.openbsd.org/ports.htmlを参照してほしい。
Packages は、いちばんよく使われるプログラムのコンパイル済みバイナリだ。OpenBSD システムでは即使える。portsと同じように、packages も管理更新がとても簡単だ。Packages はどんどん増えているから、リリースごとに新しい packages に注目しよう。
package 管理に使うツールの一覧を挙げる:
賢いユーザのあなたはもちろん OpenBSD CD を買ったことと思う。packages は、アーキテクチャごとにわかれてそれぞれの CD 上にある。もし OpenBSD CD をお持ちでないなら、ftp ミラーのどこからでもダウンロード可能だ。ftpミラーの一覧は http://www.openbsd.org/ftp.html にある。Package のありかは /pub/OpenBSD/2.7/packages 以下で、アーキテクチャごとに分かれてディレクトリにおさまっている。
packages のインストールには pkg_add(1) ユーティリティを使う。pkg_add(1) はバカみたいに使いやすいユーティリティだ。以下の2例ではpkg_add(1) を使って package をインストールする。最初の例は pkg_add(1) を使ってローカルディスク上の package をインストールしている。もう一つは、ftp 経由でインストールをしている。どっちも screen-3.7.6 をインストールしている。
ローカルディスクからインストール
$ sudo pkg_add -v screen-3.7.6.tgz Requested space: 749864 bytes, free space: 2239117312 bytes in /var/tmp/instmp.cpsHA27596 Running install with PRE-INSTALL for `screen-3.7.6' extract: Package name is screen-3.7.6 extract: CWD to /usr/local extract: /usr/local/bin/screen-3.7.6 extract: execute 'ln -sf screen-3.7.6 /usr/local/bin/screen' extract: /usr/local/man/man1/screen.1 extract: /usr/local/info/screen.info extract: execute '[ -f /usr/local/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > /usr/local/info/dir' extract: execute 'install-info /usr/local/info/screen.info /usr/local/info/dir' extract: /usr/local/lib/screen/screencap extract: /usr/local/lib/screen/screenrc extract: CWD to . Running mtree for `screen-3.7.6' mtree -q -U -f +MTREE_DIRS -d -e -p /usr/local Running install with POST-INSTALL for `screen-3.7.6' +--------------- | The file /etc/screenrc has been created on your system. | You may want to verify/edit its contents | | The file /usr/local/lib/screen/screencap contains a | termcap like description of the screen virtual terminal. | You may use it to update your terminal database. | See termcap(5). +--------------- Attempting to record package into `/var/db/pkg/screen Package `screen-3.7.6' registered in `/var/db/pkg/screen-3.7.6'
この例では -v フラグを使って、省略なしのメッセージを表示させている。このオプションは別に必要ないのだけれど、デバッグには便利だし、さらに pkg_add(1) が実際になにをやっているかを理解してもらうためにここでは使っている。でも、本当に意味のあるメッセージも出てきている。/etc/screenrc に関するものだ。こういうだいじなメッセージは、 -v フラグの有無にかかわらず出てくる。
ftp経由でインストール
$ sudo pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/2.6/packages/i386/screen-3.7.6.tgz >>> ftp -o - ftp://ftp.openbsd.org/pub/OpenBSD/2.6/packages/i386/screen-3.7.6.tgz +--------------- | The file /etc/screenrc has been created on your system. | You may want to verify/edit its contents | | The file /usr/local/lib/screen/screencap contains a | termcap like description of the screen virtual terminal. | You may use it to update your terminal database. | See termcap(5). +---------------
この例では、ぼくが i386 用の package をインストールしたのがわかる。これは自分のアーキテクチャにあわせてほしい。注:すべてのアーキテクチャに同じ package があるとは限らない。ports の中には一部アーキテクチャでは使えないものがあるので。この例では -v フラグを使わなかったので、本当に必要なメッセージしか表示されていない。
システムにインストール済みの package を見るには pkg_info(1) を使う。これは、package 削除のときに正しい名前を調べるとき便利だ。システムにインストール済みの package を見るには、こうするだけ:
$ pkg_info sslUSA26 ssl26.1 USA-only non-commercial crypto libs incl. SSL & RSA mpg123-0.59q mpeg audio 1/2 layer 1, 2 and 3 player nmap-2.3b6 port scanning large networks ircii-2.8.2-epic3.004enhanced version of ircII (internet relay chat) screen-3.7.6 multi-screen window manager unzip-5.40 extract, list & test files in a ZIP archive xntp3-5.93e-export Network Time Protocol implementation icb-5.0.9 Internet CB - mostly-defunct chat client
package を削除するには、pkg_info(1) で表示されるpackage の正しい名前を調べて、pkg_delete(1) を使ってそれを削除すればいい。以下の例では screen package が削除されている。ときには、pkg_delete(1) で削除されなかったものを自分で削除しろという指示が出ることがあるのに注意。pkg_add(1) ユーティリティと同じく、-v フラグを使えばアウトプットがもっと省略なしになる。
$ sudo pkg_delete screen-3.7.6 +--------------- | To completely deinstall the screen-3.7.6 package you need to perform | this step as root: | | rm -f /etc/screenrc | | Do not do this if you plan on re-installing screen-3.7.6 | at some future time. +---------------
もちろん。fd*エントリのケツに "flags 0x20" をつけてカーネルをコンパイルしなおそう。こんなラインになるはずだ:
fd* at fdc? drive ? flags 0x20
あとは、フロッピードライブはいつでも使えるようになる。起動時に差し込んであろうとその後だろうと関係なくなる。
OpenBSD システムをブートするときに、bootプロンプトが出てきたのに気がついただろう:
boot>
ほとんどの人は、ここで何もしなくていい。コマンドがなければ、自動的に起動に入る。でもときどき問題が起きたり、特別な機能がほしかったりする。どのときに、ここにオプションを入れると便利だ。まず手始めにboot(8) man ページを一通り読んでほしい。ここではブートローダのいちばんよく使うコマンドをざっと見てやろう。
手始めに、コマンドがなければブートローダは自動的に /bsd をブートしようとする。これが失敗したら /obsd でやってみて、ブートできるカーネルが見つかるまでこれを続ける。カーネルを手で指定するには、こうタイプしよう:
boot> boot wd0a:/bsd
または
boot> b /bsd
いまのは、wd0aが root デバイスに設定されていれば機能する。
OpenBSD カーネルで使えるオプションの簡単な一覧を以下に挙げよう:
オプションの入力は、以下のような形式になる:
boot [ image [-abcds]]
もっと詳しい話は、boot_i386(8)
man ページを読もう。
S/Key は「ワンタイム・パスワード」方式だ。保護されていないチャンネル上用に、ワンタイム・パスワードの利用を可能にする。これは ssh や、暗号化されたチャンネルが使えない人にはとても便利なことがある。OpenBSD's S/Key 実装は、単方向ハッシュとして各種アルゴリズムが使える。使えるアルゴリズムの一覧を以下に:
まず手始めに /etc/skeykeys というファイルが必要だ。こいつがなければ、スーパーユーザに作ってもらおう。これは次のようにすればいいだけだ:
# touch /etc/skeykeys
このファイルができれば、S/Key を初期化できる。これにはskeyinit(1)を使うしかない。skeyinit(1) ではまずシステムパスワードを要求される。つまり、システムにログインするときに使ったパスワードだ。skeyinit(1) を保護されていないチャンネル上で動かすのは、まったくおすすめできないので、これは保護されたチャンネル(sshなど)か、コンソールでやること。システムに認証されたら、こんどは別のパスワードを入力しろと言われる。このパスワードは秘密パスワードで、システムパスワードとは別物だぞ。この秘密パスワードは、システムパスワードのように8文字の制限はない。それどころか、最低でも10文字必要だ。数語からなる文章かなんかがいいだろう。以下に、ユーザを追加した例を挙げよう。
oshibana:ericj> skeyinit ericj [Adding ericj] Reminder - Only use this method if you are directly connected or have an encrypted channel. If you are using telnet or rlogin, exit with no password and use skeyinit -s. Enter secret password: Again secret password: ID ericj skey is otp-md5 99 oshi45820 Next login password: HAUL BUS JAKE DING HOT HOG
ここで特にだいじなのが ID ericj skey is otp-md5 99 oshi45820 という一行。これはユーザにいろんな情報を与えてくれる。それぞれの部分を分解して、意義を説明しよう。
でも直接重要になってくるのがパスワードだ。パスワードは、6つの短い単語でできている。この組み合わせが、空白なんかも含め、あなたのパスワードだ。
これでskey は初期化されて、パスワードももらった。ログインの準備完了。s/keyを使ったログインセッションの例を次に挙げよう。
oshibana:ericj> ftp localhost Connected to localhost. 220 oshibana.shin.ms FTP server (Version 6.4/OpenBSD) ready. Name (localhost:ericj): ericj 331 Password [ otp-md5 96 oshi45820 ] for ericj required. Password: 230- OpenBSD 2.5-current (OSHIBANA) #8: Tue Jun 22 19:20:16 EDT 1999 230- 230- Welcome to OpenBSD: The proactively secure Unix-like operating system. 230- 230- Please use the sendbug(1) utility to report bugs in the system. 230- Before reporting a bug, please try to reproduce it with the latest 230- version of the code. With bug reports, please try to ensure that 230- enough information to reproduce the problem is enclosed, and if a 230- known fix for it exists, include that as well. 230- 230 User ericj logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.
シーケンス番号が変わったのに気がついたね。 otp-md5 96 oshi45820. これは、すでに s/key を使ってぼくが数回ログオンしているからだ。でも、一回ログインしたら、次のパスワードはどうやって手に入れる? そうね、それをやるには、使っているシーケンス番号とキーが必要だ。でもシーケンス番号なんかいちいち覚えてられない、と思ったでしょう。簡単だ。skeyinfo(1) を使えば、なにを使うべきかがわかる。たとえばここでは、いずれ必要になるだろうログイン用のパスワードを生成しなきゃならない(これは保護されたチャンネルでやってるのをお忘れなく):
oshibana:ericj> skeyinfo 95 oshi45820
これをもとに、次のログイン用のパスワードがつくれる。これには skey(1)を使う。上の出力をそのまま使って、パスワードを作ればいい。
oshibana:ericj> skey 95 oshi45820 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: NOOK CHUB HOYT SAC DOLE FUME
たぶんあなたたちの多くは、こうしたパスワードを作るのに使えるような保護された接続がいつも使えるわけじゃないだろうと思うし、これを保護されていない接続上で作るのは意味がない。だからいっぺんに複数のパスワードを作っておきたいだろう。どうすればいいか? そうね、 skey(1) に、パスワードをいくつ作りたいかを指定しておけばいい。これをプリントアウトして、出先に持ち歩こう。
oshibana:ericj> skey -n 5 95 oshi45820 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: 91: SHIM SET LEST HANS SMUG BOOT 92: SUE ARTY YAW SEED KURD BAND 93: JOEY SOOT PHI KYLE CURT REEK 94: WIRE BOGY MESS JUDE RUNT ADD 95: NOOK CHUB HOYT SAC DOLE FUME
ここで、最初に使うのがいちばんさいごに出てきたパスワードだということに注意。番号は100からだんだん減っていくんだからね。
S/Key を telnet(1), ssh(1), rlogin(1) で使うのは、ftp とだいたい同じだけれど、でも最初に入れるパスワードは「s/key」にすること。例:
ericj@oshibana> telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. OpenBSD/i386 (oshibana) (ttyp2) login: ericj Password: <------------ここで "s/key" と入力。 otp-md5 98 oshi45821 Response: SCAN OLGA BING PUB REEL COCA Last login: Thu Oct 7 12:21:48 on ttyp1 from 156.63.248.77 Warning: no Kerberos tickets issued. OpenBSD 2.5-current (OSHIBANA) #4: Thu Sep 2 23:36:16 EDT 1999 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug(1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. You have mail. ericj@oshibana>
S/Key をもっと細かくコントロールするには /etc/skey.access ファイルがある(これはデフォルトでは存在しないので、自分でこさえるように)。このファイルは主に3つの方法で S/Key を制限できる:
もしある一人のユーザ (ericj) が特定の IP (10.1.1.5) からログインしてくるのを認めたければ、こんなファイルをつくる。
# cat /etc/skey.access permit internet 10.1.1.5 permit user ericj
これはハードウェアのバグのせいなのよ。OpenBSD は、現在の時間を追いかけるのにクロック割り込みを使うけれど、この割り込みはアップルのアーキテクチャではプライオリティが最低になっている。そこで負荷が重くなると(たとえばディスクやネットワークの活動中)、クロック割り込みは捨てられて、Unixのクロックはあまり進まないってことになる。
MacOS は、つねにハードウェアクロックを読みにいってこの問題を回避している。OpenBSD は、ハードウェアクロックは起動時にしか読まない。シャットダウン時には、カーネルはUnix時間をもとにハードウェアクロックを修正するほどは自信がないことがわかるだろう。この時間のロス問題はよく知られているからだ。
いちばんいい解決法は、xntp を走らせることだ(ports/packageコレクションに入っている)。これは、外の時間サーバをもとに時計をあわせてくれる。インストールや設定の詳細は、FAQ10:xntpで時間あわせを参照しよう。そして途中でちょっと時間がずれるくらいは我慢することだね。ときどき、時間のロスが大きすぎると、xntpd ですらこわがって時間をなおしてくれないけれど、この場合は /etc/rc.securelevel の ntpd に -g オプションをつけておけば、大幅なずれでも xntp の言うとおりになる。
もう一つ、もっと簡単だけれど厳密さには欠ける方法が、rdate(8) を定期的に実行させることだ。crontabにエントリをつくって、できれば -a オプションをつけて時間が「ジャンプ」しないようにする。もしあなたが常時接続を使っておらず、PPPを利用しているなら、 rdate(8) の起動に使えるところは /etc/ppp/ppp.linkup ファイルで rdate(8) を呼ぶようにしてもいいだろう。
http://www.macbsd.com/macbsd/macbsd-docs/faq/faq-3.html#ss3.17
も参照のこと。
動かない。
OpenBSD/i386 はマルチプロセッサを使わない。マルチプロセッサシステムボードでは、プロセッサを一つだけ使って動く。OpenBSD/sparc は、マルチプロセッサの sparc システムではそもそも動かない。ほかのプラットホームでも、マルチプロセッサ機能はいまのところサポートされていない。
理由は簡単:マルチプロセッサマシンにさわれる開発者があまりいないからだ。もしマルチプロセッサマシンを寄付しないなら、http://www.openbsd.org/donations.htmlを参照。開発者たちは、SMPサポートをするのにi386, sparc, hppa などのマルチプロセッサハードウェアの寄付を求めております。OpenBSD にマルチプロセッササポートをつけるプロジェクトも動いていて、進捗は http://www.openbsd.org/smp.htmlでわかる。
OpenBSD 2.6 以降は、OpenBSD システム側から開始する接続には /dev/cuaXX を使わないとダメなのだ。 /dev/ttyXX デバイスは、ターミナルやダイヤルイン利用だけになった。確かに昔は tty デバイスも使えたんだけれど、いまの OpenBSD カーネルはもうこれとは互換性がない。
cua(4)から引用:
ハードウェアターミナルポートの場合、ダイヤルアウトはコーリングユニットというデバイスノードをマッチさせることでサポートされている。たとえば、/dev/tty03 というターミナルは、対応する /dev/cua03 というコーリングユニットを持っている。この二つのデバイスは、ダイヤルインデバイスノードに128を足したマイナー番号を持つ、コーリングユニット・デバイスノードを作ることで区別される。 ダイヤルイン・デバイス(tty) はふつうは、システムに自分がアクティブなのを示すためにはハードウェア信号を必要とする一方で、ダイヤルアウト・デバイス(cua)はそれを必要とせず、モデムのようなデバイスと邪魔なしに通信できることになる。これはつまり、getty(8) のようなプロセスは、ダイヤルイン・デバイスでは接続が確立するまで待つということだ。一方、ダイヤル・アウト接続(まったく同じターミナルポートでも)はシステム上のほかの何一つじゃますることなく確立できる。getty(8) プロセスは、ターミナルポートで何か起きていることさえ気がつかない。もしダイヤルアウト接続が完了したあとで、接続の呼び出しがきたら、 getty(8)はダイヤルアウトの活動になにも気がつかずに、それにきちんと対応する。
OpenBSD 専用のNetscape バイナリというのはない。でも OpenBSD はほかの OS のバイナリエミュレーションをサポートしているから、ほかのバイナリが使えるのだ。
Ports システムを使えば、何の問題もなくインストールできるはず。Portsツリーがインストールしてあれば、Navigator Port と Communicator Port は /usr/ports/www/netscapeにある。
Mg は Emacs-系のマイクロテキストエディタだ。マイクロというのはつまり小さいってわけ(Emacs はでっかいもんね!) 基本的なことは mg(1) manページを読もう。それとソースコードについてくるチュートリアルも参照。もっとおもしろい質問については (たとえば「おれのマシンにはメタキーがないぞ!」とか)、Emacs FAQを参照のこと。
なお mg は小さな Emacs 実装で、Emacs 17 相当のテキストエディタ機能しかない。Emacs のほかの機能はあまり実装されていないぞ(たとえばメールやニュース機能、Lisp, C++, Lex, Awk, Java, などのモード...)
理由として考えられるのは二つ。
/etc/motd ファイルは、システムのブートのたびに編集されて、最初の一行がカーネルバージョン情報で置き換わる。このファイルを編集するときには、必ずてっぺんから二行あけたところから始めるのをお忘れなく。さもないと/etc/rc が、ブート時に、/etc/motdを編集するときに削除しちゃうよ。
開発者は一人残らず、こんなのどうでもいいことだと思ってはいるのだけれど、メーリングリストなんかでしょっちゅう出てくる質問なので、ここで答えておこう。
www.openbsd.org とメインの OpenBSD ftp サイトは、カナダはアルバータ大学の SunSITE でホスティングしてもらっているのだ、このサイトはでかい Sun システム上でホストされていて、ディスクもいっぱいあるし、インターネットの帯域幅も太い。SunSITE のおかげで OpenBSD グループはこの帯域幅にアクセスできるのだ。だからメインサイトはここで動いてる。OpenBSD ミラーの多くは OpenBSD で動いているけれど、それはこれほどの太い帯域幅へのアクセスが保証されていないから、グループとしては、メインサイトはアルバータ大学の SunSITE におくことにしたわけ。
OpenBSD 2.8 だと、一部のマシンがネットワークカードをきちんと認識しなかったり、一つのマシンに複数のネットワークカードがあると、ハングしたりするという問題が生じている。これは PCIBIOS の問題で、きちんと動くようにするにはちょっと迂回すればいいだけだ。起動時設定を入力してやって、PCIBIOS を無効にしよう。例を以下に示す:
boot> boot -c OpenBSD 2.8 (GENERIC) #377: Tue Oct 24 03:04:08 MDT 2000 deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC cpu0: Intel Pentium III (Coppermine) ("GenuineIntel" 686-class) 390 MHz cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,SYS,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXS R,SIMD real mem = 66629632 (65068K) avail mem = 56770560 (55440K) using 838 buffers containing 3432448 bytes (3352K) of memory UKC> disable pcibios UKC> quit [... snip ...]
これが終わったら、FAQ 5.6 の指示にしたがって新しいカーネルをつくろう。そうすればもうこの話はこの先心配しなくてよくなる。
[FAQ トップに戻る] [7.0 - キーボード制御] [9.0 - Linuxからのお引っ越し]
www@openbsd.org 翻訳上の問題はhiyori13@alum.mit.edu
$OpenBSD: faq8.html,v 1.55 2000/09/20 00:17:24 ericj Exp $