FreeBSD QandA 1999年7月2日 更新分
管理番号 859 (新規)
更新履歴
Q. FreeBSD で RADIUS サーバを立てようと思っているのですが、参考になる
Web サイトはありますか?
A. iij-ppp や pppd を使うんなら
<URL:http://www.kyoto-wave.or.jp/shain/radius/>
radiusdについては
<URL:http://www.dtc.co.jp/Radius/>
<URL:http://www.dtc.co.jp/Radius2.0/>
Ascend版なら
<URL:http://www.ascend.co.jp/product/>
RADIUS関連linkなら
<URL:http://www.happysize.co.jp/techie/>
管理番号 921 (新規)
更新履歴
Q. mnews の MH モードで、pop サーバからメールを取り込むことができませ
ん。どうすればよいのでしょうか。
A. POP3 サーバ、あるいは APOP サーバからメールを取得しようとしていま
せんか? その場合、「ユーザの入力が不要な inc」が実行できるように
.netrc などに設定を加える必要があります。具体的には次のようにします。
1. mnews の設定ファイル ${HOME}/.mnews_setup ファイルに以下を追加します:
mh_mode: on
msgchk_rule: 2
2. POP3 サーバからメールを取得する場合は、MH の設定ファイル
${HOME}/.mh_profile に以下を追加します:
inc: -norpop -noapop -host pop-hostname -user pop-account
msgchk: -norpop -noapop -host pop-hostnam -user pop-account
APOP サーバからなら、次のようにします:
inc: -apop -host pop-hostname -user pop-account
msgchk: -apop -host pop-hostname -user pop-account
ここで pop-hostname には POP3/APOP サーバ名、pop-account には POP3/APOP
アカウント名を記述します。
3. MH の inc, msgchk コマンドを問い合わせなしで実行するため、
${HOME}/.netrc ファイルを作成し、以下の記述を加えます。
machine pop-hostname
login pop-account
password pop-password
pop-hostname には POP3/APOP サーバ名、pop-account には POP3/APOP アカ
ウント名、pop-password には POP3/APOP パスワードを記述します。
上記のように、$HOME/.netrc ファイルには生のパスワードが記述さ
れるため、その取り扱いには細心の注意を払って下さい。他のユーザーに読ま
れないように、ファイルのモードは 600 にしておきます。
% chmod 600 $HOME/.netrc
以上の設定でメールを取り込んで読むことができるようになるでしょう。
なお、mnews 1.21 は環境変数 MH による設定ファイル (.mh_profile) 切り替えには
対応していません。対応させるには、たとえばこんな patch を適用して mnews を
作り直す必要があります:
----patch start----
--- src/mh.c.dist Fri Sep 4 11:28:45 1998
+++ src/mh.c Fri Sep 4 12:07:05 1998
@@ -416,7 +416,36 @@
if (!mh_mode) {
return(0);
}
- sprintf(init_file, "%s%c%s", home_dir, SLASH_CHAR, MH_INIT_FILE);
+ {
+ char *mymh;
+
+ if ((mymh = getenv("MH")) != NULL) {
+ /* set alternate MH profile path */
+ if (*mymh == SLASH_CHAR) { /* absolute path */
+ if (PATH_BUFF < (strlen(mymh) + 1)) {
+ fprintf(stderr, "init_file buffer is not enough: current = %d\n", PATH_BUFF);
+ exit(1);
+ }
+ sprintf(init_file, "%s", mymh);
+ } else {
+ char *p;
+
+ if ((p = getcwd(NULL, PATH_BUFF)) == NULL) {
+ perror("getcwd");
+ exit(1);
+ }
+ if (PATH_BUFF < (strlen(p) + 1 + strlen(mymh) + 1)) {
+ fprintf(stderr, "init_file buffer is not enough: current = %d\n", PATH_BUFF);
+ exit(1);
+ }
+ sprintf(init_file, "%s%c%s", p, SLASH_CHAR, mymh);
+ free(p);
+ }
+ } else {
+ /* set standard MH profile path */
+ sprintf(init_file, "%s%c%s", home_dir, SLASH_CHAR, MH_INIT_FILE);
+ }
+ }
buff1[0] = buff2[0] = '0';
init_field[0].field_buff = &buff1[1];
init_field[1].field_buff = &buff2[1];
----patch end----
この patch を適用した mnews であれば、
% env MH=/other/place/other_mh_profile mnews args...
として、標準とは異なる MH 設定ファイルを利用できます。
なお、/usr/local/share/doc/mnews/ ディレクトリ内に mnews 関連ドキュメ
ントがありますので、こちらも随時参照して下さい。
管理番号 1079 (新規)
更新履歴
Q. FreeBSD 以外のマシンと talk ができません。
A. talk(1) にも書かれているとおり、FreeBSD で使用している 4.3BSD
由来の talk(1) のプロトコルは、 4.2BSD 由来のものとは互換性が
ありません。例えば SunOS などは 4.2BSD から別れているので、古い
talk プロトコルを使用しています。なお 4.3BSD 由来の talk は ntalk
と呼ばれており、ポート番号も異なるものを使っています
(grep talk /etc/services してください)。
ですから、古い talk を使っている OS と FreeBSD や NetBSD などの
間で talk を行なおうとすると、
[Checking for invitation on caller's machine]
と出てしまい、実際に talk することができません。
これを解決するには現在のところ 2 つの方法があります。
まず一つ目は古い talk を使っている OS に ntalk をインストールする
方法です。日本だと
<URL:ftp://ftp.uoeh-u.ac.jp/pub/net/ntalk.tar.gz>
から取得可能です。これをコンパイルしてインストールします。これ
以降、FreeBSD からは通常に talk を、ntalk をインストールした側
では、talk の代わりに ntalk を使えば互いに talk できるように
なります。なお FreeBSD 上で古い talk を動かすようにするプログラムは
今のところ存在しないようです。
二つ目は ytalk を使う方法です。ytalk は接続する時に ntalk が使え
れば ntalk プロトコルで、ntalk が使えなければ古い talk プロトコル
で接続を試みます。ですから相手の OS がわからず、talk と ntalk
どちらを使えばいいのかわからないという場合でも迷わず ytalk を使えば
ytalk が判断して適切なプロトコルで繋いでくれます。ただし ytalk には
talk daemon はついていないので、相手側にも ytalk をインストールして、
相手も ytalk を使うようにしないとやはりプロトコルの相違の問題が
起きてしまいます
(仲立ちをするのは既存の talkd なので、tty 上には
respond with:talk user@hostname
としか表示されませんが、そのとおりに答えると冒頭で述べた問題が
やはり起きてしまいます。ytalk user@hostname としなければならない
ことをあらかじめメールなどで確認しあっておく必要があります)
なお ytalk は複数人での同時 talk や X の窓を使った talk もできる
ように作られています。
そこまで苦労するのなら、いっそのこと phone や IRC を使った方が
いいのかもしれませんが、ytalk にはインストールに root 権限が要ら
ない、新規 daemon の起動が要らない、という利点があります。
最後に図にまとめてみます。
FreeBSD BSD4.2
x talk X <--- <--- o talk どちらも通信できない
o ntalk ---> ---> X x ntalk
(1)
FreeBSD BSD4.2
x talk X <--- <--- o talk BSD4.2 側で ntalk
o ntalk <---> <---> o ntalk を使えば通信できる
(2)
FreeBSD BSD4.2
x talk +---> ---> o talk ytalk が自動的に
o ntalk <--- + <---+ x ntalk 相手のプロトコル
ytalk --------+ +------ ytalk を判断して通信する
(3)
FreeBSD BSD4.2
phone <---> <---> phone phone を入れてしまえば
煩わしさはなくなる
[付録]
Solaris 2.x で gcc を使って ytalk をコンパイルする、あまり
よろしくない方法。
(1) FreeBSD の配布サイトの distfiles ディレクトリから
ytalk-v3pl2.tar.gz を入手する
(2) 伸長・展開する。
% gunzip ytalk-v3pl2.tar.gz
% tar xvf ytalk-v3pl2.tar
(GNU tar なら tar zxvf ytalk-v3pl2.tar.gz も可)
(3) imake がうまく動かないので X 上で動かすのをあきらめる
(4) Makefile を書き換えて、SLIBS = -lnsl -lsocket を有効にし、
CC=gcc の行を加える
% vi Makefile
-#SLIBS = -lnsl -lsocket
+SLIBS = -lnsl -lsocket
+CC=gcc
(5) 普通に make する
% make
Undefined first referenced
symbol in file
sigmask fd.o
sigsetmask fd.o
sigblock fd.o
ld: fatal: Symbol referencing errors. No output written to ytalk
と失敗する。
(6) UCB 互換ライブラリを使うようにして fd.o を作り直す。
(UCB 互換ライブラリがインストールされてない場合は、SUNWscpu
を追加インストールする)
% rm fd.o
% setenv LD_LIBRARY_PATH /usr/ucblib
% setenv LD_RUN_PATH /usr/ucblib
% make CFLAGS=-I/usr/ucbinclude LDFLAGS=-lucb
(7) できた ytalk を適当なところへほうりこむ
% cp ytalk ~/bin
% rehash
管理番号 67 (更新)
更新履歴
Q. RFC の和訳はありませんか?
A. RFC ならびに Internet Draft の日本語化文書集積/提供のページが
<URL:http://www.barrier-free.co.jp/homes/RFCJ/>
にあります。また、以下の Web Page も参照するとよいでしょう。
<URL:http://www.imasy.or.jp/~yotti/#rfc>
管理番号 1353 (新規)
更新履歴
Q. POP/APOP 認証だけ行ってメールを受信しないようにするにはどういった方法
がありますか。POP before SMTP採用サイト(SPAM対策のために、メールを
送信する直前に POP/APOP 認証が必要なサイト)を使う際に必要なのです。
A. 以下のとおりいくつかの方法があります。
1. fetchmail -c を実行する
2. MH の msgchk を pop/apop で実行する (man msgchk を参照してください)
3. 手動で認証を行う。
% telnet POPSERVER 110
USER USERNAME
PASS PASSWORD
QUIT
4.認証だけ行うクライアントを作る。
1) シェルスクリプトを使う。
#!/bin/sh
(
sleep 1;
echo USER USERNAME;
sleep 1;
echo PASS PASSWORD;
sleep 1;
echo QUIT
) | telnet POPSERVER 110
2) perl5 と p5-Net を使う。
#!/usr/local/bin/perl
use Net::POP3;
$pop = Net::POP3->new('POPSERVER');
$pop->user("USERNAME");
$pop->pass("PASSWORD");
$pop->quit();
管理番号 39 (更新)
更新履歴
Q. マニュアルが英語なんですが 日本語のマニュアルはありませんか。
A. マニュアルと言っても、いろいろあります。
o FreeBSD自体のマニュアル (/usr/share/man 以下にあるもの)
o X Window Systemのマニュアル (/usr/X11R6/man 以下にあるもの)
o ports/packages でインストールしたプログラムのマニュアル
(/usr/local/man 以下にあるもの)
FreeBSD自体のマニュアル
FreeBSD自体の翻訳は jpman プロジェクトが行なっています。
<URL:http://www.jp.freebsd.org/man-jp/>
1999年6月現在、セクション1、5、6、7、8の日本語マニュアルが
用意されています。今後、他のセクションも翻訳されていくでしょう。
ja-man と ja-man-doc を ports/packages からインストールしてください。
(2.2.8-RELEASE や 3.0-RELEASE 以降をお使いで、なおかつ OSインストールの
際に "manpages" カテゴリをインストールしているなら、日本語マニュアル
ページも自動的にインストールされていますので、ja-man をインストール
するだけでよいです)
インストールし終わったら
% setenv LANG ja_JP.EUC
% setenv PAGER jless
% jman ls
で日本語マニュアルが出るはずです。LANG を ja_JP.EUC にすると、色々問題が
出ることがありますので、
% alias jman env LANG=ja_JP.EUC jman
とするのも一つの手です。
ただし、この方法でインストールされたマニュアルファイルの内容の一部が
英語マニュアルと一致してない場合があります。この問題の修正方法については、
<URL:http://www.jp.freebsd.org/man-jp/get.html>
を参照して下さい。
また、この日本語マニュアルを web上から見ることもできます。
<URL:http://www.jp.freebsd.org/man-jp/search.html>
X Window Systemのマニュアル
X(1)、xterm(1)、xmodmap(1) など、X Window System関連のマニュアルは
直接 FreeBSD とは関係ありませんので、上記の jpman には含まれていません。
こちらは X Japanese Documentation Project が翻訳作業を行っています。
<URL:http://xjman.dsl.gr.jp/>
ja-xjman という port/package をインストールして下さい。
% jman X
で日本語マニュアルが表示されるはずです。
ports/packages でインストールしたプログラムのマニュアル
これについては、日本語マニュアルを扱う仕組みは用意されていません。
有名なプログラムなら誰かが翻訳している可能性がありますので、探して
みてください。
和訳のマニュアルページを見つけたら、/usr/local/man/ja/man? (? には、
書き込むマニュアルファイルの拡張子の数字を合わせる) にそのファイルを
(EUC コードに変換して) コピーを置いて下さい。以後、jman コマンドでそ
のファイルを見ることができます。例えば、foo.1 というマニュアルファイ
ルを見つけたら、それを /usr/local/man/ja/man1/foo.1 にコピーすれば
いいです。
管理番号 1364 (新規)
更新履歴
Q. /var/log/messages に
last message repeated 2 times
というログが残っているんですが、これは何ですか?
A. 直前の行と同じメッセージが、更に2回分出力されたことを意味しています。
syslogd が関与する記録では、同様な処理が行われます。
たとえば tail -f /var/log/messages としてログを見ながら、別の kterm 上で
・su でわざと間違ったパスワードを入力する。それを3回繰り返す。
・su で正しいパスワードを入力して root になる。
としてみてください。すると、/var/log/messages に
su: BAD SU username to root on /dev/ttyp0
last message repeated 2 times
su: username to root on /dev/ttyp0
と記録されることがわかると思います。
これは
su: BAD SU username to root on /dev/ttyp0
su: BAD SU username to root on /dev/ttyp0
su: BAD SU username to root on /dev/ttyp0
su: username to root on /dev/ttyp0
と同じ意味ですが、ログの容量を抑え、なおかつログを読みやすくするために
syslogd が工夫してくれているわけです。