ユーザに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)
時間切れに関するパラメータ(/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
を追加
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
以前のバージョンで文字コードが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
これを付けると変換を始める、付けないとテストだけ