vine-users ML アーカイブ



[vine-users:077217] Re: proftpd - unknown parameter

  • From: Shinichiro HIDA <shinichiro@xxxxxxxxxxxxx>
  • Subject: [vine-users:077217] Re: proftpd - unknown parameter
  • Date: Tue, 10 Jul 2007 21:08:21 +0900
飛田です。

>>>>> In [vine-users : No.077210] 
>>>>>	ikumi@xxxxxxxxxxxxx wrote:
> 北岡@横浜市です

> > (1)TimeGMT offで有効にならない。
> ですが、ProFTPD1.2.10を起動して現象を確認しようとしたら
> 現在現象が出ません(汗)

ん.. それ、間違い無く 1.2.10 ですか? どうやって起動させましたか?

FTPD などの場合、listen するポートが被っていると、起動出来なかったりす
るので、デフォルトでは (ポートをずらすとかオプション指定するとかしない
と) 多重起動は出来ません。すでに動いている物がある場合はそれを一旦止め
てから確認しましょう。

> >TimesGMT という事は、何かの時刻が JST (+0900) になってないという事は予
> >測できるのですが、いったい、何の時間が GMT になっているのですか?

> vine3.2 - ProFTPD1.2.10に
> WindowsXP - fffftp1.92aからアップロード
> アップしたファイルのタイムスタンプの時刻がGMTになっていた。

なるほど。分かりました。

> ffftpの設定は ホストのタイムゾーン GMT+900を確認。

> #date
> で日時が狂ってないことを確認しました。

出来ればファイルのタイムスタンプを含め、その出力をそのままメールにはり
つけて下さると、よりはっきりとメールを読んでいる人に伝わります。

> /etc/proftpd.confの 
> TimesGMT offの記述がある事を確認。

これ、手元で少し調べた所、1.2.0pre9 以降で効くような記述があります。

cf. http://www.proftpd.org/docs/directives/linked/config_ref_TimesGMT.html

;; バグがない限り、ですが。

/etc/proftpd.conf の中の _どこに_ 書いたのか、というのも関係するかもし
れません。上記 URI の Context で分かるように、server config, Global で
効いてくれると良いように見えますが。

> 少しネットで調べて
> /etc/rc.d/init.d/proftpdへ
> -------------------------------------
> start)
>        echo -n $"Starting $prog: "
>        export TZ=JST-9
>        daemon proftpd $OPTIONS

> export TZ=JST-9 の行を書き足したと思います。
> すみません、記憶があいまいです。

な〜んだ.. rpm パッケージ側の proftpd の起動スクリプトはすでにいじって
おられたのですね。

これは編集されたと言う事なので、なんとなくでもお分かりだと思いますが、
shell スクリプトの case 文で start) の位置に TZ 環境変数を指定しておら
れるので、当然、この start が呼ばれるまでは有効になりません。

;; この case 文からは start と restart 付きで呼ばれた場合のみ有効になる
;; 事が分かります。少なくとも記述した後に /etc/rc.d/init.d/proftpd
;; start もしくは restart が必要だという事です。

TZ を設定した次の行では、何が起こるのでしょうか? daemon というのは、そ
のスクリプトの始めの方にある、/etc/init.d/functions に書いてあります。
はっきりと分からなくても良いので、読んでみるとよいでしょう。

おそらく、今、北岡さんの環境には、/usr/sbin/proftpd と
/usr/local/sbin/proftpd の 2つの proftpd 本体が存在すると思います。

この起動スクリプトで、daemon() の引数として呼んでいる proftpd は、どっ
ちの proftpd を指しているかを調べるべきでしょう。ここでは試しに
echo -n $"Starting $prog: " の行の $prog を細工して確かめてみると良いで
しょう。

;; 万一、失敗してもすぐに戻せるように、編集を始める前に、バックアップを
;; 取っておきます。

# cd /etc/rc.d/init.d
# cp proftpd proftpd.orig

