Proftpdの設定/インストール

更新日2008-04-18 (金) 08:41:16

shellの禁止

ユーザにshellアカウントを禁止、proftpだけ使用させるには

/etc/passwdに

okada2:x:502:502::/home/okada2:/bin/false

方法1:
/etc/shellsに

/bin/false

を追加するかまたは

方法2:
/etc/proftpd.confに

# /etc/shells にユーザのデフォルト shell が記述されていない場合にログインを許可するかどうかを決定する。

 RequireValidShell       no

を追加。(Defaultでyes)

Timeout

時間切れに関するパラメータ(/etc/proftpd.conf)

1) ユーザーから通信がまったく無いまま、最大何秒間接続を保つか設定

	defalut(600)
	TimeoutIdle 600

2) 認証に費やされる最大時間、これを超えると自動的にセッションは閉じられる

	defalut(300)
	TimeoutLogin 300 

3) 認証後通信がまったく無いまま、最大何秒間接続を保てるか設定

	defalut(300)  <--600といろんなページであるようだが300と思われる
	TimeoutNoTransfer 300 

4) ProftpとFTPクライアントの間に、通信がまったく無いまま、最大何秒間接続を

       保てるか設定
	defalut(0)  <--無制限
	TimeoutStalled 0 

Windowsで
421 No Transfer Timeout (420 seconds): closing control connection.
の時間は1)と3)の短い時間の値になる。

ユーザのトップディレクトリの指定

/etc/proftpd.confに

guest,wwwadminのグループ以外はホームディレクトリがトップディレクトリになる。
DefaultRoot                     ~  !guest,!wwwadmin

guestグループは~/public_htmlがトップディレクトリになる。
DefaultRoot                     ~/public_html guest

を追加

逆引きを行わない

/etc/proftpd.confに

UseReverseDNS                   off

を追加

identプロトコルを使用しない

ProFTPDがリモートユーザ名を確認するために、identプロトコル(RFC1413)を
使用するためです。このログイン時間を短縮させたい場合は、ProFTPDで、
identプロトコルを使用しないように設定する

IdentLookups                    off

を追加

identd:
サーバとの通信に使用しているコネクションのタイプ(OSタイプやその所有者)を 調べるために使われることが多い。例えばクライアントからメール・サーバにTCPで 接続すると、逆にサーバからこのidentd(auth)プロトコルを使って、その通信が 本当にそのクライアントから発行されているかどうかが確認される。 クライアントからは黙りはだめだが拒否パケットを送ればいいようだ。

参考ページ(WinXPでauthパケットに応答拒否を返す方法)

Vine4.xでは以下の日本語対応パッチは当たっているので設定(proftpd.conf)だけを変更すればよい

ソースからコンパイル

ソースからコンパイルしサーバとクライアントでファイル名の日本語の文字コードを変換し表示する文字コードが変換さてれいるため端末からもうまく表示可能。

http://www.proftpd.org/Download serversからproftpd-1.2.10.tar.gz、 ここhttp://www.hakusan.tsg.ne.jp/tjkawa/software/misc/proftpd-iconv/index.jspからproftpd-1.2.10-iconv.patch.gzをDownlaod.

インストール

$ tar zxvf proftpd-1.2.10.tar.gz
$ gzip -d proftpd-1.2.10-iconv.patch.gz
$ cd proftpd-1.2.10
$ patch -p1 < ../proftpd-1.2.10-iconv.patch
patching file modules/mod_codeconv.c
patching file modules/mod_df.c
patching file modules/mod_ls.c
patching file src/netio.c

patchについて余談

patch -pn < patchファイル  (n->0,1,2,....)
今回の場合カレントディレクトリから下modules/mod_ls.cにpatchを当てる

diff -urN proftpd-1.2.10/modules/mod_codeconv.c proftpd-1.2.10-iconv/modules/mod_codeconv.c
--- proftpd-1.2.10/modules/mod_codeconv.c       1970-01-01 09:00:00.000000000 +0900
+++ proftpd-1.2.10-iconv/modules/mod_codeconv.c 2004-09-25 21:44:05.000000000 +0900

patchファイルの先頭に上記のようにあるので/を一つ取ると同じ場所になる
proftpd-1.2.10/modules/mod_codeconv.c => modules/mod_codeconv.c
となり一致する。それなので -p1となり

$ patch -p1 < ../proftpd-1.2.10-iconv.patch

もし同じことを一つ上のディレクトリで行うときは

ターゲットファイルがproftpd-1.2.10/modules/mod_codeconv.cにあるので /を取る必要がないので、n=0で -p0になる

[src]$ patch -p0 < ./proftpd-1.2.10-iconv.patch
patching file proftpd-1.2.10/modules/mod_codeconv.c
patching file proftpd-1.2.10/modules/mod_df.c
patching file proftpd-1.2.10/modules/mod_ls.c
patching file proftpd-1.2.10/src/netio.c

インストール続き
configure 実行時に --with-modules=mod_codeconv を指定すると,文字コード変換モジュールが有効。
おまけとして --with-modules=mod_codeconv:mod_df を指定すると,ディレクトリ移動時にディスクの空き容量を表示するモジュールも追加。

$ ./configure --with-modules=mod_codeconv --with-modules=mod_codeconv:mod_df 
$ make
$ su
# make install

設定ファイル
/usr/local/etc/proftpd.conf

実行

# /usr/local/sbin/proftpd

確認としてmod_codeconv.cがロードされていることを確認する。

$ /usr/local/sbin/proftpd -l
Compiled-in modules:
  mod_core.c
  mod_xfer.c
  mod_auth_unix.c
  mod_auth_file.c
  mod_auth.c
  mod_ls.c
  mod_log.c
  mod_site.c
  mod_codeconv.c   <==これがあること
  mod_df.c
  mod_cap.c

proftpd.confに以下のように指定する

glibc 2.3.3 以降(vine4.xは2.3.4)

CharsetLocal           EUC-JP-MS
CharsetRemote          CP932

glibc 2.3.3より前

CharsetLocal           EUC-JP
CharsetRemote          SJIS
CharsetLocal           UTF-8
CharsetRemote          CP932

convmv

以前のバージョンで文字コードがsjisでファイルコピーした場合上記のバージョンではファイルの文字コードがeucになりのでファイル名の文字コードを変換する必要がある。
convmvはファイル文字コードを変換するソフトである

http://www.j3e.de/linux/convmv/man/からdownloadする

解凍後は実行形式があるので/usr/local/binにでもコピーする

使用方法

$ convmv -r -f sjis -t euc-jp * --notest 

sjisをeucに変換 -rで下のディレクトリまで再帰的に変換する。

-f:元コード
-t:変換コード
euc = eucjp 
utf8 = utf8 
shift-jis = sjis 

これを付けると変換を始める、付けないとテストだけ


元ページ

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS