inetdを英語モードで起動する方法
〜Fetchでアクセス不具合〜
0.改定履歴
- 1997.06.24 初版
1.はじめに
このドキュメントは,Solaris2.xをFTPサーバとするときに,一部のFTPクライアントではモジバケをおこしてしまうという現象に対する対処方法である.
2.FTPクライアントのFetchでアクセス
MacitnoshのメジャーなFTPクライアントであるFetchを使って,インストールしたてのSolaris2.5.1にアクセスしてみる.
すると以下のようになる.
ここでは,ディレクトリのアクセス権の一覧は表示されているが,ファイル名,ディレクトリ名が表示されない.
また,この状態でディレクトリ内を参照しようとしても,以下のようなエラーが出る.
たとえば,これをtelnetで接続し,Solaris上のftpコマンドを用いて行なった場合や,Windows95やWindowsNTに標準搭載しているftp.exeコマンドで接続した場合にはファイルおよびディレクトリは正しく表示される.
duo% ftp nnn.nnn.66.147 ftp> ls -l 200 PORT command successful. 合計 300 drwxr-xr-x 2 root root 512 6月 10日 11:02 TT_DB |
3.原因
何故MacintoshのFetchでアクセスすると正しく表示されないのか? それはMacintoshだからか?なんて事は無く,実はFetchはサーバの言語環境を反映させているインテリなクライアントであるために上記のような不具合?が出る.
つまり,ftpサーバ(ftpd)が,日本語表記として起動しており,その環境を引き継いで表示させるために文字化け,及び表示の不具合を発生させてしまうのであった.
4.対処
原因が,ftpdが日本語環境で起動している事が原因ならば言語を英語に切り替えてしまえばよい.
ftpdはinetdの子供として起動されるので,inetdの起動言語環境を英語にする.
inetdの起動は,/etc/init.d/inetsvcに書かれている. このファイルに最後を見ると,次のようになっている.
# # Run inetd in "standalone" mode (-s flag) so that it doesn't have # to submit to the will of SAF. Why did we ever let them change inetd? # /usr/sbin/inetd -s |
この/inetdの起動時の言語環境を英語モードにするように書き換える.
# # Run inetd in "standalone" mode (-s flag) so that it doesn't have # to submit to the will of SAF. Why did we ever let them change inetd? # LANG=C /usr/sbin/inetd -s |
この変更を行なった後は,マシンをリブートすれば反映される. リブートする時は他の人使っていないかチェックしてから行なう.
再度接続すると,次のようになる.