X 端末の font や X サーバプログラムは tftp を用いていま す。今回 X 端末を Private Address に移動しましたので、 tftpserver もPrivate Address に移動しました。しかし gateway 172.21.88.1 ( = cube 130.153.140.55) 上の Vine Linux ver 2.0 の in.tftpd には問題点があるようです。したがって、現在では、 172.21.88.10 の X 端末以外はうまくいっていません。 172.21.88.10 の X 端末がなぜうまく行っているのかがわかりませ ん。
get /usr/lib/X11/fonts/misc/fonts.dir
では Error code 2: Access violation になるが
get usr/lib/X11/fonts/misc/fonts.dir
なら ok です。頭の / をとる必要がある。
flex10% tftp 172.21.88.1 tftp> get Xncd19c tftp: Xncd19c: Permission denied tftp> st Connected to 172.21.88.1. Mode: netascii Verbose: off Tracing: off Rexmt-interval: 5 seconds, Max-timeout: 25 seconds tftp> v Verbose mode on. tftp> tr Packet tracing on. tftp> get usr/lib/X11/fonts/misc/fonts.dir getting from 172.21.88.1:usr/lib/X11/fonts/misc/fonts.dir to fonts.dir [netascii] sent RRQreceived DATA sent ACK received DATA sent ACK sent ACK received DATA sent ACK sent ACK received DATA sent ACK received DATA sent ACK sent ACK sent ACK Transfer timed out. tftp> q
bt 172.21.88.1X 130.153.140.143 172.21.88.1 255.255.255.0
で 実行可能です。ただし config file を新たに flex に作ることが 必要です。
tftpd.c をみて、先頭に / がついている場合の 処理のif 文 を直して / がついている場合の else の処理のところをコメント にして、
filname++;
をつけまして make しましたら、うまく行きました。 この処 理をしても、/ がついていない file 名と同等だと思いますので、 security 上の問題は無いと思います。問題がありましたら 教えて下さいませ。
tftpd.c の該当部分を示します。patch として良いかわかりま せんので、使う場合には自分の責任で編集して下さい。make は Vine Linux の SRPM から
rpm --rebuild tftp-0.15-1.src.rpm の とちゅうで C-c
cd /usr/src/redhat/BUILD/netkit-tftp-0.15/
cd tftpd して、tftpd.c を 編集
make と make install を実行。ps ax | grep inetd で pid を 得て、 netd を kill -HUP pid で restart. 標準が netascii になっている点に注意。
if (*filename != '/') { syslog(LOG_ERR, "tftpd: serving file from %s\n", dirs[0]); chdir(dirs[0]); } else { /* 先頭が / の場合の処理 コメントアウトした。*/ for (dirp = dirs; *dirp; dirp++) if (strncmp(filename, *dirp, strlen(*dirp)) == 0) break; if (*dirp==0 && dirp!=dirs) return (EACCESS); */ /* 先頭が / の場合 先頭の / を読まないで処理 */ filename++; chdir(dirs[0]); }
なんで / が先頭についていて問題なのかが、十分良くわかってい ないので不安なのですが、問題は解決しました。どうもありがとう ございました。
試してわかったことがあったら e-mail とともにここに記入下さい。