case 文の直前にある prog="ProFTPd" の部分の行頭に `#' を付けて無効にし、
次のようにします。

# prog="ProFTPd"
prog=$(which proftpd) # added for just testing by ME

編集出来たら、管理者権限 (su - でも sudo でも)で
/etc/rc.d/init.d/proftpd restart
あるいは、stop と start してみてください。

検証が終ったら /etc/rc.d/init.d/proftpd は元に戻し、不要なバックアップ
は削除しておいて下さい。

> それで解消されていなかったので、ProFTPD 1.3.0aを
> 取って来て試してみたのです。

> >また、proftpd は、どういう設定ファイルで、どういう起動方法で使っていま
> すか? 
> /etc/proftpd.conf で

この /etc/proftpd.conf は、rpm パッケージの物ですよね?

ご自分でソースからインストールされた物もこれを読んでいますか? おそらく、
/usr/local/man/man8 以下に、ご自分でインストールされた proftpd の man
があります。これを読んでみてくだささい。特に -c オプションのあたり。
rpm パッケージのと同じでしょうか?

また、man を読んでいれば分かる事ですが、 /usr/local/sbin/proftpd -V し
てみると良いでしょう。

> ServerType standaloneです。

これ、他の選択肢があるのはお分かりですよね?

;; いえ、これは管理者の設定の問題なので、どちらでもお好みの方で問題ない
;; です。この設定の意味が分かればおかしな誤解はなくなると思いますので。

> >よくありがちなのは、chroot していて /etc/ 以下の localtime などに
> >権限がなくってアクセスできずに GMT になっちゃうケースとかもあるようです

> #ls -al /etc/localtime
> -rw-r--r--    1 root     root           73 Oct 29  2005 /etc/localtime

> 指摘はルートディレクトリの変更の事だと思いますが
> chroot自体いま調べて知ったぐらいなので
> 難しい変わった設定はしてません。

じゃ、ほぼデフォルトのままだと。

ところで anonymous ftp は可能にしてたりしますか? 


> > (2)proftpdのコンパイル

[...]

> #/usr/local/sbin/proftpd start
> は単に試しただけです。

> - unknown parameter: 'start'
> と帰ってきたので --helpでオプションが無いことを確認して
> viでバイナリと確認して、スクリプトが他にあるんだなって思っただけです。

> 無いなら無いでエラー出るでしょうというぐらいの気持ちです。
> 別に自棄になって殴りかかってる訳ではありませんm(__)m

バイナリだから daemon 本体のプログラムだという訳でもありません。スクリ
プトで daemon 書く事だって出来ない訳ではありません。万一、あなたの期待
したのとは別の意味で start を受け取る物があった場合、おかしな事がおきな
いという保証はありません。

* 起動スクリプトの位置について

> >rpm コマンドの使い方を勉強してみましょう。で、パッケージに
> >含まれているファイルの一覧を表示してみましょう。
> パッケージの一覧とは、rpmを指されていたのですね。
> 勘違いしてソースレベルを思い巡らせていました。

> #find / -name proftpd 
> とか色々ファイルを探したりはしてました。
> (勘違いも甚だしい)

> # rpm -qR proftpd
> # rpm -ql proftpd

> とかして調べるのだと思います。
> rpmコマンド叩くの久しぶりで忘れていました。

起動スクリプトがかならず daemon の名前と一致しているとは限りませんので、
気を付けて下さい。パッケージとソースではファイル名が変わっている事もあ
ります。

で、ソースからいれる方は、デフォルトでは起動スクリプトは入りません。シ
ステムによって違いますから。システムの起動スクリプトは、各ソース側で勝
手にいじる事はまずありません。

入れた人がそれぞれシステムのスクリプトを加工するなりして用意する物です。
今回の proftpd の場合は、少し編集、あるいは工夫すれば、そのままパッケー
ジの /etc/rc.d/init.d/proftpd を使えると思います。(standalone の物)

;; PATH に /usr/sbin 及び /usr/local/sbin が含まれている状態で、
;; whereis proftpd と which proftpd してみると分かるでしょう。
;;
;; 例えば、一般ユーザ(通常、sbin 系のディレクトリは PATH にない)で、
;; $ env PATH="$PATH:/usr/sbin:/usr/local/sbin" which proftpd
;; $ env PATH="$PATH:/usr/local/sbin:/usr/sbin" which proftpd
;; してみるとか。

;; また、proftpd の場合は、ソースの中の contrib/dist/rpm も調べてみると
;; 良いでしょう。

また、ソースからインストールされる各ファイルなどの位置は Makefile を
読むなり make install の時のログを tee にパイプするなどしてとっておく
(あるいは直後に読む)とわかるかと思います。

-- 
  Shinichiro HIDA  shinichiro@xxxxxxxxxxxxx
  GPG fingerprint = 5F2D 1656 FFF6 F691 A51C  5E61 E416 D398 470C 1CE9